blob: 49e8074df61fd714bc410a6f49a62837dd005527 (
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
TODO list for MMF Phonon backend
--------------------------------
The following items are in rough order of priority.
* Work out why video is not visible
* Write a test app which allows the following:
- Dragging of the video widget
- Resizing of the video widget
- Dragging of other widgets on top of / underneath the video widget
These will allow the video widget's moveEvent / resizeEvent implementations to be tested.
* Write / modify a test app which allows audio effects to be enabled / disabled.
- In the simplest case, this could just be a command-line app which allows effects to be specified using flags.
* On-target testing
1. Ensure that Phonon front- and back-end libraries are included in the SIS file.
2. Add musicplayer.exe and mediaplayer.exe to the FluidLauncher
3. Ensure that both apps can be launched, and that we can somehow get trace output from the MMF backend onto the PC for analysis.
* Trace for on-target testing
Do we need to connect up the TRACE_* macros to another logging output (e.g. file / Flogger / UTrace etc)?
* Implement audio effects
* 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).
* Namespace macros
For consistency with other backends, the code should be wrapped in QT_BEGIN_NAMESPACE / QT_END_NAMESPACE macros.
* Fix code layout
My editor was set to use tabs for indenting, rather than the Qt standard of 4 spaces. So we can either:
1. Do "s/\t/ /g" - which will just fix the indenting
2. Use http://astyle.sourceforge.net/:
astyle --indent=spaces=4 --brackets=linux --indent-labels --pad=oper --unpad=paren --one-line=keep-statements --convert-tabs --indent-preprocessor --recursive ./
|