[FFmpeg-trac] #8608(avformat:closed): Fix #7784 Breaks Vorbis Album Art Extraction

FFmpeg trac at avcodec.org
Sat Apr 11 14:00:59 EEST 2020


#8608: Fix #7784 Breaks Vorbis Album Art Extraction
-------------------------------------+-------------------------------------
             Reporter:  nanoman      |                    Owner:
                 Type:  defect       |                   Status:  closed
             Priority:  important    |                Component:  avformat
              Version:  git-master   |               Resolution:  fixed
             Keywords:  ogg vorbis   |               Blocked By:
  regression                         |
             Blocking:               |  Reproduced by developer:  1
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Changes (by cehoyos):

 * status:  new => closed
 * priority:  normal => important
 * version:  4.2 => git-master
 * keywords:  vorbis, ogg, artwork, metadata => ogg vorbis regression
 * resolution:   => fixed
 * reproduced:  0 => 1


Old description:

> Summary of the bug:
>
> The latest release of FFmpeg (4.2) breaks album art extraction for ogg
> vorbis files (it worked in 4.1.3). I was able to confirm this on the most
> recent development branch of FFmpeg, and I was able to fix it by undoing
> the offending commit here and re-compiling:
>
> https://github.com/FFmpeg/FFmpeg/commit/8d3630c5402fdda2889fe4f74f7dcdd50ebca654
>
> I have attached a vorbis file from Wikipedia. I put a public domain photo
> into the vorbis metadata_block_picture using mutagen.
>
> How to reproduce the error (using the latest ffmpeg release, 4.2.2):
> {{{
> % ffmpeg -i Example.ogg /tmp/foo.jpg
> ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
>   built with gcc 9 (GCC)
>   configuration: --prefix=/usr --bindir=/usr/bin
> --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg
> --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man
> --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Werror=format-security
> -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-
> protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-
> hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64
> -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection
> -fcf-protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now
> -specs=/usr/lib/rpm/redhat/redhat-hardened-ld ' --extra-cflags=' '
> --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-
> amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-
> fontconfig --enable-frei0r --enable-gcrypt --enable-gnutls --enable-
> ladspa --enable-libaom --enable-libdav1d --enable-libass --enable-
> libbluray --enable-libcdio --enable-libdrm --enable-libjack --enable-
> libfreetype --enable-libfribidi --enable-libgsm --enable-libmp3lame
> --enable-nvenc --enable-openal --enable-opencl --enable-opengl --enable-
> libopenjpeg --enable-libopus --enable-libpulse --enable-librsvg --enable-
> libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-
> libvorbis --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-
> libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-
> libzimg --enable-libzvbi --enable-avfilter --enable-avresample --enable-
> postproc --enable-pthreads --disable-static --enable-shared --enable-gpl
> --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-libmfx
> --enable-runtime-cpudetect
>   libavutil      56. 31.100 / 56. 31.100
>   libavcodec     58. 54.100 / 58. 54.100
>   libavformat    58. 29.100 / 58. 29.100
>   libavdevice    58.  8.100 / 58.  8.100
>   libavfilter     7. 57.100 /  7. 57.100
>   libavresample   4.  0.  0 /  4.  0.  0
>   libswscale      5.  5.100 /  5.  5.100
>   libswresample   3.  5.100 /  3.  5.100
>   libpostproc    55.  5.100 / 55.  5.100
> [ogg @ 0x55f46dfa9a80] 1129 bytes of comment header remain
> Input #0, ogg, from 'Example.ogg':
>   Duration: 00:00:06.10, start: 0.000000, bitrate: 226 kb/s
>     Stream #0:0: Audio: vorbis, 44100 Hz, stereo, fltp, 160 kb/s
>     Metadata:
>       title           : Test
>       metadata_block_picture:
> AAAAAwAAAAppbWFnZS9qcGVnAAAAC0Zyb250IENvdmVyAAAAAAAAAAAAAAAAAAAAAAAAwMT/2P/gABBKRklGAAEBAAABAAEAAP/hAF5FeGlmAABJSSoACAAAAAEAmIICADwAAAAaAAAAAAAAAFB1YmxpYyBEb21haW4sIGZyb20gdGhlIEJyaXRpc2ggTGlicmFyeSdzIGNvbGxlY3Rpb25zLCAyMDEzAP/hCyhodHRwOi8vbnMuYWRvYmUuY29
> Output #0, image2, to '/tmp/foo.jpg':
> Output file #0 does not contain any stream
>
> }}}
>
> Upon undoing the offending commit, it works fine:
>
> {{{
> % ffmpeg -i Example.ogg /tmp/foo.jpg
> ffmpeg version N-97225-g081ef58619 Copyright (c) 2000-2020 the FFmpeg
> developers
>   built with gcc 9 (GCC)
>   configuration:
>   libavutil      56. 42.102 / 56. 42.102
>   libavcodec     58. 77.101 / 58. 77.101
>   libavformat    58. 42.100 / 58. 42.100
>   libavdevice    58.  9.103 / 58.  9.103
>   libavfilter     7. 77.101 /  7. 77.101
>   libswscale      5.  6.101 /  5.  6.101
>   libswresample   3.  6.100 /  3.  6.100
> [ogg @ 0x32406c0] 1129 bytes of comment header remain
> Input #0, ogg, from 'Example.ogg':
>   Duration: 00:00:06.10, start: 0.000000, bitrate: 226 kb/s
>     Stream #0:0: Audio: vorbis, 44100 Hz, stereo, fltp, 160 kb/s
>     Metadata:
>       TITLE           : Test
>     Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc,
> bt470bg/unknown/unknown), 313x437 [SAR 1:1 DAR 313:437], 90k tbr, 90k
> tbn, 90k tbc (attached pic)
>     Metadata:
>       comment         : Cover (front)
>       title           : Front Cover
> Stream mapping:
>   Stream #0:1 -> #0:0 (mjpeg (native) -> mjpeg (native))
> Press [q] to stop, [?] for help
> [image2 @ 0x32574c0] Frame rate very high for a muxer not efficiently
> supporting it.
> Please consider specifying a lower framerate, a different muxer or -vsync
> 2
> Output #0, image2, to '/tmp/foo.jpg':
>   Metadata:
>     encoder         : Lavf58.42.100
>     Stream #0:0: Video: mjpeg, yuvj420p(pc), 313x437 [SAR 1:1 DAR
> 313:437], q=2-31, 200 kb/s, 90k fps, 90k tbn, 90k tbc (attached pic)
>     Metadata:
>       comment         : Cover (front)
>       title           : Front Cover
>       encoder         : Lavc58.77.101 mjpeg
>     Side data:
>       cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
> frame=    1 fps=0.0 q=4.3 Lsize=N/A time=00:00:00.00 bitrate=N/A
> speed=0.000875x
> video:22kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
> muxing overhead: unknown
> }}}

New description:

 Summary of the bug:

 The latest release of FFmpeg (4.2) breaks album art extraction for ogg
 vorbis files (it worked in 4.1.3). I was able to confirm this on the most
 recent development branch of FFmpeg, and I was able to fix it by undoing
 the offending commit here and re-compiling:
 8d3630c5402fdda2889fe4f74f7dcdd50ebca654

 I have attached a vorbis file from Wikipedia. I put a public domain photo
 into the vorbis metadata_block_picture using mutagen.

 How to reproduce the error (using the latest ffmpeg release, 4.2.2):
 {{{
 % ffmpeg -i Example.ogg /tmp/foo.jpg
 ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
   built with gcc 9 (GCC)
   configuration: --prefix=/usr --bindir=/usr/bin
 --datadir=/usr/share/ffmpeg --docdir=/usr/share/doc/ffmpeg
 --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man
 --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Werror=format-security
 -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-
 protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-
 hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64
 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-
 protection' --extra-ldflags='-Wl,-z,relro -Wl,--as-needed -Wl,-z,now
 -specs=/usr/lib/rpm/redhat/redhat-hardened-ld ' --extra-cflags=' '
 --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libvo-
 amrwbenc --enable-version3 --enable-bzlib --disable-crystalhd --enable-
 fontconfig --enable-frei0r --enable-gcrypt --enable-gnutls --enable-ladspa
 --enable-libaom --enable-libdav1d --enable-libass --enable-libbluray
 --enable-libcdio --enable-libdrm --enable-libjack --enable-libfreetype
 --enable-libfribidi --enable-libgsm --enable-libmp3lame --enable-nvenc
 --enable-openal --enable-opencl --enable-opengl --enable-libopenjpeg
 --enable-libopus --enable-libpulse --enable-librsvg --enable-libsoxr
 --enable-libspeex --enable-libssh --enable-libtheora --enable-libvorbis
 --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvpx
 --enable-libx264 --enable-libx265 --enable-libxvid --enable-libzimg
 --enable-libzvbi --enable-avfilter --enable-avresample --enable-postproc
 --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-
 debug --disable-stripping --shlibdir=/usr/lib64 --enable-libmfx --enable-
 runtime-cpudetect
   libavutil      56. 31.100 / 56. 31.100
   libavcodec     58. 54.100 / 58. 54.100
   libavformat    58. 29.100 / 58. 29.100
   libavdevice    58.  8.100 / 58.  8.100
   libavfilter     7. 57.100 /  7. 57.100
   libavresample   4.  0.  0 /  4.  0.  0
   libswscale      5.  5.100 /  5.  5.100
   libswresample   3.  5.100 /  3.  5.100
   libpostproc    55.  5.100 / 55.  5.100
 [ogg @ 0x55f46dfa9a80] 1129 bytes of comment header remain
 Input #0, ogg, from 'Example.ogg':
   Duration: 00:00:06.10, start: 0.000000, bitrate: 226 kb/s
     Stream #0:0: Audio: vorbis, 44100 Hz, stereo, fltp, 160 kb/s
     Metadata:
       title           : Test
       metadata_block_picture:
 AAAAAwAAAAppbWFnZS9qcGVnAAAAC0Zyb250IENvdmVyAAAAAAAAAAAAAAAAAAAAAAAAwMT/2P/gABBKRklGAAEBAAABAAEAAP/hAF5FeGlmAABJSSoACAAAAAEAmIICADwAAAAaAAAAAAAAAFB1YmxpYyBEb21haW4sIGZyb20gdGhlIEJyaXRpc2ggTGlicmFyeSdzIGNvbGxlY3Rpb25zLCAyMDEzAP/hCyhodHRwOi8vbnMuYWRvYmUuY29
 Output #0, image2, to '/tmp/foo.jpg':
 Output file #0 does not contain any stream

 }}}

 Upon undoing the offending commit, it works fine:

 {{{
 % ffmpeg -i Example.ogg /tmp/foo.jpg
 ffmpeg version N-97225-g081ef58619 Copyright (c) 2000-2020 the FFmpeg
 developers
   built with gcc 9 (GCC)
   configuration:
   libavutil      56. 42.102 / 56. 42.102
   libavcodec     58. 77.101 / 58. 77.101
   libavformat    58. 42.100 / 58. 42.100
   libavdevice    58.  9.103 / 58.  9.103
   libavfilter     7. 77.101 /  7. 77.101
   libswscale      5.  6.101 /  5.  6.101
   libswresample   3.  6.100 /  3.  6.100
 [ogg @ 0x32406c0] 1129 bytes of comment header remain
 Input #0, ogg, from 'Example.ogg':
   Duration: 00:00:06.10, start: 0.000000, bitrate: 226 kb/s
     Stream #0:0: Audio: vorbis, 44100 Hz, stereo, fltp, 160 kb/s
     Metadata:
       TITLE           : Test
     Stream #0:1: Video: mjpeg (Baseline), yuvj420p(pc,
 bt470bg/unknown/unknown), 313x437 [SAR 1:1 DAR 313:437], 90k tbr, 90k tbn,
 90k tbc (attached pic)
     Metadata:
       comment         : Cover (front)
       title           : Front Cover
 Stream mapping:
   Stream #0:1 -> #0:0 (mjpeg (native) -> mjpeg (native))
 Press [q] to stop, [?] for help
 [image2 @ 0x32574c0] Frame rate very high for a muxer not efficiently
 supporting it.
 Please consider specifying a lower framerate, a different muxer or -vsync
 2
 Output #0, image2, to '/tmp/foo.jpg':
   Metadata:
     encoder         : Lavf58.42.100
     Stream #0:0: Video: mjpeg, yuvj420p(pc), 313x437 [SAR 1:1 DAR
 313:437], q=2-31, 200 kb/s, 90k fps, 90k tbn, 90k tbc (attached pic)
     Metadata:
       comment         : Cover (front)
       title           : Front Cover
       encoder         : Lavc58.77.101 mjpeg
     Side data:
       cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
 frame=    1 fps=0.0 q=4.3 Lsize=N/A time=00:00:00.00 bitrate=N/A
 speed=0.000875x
 video:22kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

--

Comment:

 Fixed by Mattias Wadman in 9d21d18ec3ca2721e989fd4522d19bd90d6ac2db

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8608#comment:1>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list