After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 678080 - ffviddec regression in interlacing
ffviddec regression in interlacing
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-plugins-good
git master
Other Linux
: Normal normal
: 0.10.14
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2012-06-14 09:13 UTC by Tvrtko Ursulin
Modified: 2012-06-14 13:33 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Tvrtko Ursulin 2012-06-14 09:13:48 UTC
Code from 0.10 GIT:
gstreamer 11c8ffb6fbd20081c49708cb41e0ec6e2ed09c27
-base 1f6056eafb6c37f4c78ed22b2796a1dcaeb51ee6
-good 50c85392cd0a8824b917790a12d92f237dbd55ce
-bad acf4463f2b9bf7a7cdbac288e50dfb41626fc8b2
-ugly 09284b9862504f73924d88ac00b2c7d08dd7a001
-ffmpeg 9761a6501b518a554fc5e52de8e9acdc4f8ced9a

Plus a patch to -ugly mpeg2dec to set its rank to NONE making -ffmpeg MPEG2
decoder used.

Test pipelines:

gst-launch-0.10 filesrc location=/data/data/media/bbc-news.ts  ! decodebin2 ! queue ! deinterlace mode=1 method=5 ! queue ! xvimagesink

gst-launch-0.10 filesrc location=/data/data/media/bbc-news.ts  ! decodebin2 ! queue ! deinterlace mode=2 method=5 ! queue ! xvimagesink

There is no visible difference between the two test cases - scrolling text and moving parts of the image are left interlaced.

Test stream available on request.
Comment 1 Tvrtko Ursulin 2012-06-14 09:21:24 UTC
Possibly a bug in -ffmpeg if by the below output it looks video is not correctly identified as interlaced? But forcing deinterlace should still work,no?

# gst-launch-0.10 -v filesrc location=/data/data/media/bbc-news.ts  ! decodebin2 ! queue ! deinterlace mode=1 method=3 ! queue ! xvimagesink
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTypeFindElement:typefind.GstPad:src: caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTSDemux:tsdemux0.GstPad:sink: caps = video/mpegts, systemstream=(boolean)true, packetsize=(int)188
Missing element: private/teletext decoder
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:sink0: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:src0: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:sink: caps = video/mpeg, mpegversion=(int)2, systemstream=(boolean)false
0:00:00.054578907 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.054623082 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.054646660 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.055388124 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.055412700 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
Missing element: DVB subtitles decoder
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-buffers = 5
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-time = 0
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-bytes = 2097152
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:sink1: caps = audio/mpeg, mpegversion=(int)1
0:00:00.059156004 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.059380622 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.059677385 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.060012750 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.063054834 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
0:00:00.063100668 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: mpeg_decode_postinit() failure
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)2, rate=(int)48000, channels=(int)2, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, mpegaudioversion=(int)1, layer=(int)2, rate=(int)48000, channels=(int)2, parsed=(boolean)true
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMad:mad0.GstPad:src: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)48000, channels=(int)2
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-buffers = 5
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-time = 0
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0: max-size-bytes = 2097152
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20.GstDecodePad:src0: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20.GstDecodePad:src0.GstProxyPad:proxypad4: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = video/x-raw-yuv, format=(fourcc)I420, width=(int)720, height=(int)576, pixel-aspect-ratio=(fraction)64/45, interlaced=(boolean)false, framerate=(fraction)0/1
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
Redistribute latency...
0:00:29.617592498 32410 0x7fba240011c0 ERROR                 ffmpeg :0:: ac-tex damaged at 13 20
0:00:29.619771194 32410 0x7fba3c024300 ERROR                 ffmpeg :0:: Warning MVs not available
Got EOS from element "pipeline0".
Execution ended after 39660805566 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
/GstPipeline:pipeline0/GstXvImageSink:xvimagesink0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDeinterlace:deinterlace0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20.GstDecodePad:src0: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMad:mad0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMad:mad0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMpegAudioParse:mpegaudioparse0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:src: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/ffdec_mpeg2video:ffdec_mpeg2video0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:sink1: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:src1: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:sink0: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstMultiQueue:multiqueue0.GstPad:src0: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTSDemux:tsdemux0.GstPad:audio_1389: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTSDemux:tsdemux0.GstPad:private_138d: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTSDemux:tsdemux0.GstPad:video_1388: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTSDemux:tsdemux0.GstPad:private_138b: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTSDemux:tsdemux0.GstPad:sink: caps = NULL
/GstPipeline:pipeline0/GstDecodeBin2:decodebin20/GstTypeFindElement:typefind.GstPad:src: caps = NULL
Setting pipeline to NULL ...
Freeing pipeline ...
Comment 2 Tvrtko Ursulin 2012-06-14 12:59:37 UTC
I think what we have here is bug 656155 being re-introduced by removing the code which fixed it in -ffmpeg commit bdf7ebf411a0aad64c2ba8c4219e97a291bf5a45.
Comment 3 Edward Hervey 2012-06-14 13:12:23 UTC
So yes, there was a regression when porting the ffmpeg video decoder to the base classes.

That being said, you really shouldn't be using that decoder for mpeg2.
Comment 4 Edward Hervey 2012-06-14 13:14:50 UTC
commit ce7f65f752dfff124c672a418bbd1728df2fd137
Author: Edward Hervey <edward.hervey@collabora.co.uk>
Date:   Thu Jun 14 15:13:31 2012 +0200

    ffmpegviddec: Properly update the interlacing
    
    Fixes #678080
Comment 5 Tvrtko Ursulin 2012-06-14 13:33:54 UTC
Fix confirmed.

What is wrong with this decoder? It does multi-threading which is a very useful feature and seems to handle all material we threw at it just fine.