GNOME Bugzilla – Bug 613901
No support for PIX_FMT_YUVA420P, prevents vp6a decoding
Last modified: 2010-10-15 09:50:42 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
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)
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?
It is the same issue. It's some crack Adobe put into Flash, so only FLV files have this issue.
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....
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.