Bug 16985 - Webkit video element does not repaint video with Gtklauncher
Summary: Webkit video element does not repaint video with Gtklauncher
Status: RESOLVED DUPLICATE of bug 24638
Alias: None
Product: WebKit
Classification: Unclassified
Component: WebKitGTK (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC Linux
: P2 Normal
Assignee: Nobody
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-01-23 10:26 PST by Rune B
Modified: 2009-05-11 06:59 PDT (History)
2 users (show)

See Also:


Attachments
Screenshot (218.02 KB, image/png)
2008-01-23 10:32 PST, Rune B
no flags Details
Repaint media player when video sink allows it (5.82 KB, patch)
2009-02-03 14:04 PST, Zan Dobersek
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Rune B 2008-01-23 10:26:09 PST
With latest version of webkit svn checkout I made a test where I built Webkit with ./configure --enable-video --enable.svg --enable-debug

I then made a test html page with the video element included.

Webkit only shows the first frame, but audio continue as normal.

However, if I resize, maximize, minimize etc I trigger a repaint of the video and it jumps to the current frame. Then it only shows that frame until I e.g resize again.

I am using gstreamer as a backend on a Debian Testing box.

I tested this both with a .mov and with an .ogg

html + javascript code I am using

<script>
function playPause() {
  var myVideo = document.getElementsByTagName('video')[0];
  if (myVideo.paused)
    myVideo.play();
  else
    myVideo.pause();
}
</script>

<p><video src=files/movie.mov autoplay></video> <br/><input type=button onclick="playPause()" value="Play/Pause"></p>
Comment 1 Rune B 2008-01-23 10:32:30 PST
Created attachment 18621 [details]
Screenshot

Screenshot of Gtklauncher
Comment 2 Alp Toker 2008-01-23 10:55:20 PST
We need to track this change that was made to WebCore and the Mac platform code:

  http://trac.webkit.org/projects/webkit/changeset/28610

For GStreamer, this probably means adding a call to repaint() in WebCore/platform/graphics/gtk/VideoSinkGStreamer.cpp
Comment 3 Sébastien Roret 2008-07-28 06:38:22 PDT
I tested a timer in MediaPlayerPrivate that fire repaint() every 1/25th of a second, and the video is smooth.
Unfortunately, I have no idea how to ask gstreamer to be notified for each new frame, in order to implement it properly...
Comment 4 Zan Dobersek 2009-02-03 14:04:28 PST
Created attachment 27292 [details]
Repaint media player when video sink allows it

A new signal is introduced in WebKitVideoSink, which is emitted when sink's surface is updated and the repaint is possible. Callback then calls WebCore::MediaPlayerPrivate::repaint and the repaint is done properly.

All in all, it fixes this bug's problem.
Comment 5 Gustavo Noronha (kov) 2009-04-22 19:11:04 PDT
I think I have duplicated some of this work =(. I have landed a very similar patch earlier this year (bug #24638). Sorry Zan =(.

*** This bug has been marked as a duplicate of 24638 ***