Priority: P2: Important
Affects Version/s: 1.1.3, 1.2.0
Fix Version/s: None
Environment:Windows 7. With media foundation disabled to be sure we are using directshow.
Using splitter.ax from Haali Media Splitter.
The implementation of DirectShow into QtMultimediaKit's player seems to be incomplete. We need to play mp4 over http (progressive download), but the player crashes.
After some investigations we discovered that the QT implementation of DirectShow contains some hard-coded parts, especially in the DirectShow graph building functions.
Here's the GIT link to this file : http://qt.gitorious.org/qt-mobility/qt-mobility/blobs/master/plugins/multimedia/directshow/player/directshowplayerservice.cpp
At line 276 in doSetUrlSource() function, there's an hard-coded CLSID for a wma reader filter which is later added to the graph at line 303. After adding some log we found that the call of AddFilter() is unsuccessful.
As a result the function AddSourceFilter is called and should result to dynamically feed the graph this right filters. But it fails with an unknown error code.
Each of our videos can be played by Media Player Classic in the same environment without any problem. Assuming that MPC uses only directshow available filters, QtMobility Player should be able to do so.
More info :
- QML log : "ERROR 1 : failed to load Source"
- Our test video is AAC/H.264, bitrate : 1 467 Kbps
ProcessExplorer analysis :
- MPC works fine with
- quartz.dll (Source Filter URL/Async.)
- msmpeg2vdec.dll (Microsoft DTV/DVD decoder)