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 613901 - No support for PIX_FMT_YUVA420P, prevents vp6a decoding
No support for PIX_FMT_YUVA420P, prevents vp6a decoding
Status: RESOLVED FIXED
Product: GStreamer
Classification: Platform
Component: gst-libav
git master
Other Linux
: Normal normal
: 0.10.12
Assigned To: GStreamer Maintainers
GStreamer Maintainers
Depends on:
Blocks:
 
 
Reported: 2010-03-25 10:21 UTC by om111
Modified: 2010-10-15 09:50 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description om111 2010-03-25 10:21:07 UTC
I was told by totem/GStreamer to file a bug. This is what happens when I run,
$ totem NearMap.flv

(where that file came from http://ss01.boardroomradio.com/files/IPR/NearMap.flv)

(totem-bin:9008): GStreamer-CRITICAL **: gst_pad_alloc_buffer_full: assertion `size >= 0' failed
** Message: Error: Internal GStreamer error: negotiation problem.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
gstffmpegdec.c(1236): gst_ffmpegdec_negotiate (): /GstPlayBin2:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin2:decodebin20/ffdec_vp6a:ffdec_vp6a0:
could not find caps for codec (vp6a), unknown type

I'm running totem 2.28.2 and gstreamer 0.10 or to be more exact (on ubuntu karmic)
package gstreamer0.10-x, version 0.10.25-2ubuntu1.2
package gstreamer0.10-ffmpeg, version 0.10.9-1

I think my gstreamer version supports vp6a to some extent,
$ gst-inspect-0.10 | grep 'vp6'
ffmpeg:  ffdec_vp6: FFmpeg On2 VP6 decoder
ffmpeg:  ffdec_vp6a: FFmpeg On2 VP6 (Flash version, with alpha channel) decoder
ffmpeg:  ffdec_vp6f: FFmpeg On2 VP6 (Flash version) decoder
Comment 1 Edward Hervey 2010-03-25 12:16:08 UTC
The problem is that we can't handle the output pixel format apparently:

gstffmpegcodecmap.c:1686:gst_ffmpeg_pixfmt_to_caps: No caps found for pix_fmt=35 which corresponds to PIX_FMT_YUVA420P,  ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
Comment 2 André Klapper 2010-05-03 12:44:33 UTC
Wondering whether downstream https://bugs.maemo.org/show_bug.cgi?id=10070 is the same issue: How to determine if it is the same pixel format?
Comment 3 Benjamin Otte (Company) 2010-05-03 13:02:08 UTC
It is the same issue. It's some crack Adobe put into Flash, so only FLV files have this issue.
Comment 4 Hayes Raffle 2010-10-11 22:04:38 UTC
If this is "some crack," how come ffplay can play these movies just fine? Here is my debug output from both gstreamer and from ffplay. Gstreamer reliably cannot play videos with vp6a, but ffplay can do it. 


=====
Here is debug output from the vp6a movies: 


$ gst-launch -vvv filesrc location=loop-vp6.flv ! decodebin ! ffmpegcolorspace ! ximagesink
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-flv
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstFLVDemux:flvdemux0.GstPad:sink: caps = video/x-flv
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/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)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:sink: caps = video/x-vp6-flash, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:src: caps = video/x-vp6-flash, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_vp6f:ffdec_vp6f0.GstPad:sink: caps = video/x-vp6-flash, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src1: caps = video/x-raw-yuv, width=(int)160, height=(int)128, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_vp6f:ffdec_vp6f0.GstPad:src: caps = video/x-raw-yuv, width=(int)160, height=(int)128, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:src: caps = video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)160, height=(int)128, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, interlaced=(boolean)false
/GstPipeline:pipeline0/GstFFMpegCsp:ffmpegcsp0.GstPad:sink: caps = video/x-raw-yuv, width=(int)160, height=(int)128, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src1.GstProxyPad:proxypad2: caps = video/x-raw-yuv, width=(int)160, height=(int)128, framerate=(fraction)25/1, format=(fourcc)I420, interlaced=(boolean)false, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstXImageSink:ximagesink0.GstPad:sink: caps = video/x-raw-rgb, bpp=(int)32, depth=(int)24, endianness=(int)4321, red_mask=(int)65280, green_mask=(int)16711680, blue_mask=(int)-16777216, width=(int)160, height=(int)128, framerate=(fraction)25/1, pixel-aspect-ratio=(fraction)1/1, interlaced=(boolean)false
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock


$ ffplay loop-vp6.flv 
FFplay version SVN-r24678, Copyright (c) 2003-2010 the FFmpeg developers
  built on Aug  7 2010 11:15:34 with gcc 4.2.1 (Apple Inc. build 5659)
  configuration: --prefix=/opt/local --enable-nonfree --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --disable-indevs --cc=/usr/bin/gcc-4.2 --arch=x86_64
  libavutil     50.23. 0 / 50.23. 0
  libavcore      0. 2. 0 /  0. 2. 0
  libavcodec    52.84. 2 / 52.84. 2
  libavformat   52.78. 0 / 52.78. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.27. 0 /  1.27. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
2010-10-11 11:16:58.392 ffplay[93222:903] Error loading /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types:  dlopen(/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found.  Did find:
	/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no matching architecture in universal wrapper
ffplay: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit Types.osax" declares no loadable handlers.
2010-10-11 11:16:58.397 ffplay[93222:903] Error loading /Users/raffle/Library/Application Support/SIMBL/Plugins/megazoomer.bundle/Contents/MacOS/megazoomer:  dlopen(/Users/raffle/Library/Application Support/SIMBL/Plugins/megazoomer.bundle/Contents/MacOS/megazoomer, 265): no suitable image found.  Did find:
	/Users/raffle/Library/Application Support/SIMBL/Plugins/megazoomer.bundle/Contents/MacOS/megazoomer: no matching architecture in universal wrapper
[flv @ 0x12209c000] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from 'loop-vp6.flv':
  Metadata:
    duration        : 66
    width           : 160
    height          : 120
    videodatarate   : 80
    framerate       : 10
    videocodecid    : 4
    audiodatarate   : 32
    audiodelay      : 0
    audiocodecid    : 2
    canSeekToEnd    : true
  Duration: 00:01:05.89, start: 0.000000, bitrate: 114 kb/s
    Stream #0.0: Video: vp6f, yuv420p, 160x120, 81 kb/s, 29.97 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, 1 channels, s16, 32 kb/s
  15.70 A-V:  0.064 s:0.0 aq=  319KB vq=  530KB sq=    0B f=0/0   f=0/0 

=====
and here is output from vp6a movies, which are broken in gstreamer:

$ gst-launch -vvv filesrc location=loop-vp6a.flv ! decodebin ! ffmpegcolorspace ! ximagesink
Setting pipeline to PAUSED ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstTypeFindElement:typefind.GstPad:src: caps = video/x-flv
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstFLVDemux:flvdemux0.GstPad:sink: caps = video/x-flv
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue0.GstPad:src: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstMad:mad0.GstPad:sink: caps = audio/mpeg, mpegversion=(int)1, layer=(int)3, parsed=(boolean)true, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0.GstGhostPad:src0: caps = audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)32, depth=(int)32, rate=(int)22050, channels=(int)1
/GstPipeline:pipeline0/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)22050, channels=(int)1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:sink: caps = video/x-vp6-alpha, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/GstQueue:queue1.GstPad:src: caps = video/x-vp6-alpha, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_vp6a:ffdec_vp6a0.GstPad:sink: caps = video/x-vp6-alpha, pixel-aspect-ratio=(fraction)1/1
ERROR: from element /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_vp6a:ffdec_vp6a0: Internal GStreamer error: negotiation problem.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstffmpegdec.c(1267): gst_ffmpegdec_negotiate (): /GstPipeline:pipeline0/GstDecodeBin:decodebin0/ffdec_vp6a:ffdec_vp6a0:
could not find caps for codec (vp6a), unknown type
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...



$ ffplay loop-vp6a.flv 
FFplay version SVN-r24678, Copyright (c) 2003-2010 the FFmpeg developers
  built on Aug  7 2010 11:15:34 with gcc 4.2.1 (Apple Inc. build 5659)
  configuration: --prefix=/opt/local --enable-nonfree --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame --enable-libvorbis --enable-libtheora --enable-libdirac --enable-libschroedinger --enable-libfaac --enable-libxvid --enable-libx264 --enable-libvpx --enable-libspeex --mandir=/opt/local/share/man --enable-shared --enable-pthreads --disable-indevs --cc=/usr/bin/gcc-4.2 --arch=x86_64
  libavutil     50.23. 0 / 50.23. 0
  libavcore      0. 2. 0 /  0. 2. 0
  libavcodec    52.84. 2 / 52.84. 2
  libavformat   52.78. 0 / 52.78. 0
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.27. 0 /  1.27. 0
  libswscale     0.11. 0 /  0.11. 0
  libpostproc   51. 2. 0 / 51. 2. 0
2010-10-11 11:17:30.787 ffplay[93326:903] Error loading /Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types:  dlopen(/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types, 262): no suitable image found.  Did find:
	/Library/ScriptingAdditions/Adobe Unit Types.osax/Contents/MacOS/Adobe Unit Types: no matching architecture in universal wrapper
ffplay: OpenScripting.framework - scripting addition "/Library/ScriptingAdditions/Adobe Unit Types.osax" declares no loadable handlers.
2010-10-11 11:17:30.791 ffplay[93326:903] Error loading /Users/raffle/Library/Application Support/SIMBL/Plugins/megazoomer.bundle/Contents/MacOS/megazoomer:  dlopen(/Users/raffle/Library/Application Support/SIMBL/Plugins/megazoomer.bundle/Contents/MacOS/megazoomer, 265): no suitable image found.  Did find:
	/Users/raffle/Library/Application Support/SIMBL/Plugins/megazoomer.bundle/Contents/MacOS/megazoomer: no matching architecture in universal wrapper
[flv @ 0x12207a400] Estimating duration from bitrate, this may be inaccurate
Input #0, flv, from 'loop-vp6a.flv':
  Metadata:
    duration        : 66
    width           : 160
    height          : 120
    videodatarate   : 80
    framerate       : 10
    videocodecid    : 5
    audiodatarate   : 32
    audiodelay      : 0
    audiocodecid    : 2
    canSeekToEnd    : true
  Duration: 00:01:05.89, start: 0.000000, bitrate: 114 kb/s
    Stream #0.0: Video: vp6a, yuva420p, 160x120, 81 kb/s, 29.97 tbr, 1k tbn, 1k tbc
    Stream #0.1: Audio: mp3, 22050 Hz, 1 channels, s16, 32 kb/s
[ffplay_output @ 0x12188c110] auto-inserting filter 'auto-inserted scaler 0' between the filter 'src' and the filter 'out'
[scale @ 0x1218723b0] w:160 h:128 fmt:yuva420p -> w:160 h:128 fmt:yuv420p flags:0x4
  16.30 A-V: -0.026 s:0.0 aq=  320KB vq=  959KB sq=    0B f=0/0   f=0/0   


any help fixing gstreamer is appreciated....
Comment 5 Sebastian Dröge (slomo) 2010-10-15 09:50:42 UTC
base:

commit d8c1044fbdeee7024bebb7906bf00aae9a8df6e7
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Wed Oct 13 22:51:12 2010 +0200

    ffmpegcolorspace: Add support for A420

commit 8741707430337df39c52421687c743db7276fcbf
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Wed Oct 13 20:45:28 2010 +0200

    video: API: Add A420 video format
    
    This is planar 4:2:0 YUV plus non-subsampled alpha plane.


ffmpeg:

commit 51fe1a04e69e2c097de2503be0bc2cea0355f7e6
Author: Sebastian Dröge <sebastian.droege@collabora.co.uk>
Date:   Wed Oct 13 20:48:19 2010 +0200

    ffmpeg: Add mapping for YUVA420P <-> A420
    
    This is used by VP6a, which is used by Flash.
    
    See bug #613901.