GNOME Bugzilla – Bug 599679
Vertical green line appears when window is off top of screen
Last modified: 2010-04-20 20:47:25 UTC
Description of the problem: When using gstreamer to play one particular video a vertical green line will appear if the window is dragged off the top of the screen. Steps to reproduce: 1. Download http://launchpadlibrarian.net/34370402/dur.flv . 2. Run gst-launch-0.10 playbin uri=file:///$PWD/dur.flv . 3. While the video is playing quickly drag the window so that it is partially of the top of the screen. Expected result: Video to keep playing with no artefacts / green lines. Actual result: Colours go strange and a green line appears through the video. How reproducible is the problem? It is reproducible every time. Version information: Ubuntu 9.10 (karmic) EeePC 900 00:02.1 Display controller: Intel Corporation Mobile 915GM/GMS/910GML Express Graphics Controller (rev 04) gstreamer0.10-alsa 0.10.25-2ubuntu1 gstreamer0.10-ffmpeg 0.10.9-1 gstreamer0.10-nice 0.0.9-2 gstreamer0.10-plugins-bad 0.10.14-4ubuntu1 gstreamer0.10-plugins-base 0.10.25-2ubuntu1 gstreamer0.10-plugins-base-apps 0.10.25-2ubuntu1 gstreamer0.10-plugins-good 0.10.16-1ubuntu3 gstreamer0.10-plugins-ugly 0.10.12-1 gstreamer0.10-pulseaudio 0.10.16-1ubuntu3 gstreamer0.10-tools 0.10.25-2 gstreamer0.10-x 0.10.25-2ubuntu1 libgstreamer-plugins-base0.10-0 0.10.25-2ubuntu1 libgstreamer0.10-0 0.10.25-2 gstreamer0.10-alsa 0.10.25-2ubuntu1 gstreamer0.10-ffmpeg 0.10.9-1 gstreamer0.10-nice 0.0.9-2 gstreamer0.10-plugins-bad 0.10.14-4ubuntu1 gstreamer0.10-plugins-base 0.10.25-2ubuntu1 gstreamer0.10-plugins-base-apps 0.10.25-2ubuntu1 gstreamer0.10-plugins-good 0.10.16-1ubuntu3 gstreamer0.10-plugins-ugly 0.10.12-1 gstreamer0.10-pulseaudio 0.10.16-1ubuntu3 gstreamer0.10-tools 0.10.25-2 gstreamer0.10-x 0.10.25-2ubuntu1 libgstreamer-plugins-base0.10-0 0.10.25-2ubuntu1 libgstreamer0.10-0 0.10.25-2 libdrm-intel1 2.4.14-1ubuntu1 xserver-xorg-video-intel 2:2.9.0-1ubuntu2 Additional information: This issue does not occur if a composited desktop is used (i.e. compiz is running) or if xine is used to play the video. (Originally filed on https://bugs.launchpad.net/ubuntu/+source/gstreamer0.10/+bug/460677 )
This is likely to be a driver bug, especially since it doesn't occur with a composited desktop. Also, it works fine here with a NVidia gfx card. It is likely that you don't see it with xine simple because xine chooses a different output format to deliver the video to the graphics card, and the bug is only present in the handling of the format GStreamer is choosing. Could you attach the output from adding '-v' to the command-line above, so we can see which format is being used? gst-launch-0.10 -v playbin uri=file:///$PWD/dur.flv
I think you could be right about it being a graphics card bug. I also see the issue on Slackware 13.0 on a desktop machine with an intel G45 (which is also using the intel Xorg driver). If so, where should I file this bug? Freedesktop's bugzilla? Here's the requested gst-launch output. Setting pipeline to PAUSED ... /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-flv /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstFLVDemux:flvdemux0.GstPad:sink: caps = video/x-flv Pipeline is PREROLLING ... /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = video/x-flash-video, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = video/x-flash-video, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/ffdec_flv:ffdec_flv0.GstPad:sink: caps = video/x-flash-video, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/ffdec_flv:ffdec_flv0.GstPad:src: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstStreamSelector:selector_video_src0.GstPlaybinSelectorPad:sink0: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src0.GstProxyPad:proxypad1: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstStreamSelector:selector_video_src0.GstPad:src: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstQueue:preroll_video_src0.GstPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1: active-pad = NULL /GstPlayBin:playbin0/GstStreamSelector:selector_video_src0: active-pad = (GstPlaybinSelectorPad) sink0 /GstPlayBin:playbin0/GstQueue:preroll_video_src0.GstPad:src: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue2.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue2.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1.GstPlaybinSelectorPad:sink0: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src1.GstProxyPad:proxypad2: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstQueue:preroll_audio_src1.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstQueue:preroll_audio_src1.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAudioConvert:aconv.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAudioConvert:aconv.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin.GstGhostPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin.GstGhostPad:sink.GstProxyPad:proxypad4: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAudioResample:aresample.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAudioResample:aresample.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstVolume:volume.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstVolume:volume.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse.GstPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink.GstGhostPad:sink: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink.GstGhostPad:sink.GstProxyPad:proxypad3: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)44100, channels=(int)2 /GstPlayBin:playbin0/GstBin:vbin/GstIdentity:id.GstPad:src: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstIdentity:id.GstPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin.GstGhostPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin.GstGhostPad:sink.GstProxyPad:proxypad6: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstFFMpegCsp:vconv.GstPad:src: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstFFMpegCsp:vconv.GstPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstVideoScale:vscale.GstPad:src: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstVideoScale:vscale.GstPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage.GstPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink.GstGhostPad:sink: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink.GstGhostPad:sink.GstProxyPad:proxypad5: caps = video/x-raw-yuv, width=(int)1156, height=(int)746, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1 Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstPulseSinkClock /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse: volume = 1.000000 /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse: mute = FALSE Got EOS from element "playbin0". Execution ended after 5484470018 ns. Setting pipeline to PAUSED ... Setting pipeline to READY ... /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink/GstXvImageSink:videosink-actual-sink-xvimage.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstAutoVideoSink:videosink.GstGhostPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstVideoScale:vscale.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstVideoScale:vscale.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstFFMpegCsp:vconv.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstFFMpegCsp:vconv.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstIdentity:id.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstBin:vbin/GstIdentity:id.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:vbin.GstGhostPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink/GstPulseSink:audiosink-actual-sink-pulse.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstAutoAudioSink:audiosink.GstGhostPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstVolume:volume.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstVolume:volume.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstAudioResample:aresample.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstAudioResample:aresample.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstAudioConvert:aconv.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstBin:abin/GstAudioConvert:aconv.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstBin:abin.GstGhostPad:sink: caps = NULL /GstPlayBin:playbin0/GstQueue:preroll_video_src0.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstQueue:preroll_video_src0.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstQueue:preroll_audio_src1.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstQueue:preroll_audio_src1.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstStreamSelector:selector_video_src0.GstPlaybinSelectorPad:sink0: caps = NULL /GstPlayBin:playbin0/GstStreamSelector:selector_video_src0.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1.GstPlaybinSelectorPad:sink0: caps = NULL /GstPlayBin:playbin0/GstStreamSelector:selector_audio_src1.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue2.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue2.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/ffdec_flv:ffdec_flv0.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/ffdec_flv:ffdec_flv0.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstFLVDemux:flvdemux0.GstPad:audio: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstFLVDemux:flvdemux0.GstPad:video: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstFLVDemux:flvdemux0.GstPad:sink: caps = NULL /GstPlayBin:playbin0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = NULL Setting pipeline to NULL ... Freeing pipeline ...
Based on that output, this command should also give you the same result: gst-launch-0.10 videotestsrc ! 'video/x-raw-yuv,width=(int)1156,height=(int)746,framerate=(fraction)25/1, format=(fourcc)I420,interlaced=(boolean)false,pixel-aspect-ratio=(fraction)1/1' ! xvimagesink I suspect it's the unusual width or height that is hitting a bug in the I420 clipping code in the X driver.
It does indeed. I've now filed it on http://bugs.freedesktop.org/show_bug.cgi?id=24767 .
Let's close this bug as INVALID as it appears to be an Intel driver bug.