blob: a2b1865e4211b51edce8560b76679fc9c624e605 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
TODO list for MMF Phonon backend
--------------------------------
The following items are in rough order of priority.
* Activating full-screen video playback in qmediaplayer causes the app to crash
This may be symptomatic of more general problems with re-sizing / re-positioning video while playing.
* Implement audio effects
* Support for playing "file:" URLs
* Support for network streaming playback
The main question here is how best to implement the MIME type detection for streams. The OpenUrlL functions only take a URL, whereas the corresponding OpenFileL functions have overloads for filenames and for open RFile handles. This is because files support random access whereas streams do not. A naieve approach to MIME type detection for streams is as follows; is there a more efficient approach?
1. Open network connection
2. Download header
3. Detect MIME type and create AbstractMediaPlayer instance
4. Close network connection
5. Pass URL to MMF client utility, which will then re-open the stream
An alternative approach is to always create a VideoPlayer when passed an RTSP URL, and then modify VideoPlayer::hasVideo to check CVideoPlayerUtility::VideoMimeTypeL before returning. This way, we would always use CVideoPlayerUtility for RTSP streaming, whether the source is audio or video. Well-behaved client apps, however, should check MediaObject::hasVideo before creating the UI - and therefore the VideoWidget would only be connected if the source is actually a video stream.
* Performance analysis
Compare video frame rate obtained using default S60 media player and Qt demo apps
* Implement MMF::Backend::disconnectNodes
This should probably be left for now, particularly until audio effects have been implemented. This is because the node connection mechanism may need to be refactored slightly once we start building up longer graphs (e.g. MediaObject -> Effect -> Effect -> AudioOutput).
* Metadata is not implemented.
|