Bug 39464 - [Qt] QtWebKit::WebCore Win32 does not load HTML5 <video> for Phonon DS9 backend
Summary: [Qt] QtWebKit::WebCore Win32 does not load HTML5 <video> for Phonon DS9 backend
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Windows XP
: P5 Normal
Assignee: Nobody
URL: http://chaos.troll.no/~tavestbo/webki...
Keywords: Qt, QtTriaged
Depends on:
Blocks:
 
Reported: 2010-05-20 18:26 PDT by Nikola Trajic
Modified: 2014-01-28 20:43 PST (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nikola Trajic 2010-05-20 18:26:35 PDT
Loading embedded HTML5 video source by utilizing QtWebKit with enabled Phonon and Phonon-DS9 backend on Windows XP does not work.
Use http://chaos.troll.no/~tavestbo/webkit/mediaelement/ for testing the browser stack.

First  issue: deleting and recreating the player (when engine is assigned for the first time,based on the codec/con.type or installed_engine_list, it should not be recreated? Please verify validity of the below patch. 

Second issue: loading the video resource does not retrieve all the media content from the web server. On browser request HTTP GET /~tavestbo/webkit/mediaelement/transformers640.ogg - the web server is responding with one HTTP 200 OK,  instead of successive HTTP/1.1. 206 Partial Content retreivals untill all is retrieved, then HTTP 200 OK.

Qt browser: The test page http://chaos.troll.no/~tavestbo/webkit/mediaelement/  starts to load the transformers.ogg and gets HTTP/1.1 200 OK from the web server, video widget is constructed in the web page along with controls of playing/stop – with no video content loaded.
Comparing with Google's Chrome browser, it's evident that series of partial  downloads are not performed.
 
Expected result should be NETWORKSTATE == LOADING, READYSTATE=HAVE_ENOUGH_DATA. (PC Chrome Browser)
Instead, Qt browser (after talking to HTMLMediaElement,  and MediaObject and MediaPlayer at platform/graphics layer)
is starting with NETWORKSTATE==LOADING and READYSTATE==HAVE_METADATA on loadmetadata, and will migrate to READYSTATE== HAVE_NOTHING on loadstart event.

NOTE: MS Visual Studio 9 (2008), Windows SDK 6.1, DirectX 9.0c, Qt configured for multimedia, ssl, webkit, phonon, and phonon-backend. Support for codecs: ffdshaw, xiph.org\dshow for vorbis/ogg.    



--- src\3rdparty\webkit\WebCore\platform\graphics\orig.MediaPlayer.cpp        Tue May 18 15:11:36 2010
+++ src\3rdparty\webkit\WebCore\platform\graphics\MediaPlayer.cpp              Tue May 18 14:35:57 2010
@@ -242,7 +242,7 @@
     // don't delete and recreate the player unless it comes from a different engine
     if (engine && m_currentMediaEngine != engine) {
         m_currentMediaEngine = engine;
-        m_private.clear();
+//        m_private.clear();
         m_private.set(engine->constructor(this));
 #if ENABLE(PLUGIN_PROXY_FOR_VIDEO)
         m_private->setMediaPlayerProxy(m_playerProxy);
)
Comment 1 Nikola Trajic 2010-06-01 13:49:57 PDT
Qt\4.6.2\src\network\access new HTML code needs to be ported/integrated into 
Qt\4.6.2\src\3rdparty\webkit\WebCore\platform\network and
C:\Qt\4.6.2\src\3rdparty\webkit\WebCore\platform\network\qt. 
Chunked transfer as explained in RFC2616 and implemented in: Qt\4.6.2\src\network\access\QHTTPNetworkRequest*                                                                                                                  /QHTTPNetworkReply*                                                                                                           /QHTTPNetworkConn*                                                                                          /QNetworkAccess(Http)Backend*                                                                                          /QNetworkAccessManager*
requires intergration into C:\Qt\4.6.2\src\3rdparty\webkit\WebCore\platform\network\qt
Comment 2 Benjamin Poulain 2011-01-30 08:25:18 PST
Please follow http://trac.webkit.org/wiki/QtWebKitBugs when reporing bugs here.