[FFmpeg-trac] #10167(undetermined:new): Animated JPEG XL is treated as single image

FFmpeg trac at avcodec.org
Sat Feb 4 16:27:13 EET 2023


#10167: Animated JPEG XL is treated as single image
-------------------------------------+-------------------------------------
             Reporter:  oblomov      |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:  git-
  undetermined                       |  master
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 The JPEG XL format supports animation, but ffmpeg only sees the first
 frame of the animation and interprets such a file as a static single
 image.

 To reproduce this, an animated JPEG XL is needed. This can be created e.g.
 converting Mozilla's Throbber-small.gif into a JXL with:
 {{{
 % cjxl Throbber-small.gif throbber-small.gif
 % jxlinfo throbber-small.gif
 JPEG XL animation, 16x16, (possibly) lossless, 8-bit RGBA
 Color space: RGB, D65, sRGB primaries, sRGB transfer function, rendering
 intent: Perceptual
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 frame: full image size, duration: 100.0 ms
 Animation length: 0.800 seconds (looping)
 }}}
 Compare now the ffprobe output (tested with the GPL Linux nightly):
 {{{
 % ffprobe Throbber-small.gif
 ffprobe version N-109748-gb92028346c-20230203 Copyright (c) 2007-2023 the
 FFmpeg developers
   built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
   configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
 --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu-
 --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-
 debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
 --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
 --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf
 --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-
 libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d
 --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-
 llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass
 --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus
 --enable-mbedtls --enable-librist --enable-libssh --enable-libtheora
 --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-
 libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-
 amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt
 --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2
 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame
 --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab
 --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264
 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg
 --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags=
 --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl
 -lgomp' --extra-version=20230203
   libavutil      57. 44.100 / 57. 44.100
   libavcodec     59. 61.100 / 59. 61.100
   libavformat    59. 37.100 / 59. 37.100
   libavdevice    59.  8.101 / 59.  8.101
   libavfilter     8. 56.100 /  8. 56.100
   libswscale      6.  8.112 /  6.  8.112
   libswresample   4.  9.100 /  4.  9.100
   libpostproc    56.  7.100 / 56.  7.100
 Input #0, gif, from '/usr/lib/firefox/Throbber-small.gif':
   Duration: 00:00:00.80, start: 0.000000, bitrate: 8 kb/s
   Stream #0:0: Video: gif, bgra, 16x16, 10 fps, 10 tbr, 100 tbn
 }}}
 versus
 {{{
 % ffprobe throbber-small.jxl
 ffprobe version N-109748-gb92028346c-20230203 Copyright (c) 2007-2023 the
 FFmpeg developers
   built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
   configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
 --pkg-config=pkg-config --cross-prefix=x86_64-ffbuild-linux-gnu-
 --arch=x86_64 --target-os=linux --enable-gpl --enable-version3 --disable-
 debug --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
 --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
 --enable-libvorbis --enable-opencl --enable-libpulse --enable-libvmaf
 --enable-libxcb --enable-xlib --enable-amf --enable-libaom --enable-
 libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d
 --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-
 llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass
 --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus
 --enable-mbedtls --enable-librist --enable-libssh --enable-libtheora
 --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-
 libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-
 amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt
 --enable-librav1e --enable-librubberband --disable-schannel --enable-sdl2
 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame
 --enable-libuavs3d --enable-libdrm --enable-vaapi --enable-libvidstab
 --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264
 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg
 --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags=
 --extra-ldflags=-pthread --extra-ldexeflags=-pie --extra-libs='-ldl
 -lgomp' --extra-version=20230203
   libavutil      57. 44.100 / 57. 44.100
   libavcodec     59. 61.100 / 59. 61.100
   libavformat    59. 37.100 / 59. 37.100
   libavdevice    59.  8.101 / 59.  8.101
   libavfilter     8. 56.100 /  8. 56.100
   libswscale      6.  8.112 /  6.  8.112
   libswresample   4.  9.100 /  4.  9.100
   libpostproc    56.  7.100 / 56.  7.100
 Input #0, jpegxl_pipe, from 'throbber-small.jxl':
   Duration: N/A, bitrate: N/A
   Stream #0:0: Video: jpegxl, rgba(pc, gbr/bt709/iec61966-2-1), 16x16, 25
 fps, 25 tbr, 25 tbn
 }}}

 (Ideally, support for animated JPEG XL should be added both in input and
 output, but input at least would be nice.)
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10167>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list