[FFmpeg-trac] #5249(avcodec:new): VP9 RGB completely broken

FFmpeg trac at avcodec.org
Thu Feb 18 20:36:18 CET 2016


#5249: VP9 RGB completely broken
--------------------------------------+---------------------------------
               Reporter:  Cigaes      |                  Owner:
                   Type:  defect      |                 Status:  new
               Priority:  normal      |              Component:  avcodec
                Version:  git-master  |               Keywords:
             Blocked By:              |               Blocking:
Reproduced by developer:  0           |  Analyzed by developer:  0
--------------------------------------+---------------------------------
 Encoding/decoding VP9 in RGB colorspace is completely broken. I could not
 find a reference RGB file to find out if the problem lies with the encoder
 or decoder. A few test cases:

 {{{
 ./ffmpeg_g -lavfi testsrc2=d=10 -c libvpx-vp9 -colorspace rgb -y
 /tmp/test_rgb.webm
 }}}
 [ full console output: E1 ]
 → works (printing "yuv420p"), but Iceweasel (44.0-1) says "Video can't be
 played because the file is corrupt".

 {{{
 ./ffmpeg_g -i /tmp/test_rgb.webm -f null -
 }}}
 [ full console output: D1 ]
 → fails to decode anything.

 Now, with an extra option, it works a little better:

 {{{
 ./ffmpeg_g -lavfi testsrc2=d=10 -c libvpx-vp9 -colorspace rgb -pix_fmt
 yuv444p -y /tmp/test_rgb2.webm
 }}}
 [ full console output: E2 ]
 → works, video plays in Iceweasel with chroma subsampling obviously wrong.

 {{{
 ./ffmpeg_g -i /tmp/test_rgb2.webm -y /tmp/test_rgb2.nut
 }}}
 [ full console output: D2 ]
 → works, but the colors in the resulting MPEG4/NUT file are wrong.

 {{{
 ./ffmpeg_g -i /tmp/test_rgb2.webm -y /tmp/test_rgb_%02d.png
 }}}
 [ trimmed console output: D3 ]
 → spews a boatload of error messages, colors are wrong, images are
 corrupted after the first few ones.

 {{{
 ./ffmpeg_g -threads 1 -i /tmp/test_rgb2.webm -y /tmp/test_rgb_%02d.png
 }}}
 [ full console output: D4 ]
 → works (old threading bug with PNG?) but colors are wrong.

 {{{
 ./ffmpeg_g -c libvpx-vp9 -i /tmp/test_rgb2.webm -y /tmp/test_rgb2.nut
 }}}
 [ full console output: D5 ]
 → works, colors are wrong.

 ----

 E1:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 [libvpx-vp9 @ 0x1948200] v1.5.0
 Output #0, webm, to '/tmp/test_rgb.webm':
   Metadata:
     encoder         : Lavf57.25.100
     Stream #0:0: Video: vp9 (libvpx-vp9), yuv420p(gbr/unknown/unknown),
 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 200 kb/s, 25 fps, 1k tbn, 25 tbc
 (default)
     Metadata:
       encoder         : Lavc57.24.103 libvpx-vp9
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
 Stream mapping:
   testsrc2 -> Stream #0:0 (libvpx-vp9)
 Press [q] to stop, [?] for help
 frame=  250 fps= 39 q=0.0 Lsize=     179kB time=00:00:10.00 bitrate=
 146.4kbits/s speed=1.55x
 video:176kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 1.231651%
 }}}

 ----

 D1:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 [vp9 @ 0x1fbd480] RGB not supported in profile 0
 [vp9 @ 0x1fbd480] Not all references are available
     Last message repeated 123 times
 [matroska,webm @ 0x1fbb580] decoding for stream 0 failed
 [matroska,webm @ 0x1fbb580] Could not find codec parameters for stream 0
 (Video: vp9 (Profile 0), none(pc, gbr/unknown/unknown), 320x240):
 unspecified pixel format
 Consider increasing the value for the 'analyzeduration' and 'probesize'
 options
 /tmp/test_rgb.webm: could not find codec parameters
 Input #0, matroska,webm, from '/tmp/test_rgb.webm':
   Metadata:
     encoder         : Lavf57.25.100
   Duration: 00:00:10.00, start: 0.000000, bitrate: 146 kb/s
     Stream #0:0: Video: vp9 (Profile 0), none(pc, gbr/unknown/unknown),
 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
 [buffer @ 0x1fbdf00] Unable to parse option value "-1" as pixel format
     Last message repeated 1 times
 [buffer @ 0x1fbdf00] Error setting option pix_fmt to value -1.
 [graph 0 input from stream 0:0 @ 0x1fe8940] Error applying options to the
 filter.
 Error opening filters!
 }}}

 ----

 E2:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 [libvpx-vp9 @ 0x13bf540] v1.5.0
 Output #0, webm, to '/tmp/test_rgb2.webm':
   Metadata:
     encoder         : Lavf57.25.100
     Stream #0:0: Video: vp9 (libvpx-vp9), yuv444p(gbr/unknown/unknown),
 320x240 [SAR 1:1 DAR 4:3], q=-1--1, 200 kb/s, 25 fps, 1k tbn, 25 tbc
 (default)
     Metadata:
       encoder         : Lavc57.24.103 libvpx-vp9
     Side data:
       cpb: bitrate max/min/avg: 0/0/0 buffer size: 0 vbv_delay: -1
 Stream mapping:
   testsrc2 -> Stream #0:0 (libvpx-vp9)
 Press [q] to stop, [?] for help
 frame=  250 fps= 29 q=0.0 Lsize=     228kB time=00:00:10.00 bitrate=
 186.8kbits/s speed=1.18x
 video:226kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.962366%
 }}}

 ----

 D2:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, matroska,webm, from '/tmp/test_rgb2.webm':
   Metadata:
     encoder         : Lavf57.25.100
   Duration: 00:00:10.00, start: 0.000000, bitrate: 186 kb/s
     Stream #0:0: Video: vp9 (Profile 1), gbrp(pc, gbr/unknown/unknown),
 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
 Output #0, nut, to '/tmp/test_rgb2.nut':
   Metadata:
     encoder         : Lavf57.25.100
     Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 320x240 [SAR
 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 51200 tbn, 25 tbc (default)
     Metadata:
       encoder         : Lavc57.24.103 mpeg4
     Side data:
       cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
 Stream mapping:
   Stream #0:0 -> #0:0 (vp9 (native) -> mpeg4 (native))
 Press [q] to stop, [?] for help
 frame=  250 fps=0.0 q=10.0 Lsize=     347kB time=00:00:10.00 bitrate=
 284.3kbits/s speed=35.7x
 video:346kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.412033%
 }}}

 ----

 D3:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, matroska,webm, from '/tmp/test_rgb2.webm':
   Metadata:
     encoder         : Lavf57.25.100
   Duration: 00:00:10.00, start: 0.000000, bitrate: 186 kb/s
     Stream #0:0: Video: vp9 (Profile 1), gbrp(pc, gbr/unknown/unknown),
 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
 Output #0, image2, to '/tmp/test_rgb_%02d.png':
   Metadata:
     encoder         : Lavf57.25.100
     Stream #0:0: Video: png, rgb24, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200
 kb/s, 25 fps, 25 tbn, 25 tbc (default)
     Metadata:
       encoder         : Lavc57.24.103 png
 Stream mapping:
   Stream #0:0 -> #0:0 (vp9 (native) -> png (native))
 Press [q] to stop, [?] for help
 [vp9 @ 0x220fbe0] Failed to initialize decoder for 320x240 @ 82
 [vp9 @ 0x222a600] Not all references are available
 [vp9 @ 0x2245020] Not all references are available
 [vp9 @ 0x225fa40] Not all references are available
 [vp9 @ 0x227a460] Not all references are available
 [vp9 @ 0x2294e80] Not all references are available
 [vp9 @ 0x21d74a0] Not all references are available
 Error while decoding stream #0:0: Cannot allocate memory
 Error while decoding stream #0:0: Invalid data found when processing input
 [vp9 @ 0x220fbe0] Failed to initialize decoder for 320x240 @ 82
 Error while decoding stream #0:0: Invalid data found when processing input
 [vp9 @ 0x222a600] Not all references are available
 Error while decoding stream #0:0: Invalid data found when processing input
 [vp9 @ 0x2245020] Not all references are available
 <snip>
 Error while decoding stream #0:0: Cannot allocate memory
 Error while decoding stream #0:0: Invalid data found when processing input
 [vp9 @ 0x220fbe0] Failed to initialize decoder for 320x240 @ 82
 <snip>
 [vp9 @ 0x2294e80] Not all references are available
 [vp9 @ 0x21d74a0] Not all references are available
 Error while decoding stream #0:0: Cannot allocate memory
 Error while decoding stream #0:0: Invalid data found when processing input
 [vp9 @ 0x220fbe0] Failed to initialize decoder for 320x240 @ 82
 Error while decoding stream #0:0: Invalid data found when processing input
 frame=  249 fps=0.0 q=-0.0 Lsize=N/A time=00:00:09.96 bitrate=N/A dup=192
 drop=0 speed=37.4x
 video:19429kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 Conversion failed!
 }}}

 ----

 D4:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, matroska,webm, from '/tmp/test_rgb2.webm':
   Metadata:
     encoder         : Lavf57.25.100
   Duration: 00:00:10.00, start: 0.000000, bitrate: 186 kb/s
     Stream #0:0: Video: vp9 (Profile 1), gbrp(pc, gbr/unknown/unknown),
 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
 Output #0, image2, to '/tmp/test_rgb_%02d.png':
   Metadata:
     encoder         : Lavf57.25.100
     Stream #0:0: Video: png, rgb24, 320x240 [SAR 1:1 DAR 4:3], q=2-31, 200
 kb/s, 25 fps, 25 tbn, 25 tbc (default)
     Metadata:
       encoder         : Lavc57.24.103 png
 Stream mapping:
   Stream #0:0 -> #0:0 (vp9 (native) -> png (native))
 Press [q] to stop, [?] for help
 frame=  250 fps=0.0 q=-0.0 Lsize=N/A time=00:00:10.00 bitrate=N/A
 speed=46.3x
 video:7999kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

 ----

 D5:
 {{{
 ffmpeg version N-78596-g8fdee3e Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 5.3.1 (Debian 5.3.1-8) 20160205
   configuration: --enable-shared --disable-static --enable-gpl --enable-
 libx264 --enable-libopus --enable-libass --enable-libfreetype --enable-
 libvpx --enable-opengl --assert-level=2
   libavutil      55. 18.100 / 55. 18.100
   libavcodec     57. 24.103 / 57. 24.103
   libavformat    57. 25.100 / 57. 25.100
   libavdevice    57.  0.101 / 57.  0.101
   libavfilter     6. 34.100 /  6. 34.100
   libswscale      4.  0.100 /  4.  0.100
   libswresample   2.  0.101 /  2.  0.101
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, matroska,webm, from '/tmp/test_rgb2.webm':
   Metadata:
     encoder         : Lavf57.25.100
   Duration: 00:00:10.00, start: 0.000000, bitrate: 186 kb/s
     Stream #0:0: Video: vp9 (Profile 1), gbrp(pc, gbr/unknown/unknown),
 320x240, SAR 1:1 DAR 4:3, 25 fps, 25 tbr, 1k tbn, 1k tbc (default)
 [libvpx-vp9 @ 0x2435880] v1.5.0
 Output #0, nut, to '/tmp/test_rgb2.nut':
   Metadata:
     encoder         : Lavf57.25.100
     Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 320x240 [SAR
 1:1 DAR 4:3], q=2-31, 200 kb/s, 25 fps, 51200 tbn, 25 tbc (default)
     Metadata:
       encoder         : Lavc57.24.103 mpeg4
     Side data:
       cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: -1
 Stream mapping:
   Stream #0:0 -> #0:0 (vp9 (libvpx-vp9) -> mpeg4 (native))
 Press [q] to stop, [?] for help
 frame=  250 fps=0.0 q=10.0 Lsize=     347kB time=00:00:10.00 bitrate=
 284.3kbits/s speed=18.3x
 video:346kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.412033%
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/5249>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list