[FFmpeg-trac] #9468(avcodec:new): J2K is decoding rgb24 as bgr24 in native decoder
FFmpeg
trac at avcodec.org
Sat Oct 23 14:38:45 EEST 2021
#9468: J2K is decoding rgb24 as bgr24 in native decoder
---------------------------------+--------------------------------------
Reporter: Balling | Type: defect
Status: new | Priority: normal
Component: avcodec | Version: git-master
Keywords: j2k | Blocked By:
Blocking: | Reproduced by developer: 1
Analyzed by developer: 0 |
---------------------------------+--------------------------------------
Summary of the bug:
JPEG2000 file from ePassport is tagged as EnumCS 16 (sRGB) and has thus
rgb24 data inside https://github.com/uclouvain/openjpeg/issues/1382 (lets
not attach the sample there here, since it is personal photo and all), yet
native decoder (ffplay -vcodec jpeg2000) decodes it incorrectly while
ffplay -vcodec libopenjpeg decodes it correctly (says it is rgb24). Same
happens in ffmpeg, "the application", of course, -c:v libopenjpeg is good.
I will also point out that ffmpeg.exe -pixel_format bgr24 -c:v jpeg2000 is
bit perfect with libopenjpeg, so SHOULD be very simple fix.
How to reproduce (my ffmpeg defaults to jpeg2000):
{{{
ffmpeg.exe -i dg2img-3f096fe9d00296bc3734ac4f01b5bf60.j2k outfile.png
ffmpeg version N-104341-g933765aa0e-20211013 Copyright (c) 2000-2021 the
FFmpeg developers
built with gcc 10-win32 (GCC) 20210408
configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static
--pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64
--target-os=mingw32 --enable-gpl --enable-version3 --disable-debug
--enable-shared --disable-static --disable-w32threads --enable-pthreads
--enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype
--enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig
--enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan
--disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-
avisynth --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac
--enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libglslang
--enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame
--enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp
--enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-
libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-
librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-
libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d
--disable-libdrm --disable-vaapi --enable-libvidstab --enable-libx264
--enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg
--enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags=
--extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-
version=20211013
libavutil 57. 7.100 / 57. 7.100
libavcodec 59. 12.100 / 59. 12.100
libavformat 59. 6.100 / 59. 6.100
libavdevice 59. 0.101 / 59. 0.101
libavfilter 8. 14.100 / 8. 14.100
libswscale 6. 1.100 / 6. 1.100
libswresample 4. 0.100 / 4. 0.100
libpostproc 56. 0.100 / 56. 0.100
[jpeg2000 @ 0000021e61c1e840] End mismatch 1
[jpeg2000 @ 0000021e61c1e840] End mismatch 15
[jpeg2000 @ 0000021e61c1e840] End mismatch 24
[jpeg2000 @ 0000021e61c1e840] End mismatch 34
[jpeg2000 @ 0000021e61c1e840] End mismatch 16
[jpeg2000 @ 0000021e61c1e840] End mismatch 18
[jpeg2000 @ 0000021e61c1e840] End mismatch 10
[jpeg2000 @ 0000021e61c1e840] End mismatch 1
[jpeg2000 @ 0000021e61c1e840] End mismatch 7
[jpeg2000 @ 0000021e61c1e840] End mismatch 5
[jpeg2000 @ 0000021e61c1e840] End mismatch 10
Last message repeated 1 times
[jpeg2000 @ 0000021e61c1e840] End mismatch 2
[jpeg2000 @ 0000021e61c1e840] End mismatch 1
[jpeg2000 @ 0000021e61c1e840] End mismatch 5
[jpeg2000 @ 0000021e61c1e840] End mismatch 2
[jpeg2000 @ 0000021e61c1e840] End mismatch 1
Input #0, j2k_pipe, from 'dg2img-3f096fe9d00296bc3734ac4f01b5bf60.j2k':
Duration: N/A, bitrate: N/A
Stream #0:0: Video: jpeg2000, rgb24, 413x531, lossless, 25 fps, 25 tbr,
25 tbn
Stream mapping:
Stream #0:0 -> #0:0 (jpeg2000 (native) -> png (native))
Press [q] to stop, [?] for help
[jpeg2000 @ 0000021e61ee52c0] End mismatch 1
[jpeg2000 @ 0000021e61ee52c0] End mismatch 15
[jpeg2000 @ 0000021e61ee52c0] End mismatch 24
[jpeg2000 @ 0000021e61ee52c0] End mismatch 34
[jpeg2000 @ 0000021e61ee52c0] End mismatch 16
[jpeg2000 @ 0000021e61ee52c0] End mismatch 18
[jpeg2000 @ 0000021e61ee52c0] End mismatch 10
[jpeg2000 @ 0000021e61ee52c0] End mismatch 1
[jpeg2000 @ 0000021e61ee52c0] End mismatch 7
[jpeg2000 @ 0000021e61ee52c0] End mismatch 5
[jpeg2000 @ 0000021e61ee52c0] End mismatch 10
Last message repeated 1 times
[jpeg2000 @ 0000021e61ee52c0] End mismatch 2
[jpeg2000 @ 0000021e61ee52c0] End mismatch 1
[jpeg2000 @ 0000021e61ee52c0] End mismatch 5
[jpeg2000 @ 0000021e61ee52c0] End mismatch 2
[jpeg2000 @ 0000021e61ee52c0] End mismatch 1
Output #0, image2, to 'outfile.png':
Metadata:
encoder : Lavf59.6.100
Stream #0:0: Video: png, rgb24(progressive), 413x531, q=2-31, 200 kb/s,
25 fps, 25 tbn
Metadata:
encoder : Lavc59.12.100 png
frame= 1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
speed=0.934x
video:324kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
muxing overhead: unknown
}}}
Patches should be submitted to the ffmpeg-devel mailing list and not this
bug tracker.
--
Ticket URL: <https://trac.ffmpeg.org/ticket/9468>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list