[FFmpeg-trac] #10058(undetermined:new): jpeg2000: support paletted images

FFmpeg trac at avcodec.org
Mon Nov 21 01:56:26 EET 2022


#10058: jpeg2000: support paletted images
-------------------------------------+-------------------------------------
             Reporter:  ami_stuff    |                    Owner:  (none)
                 Type:  defect       |                   Status:  new
             Priority:  normal       |                Component:
                                     |  undetermined
              Version:  unspecified  |               Resolution:
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
Comment (by ami_stuff):

 Replying to [comment:1 Balling]:
 > >openjpeg decodes it with palette
 >
 > No, it does not.
 >
 > ffplay -i palettedImage.jp2  -vcodec libopenjpeg
 >
 > while
 > ffplay -i palettedImage.jp2  -vcodec jpeg2000
 >
 > works.

 something really strange happens here

 with the ffmpeg from my system I get color output:

 {{{
 ffmpeg -vcodec jpeg2000 -i 'palettedImage.jp2' -pix_fmt bgr24 -y out.bmp
 ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg
 developers
   built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
   configuration: --prefix=/usr --extra-version=0ubuntu0.1
 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
 --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
 --disable-stripping --enable-avresample --disable-filter=resample
 --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom
 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
 --enable-libcdio --enable-libcodec2 --enable-libflite --enable-
 libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme
 --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa
 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-
 libpulse --enable-librsvg --enable-librubberband --enable-libshine
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-
 libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-
 libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi
 --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl
 --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883
 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264
 --enable-shared
   WARNING: library configuration mismatch
   avcodec     configuration: --prefix=/usr --extra-version=0ubuntu0.1
 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
 --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
 --disable-stripping --enable-avresample --disable-filter=resample
 --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom
 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
 --enable-libcdio --enable-libcodec2 --enable-libflite --enable-
 libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme
 --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa
 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-
 libpulse --enable-librsvg --enable-librubberband --enable-libshine
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-
 libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-
 libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi
 --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl
 --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883
 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264
 --enable-shared --enable-version3 --disable-doc --disable-programs
 --enable-libaribb24 --enable-liblensfun --enable-libopencore_amrnb
 --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
   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
 [jpeg2000 @ 0x5623cbbd2700] Progression order RPCL
 Input #0, j2k_pipe, from 'palettedImage.jp2':
   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: jpeg2000, pal8, 1024x1024, 25 tbr, 25 tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (jpeg2000 (native) -> bmp (native))
 Press [q] to stop, [?] for help
 [jpeg2000 @ 0x5623cbc1c640] Progression order RPCL
 Output #0, image2, to 'out.bmp':
   Metadata:
     encoder         : Lavf58.29.100
     Stream #0:0: Video: bmp, bgr24, 1024x1024, q=2-31, 200 kb/s, 25 fps,
 25 tbn, 25 tbc
     Metadata:
       encoder         : Lavc58.54.100 bmp
 frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 speed=0.317x
 video:3072kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

 {{{
  VFS..D jpeg2000             JPEG 2000
  VF...D libopenjpeg          OpenJPEG JPEG 2000 (codec jpeg2000)
 }}}

 but with my own build I get only grayscale output:

 {{{
 ./ffmpeg -vcodec jpeg2000 -i palettedImage.jp2 -pix_fmt bgr24 -y out.bmp
 ffmpeg version N-109101-g822da7a317 Copyright (c) 2000-2022 the FFmpeg
 developers
   built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
   configuration:
   libavutil      57. 42.100 / 57. 42.100
   libavcodec     59. 52.102 / 59. 52.102
   libavformat    59. 34.101 / 59. 34.101
   libavdevice    59.  8.101 / 59.  8.101
   libavfilter     8. 50.100 /  8. 50.100
   libswscale      6.  8.112 /  6.  8.112
   libswresample   4.  9.100 /  4.  9.100
 [jpeg2000 @ 0x55770e74bdc0] SOC marker not present
 Input #0, j2k_pipe, from 'palettedImage.jp2':
   Duration: N/A, bitrate: N/A
   Stream #0:0: Video: jpeg2000, pal8, 1024x1024, 25 fps, 25 tbr, 25 tbn
 Stream mapping:
   Stream #0:0 -> #0:0 (jpeg2000 (native) -> bmp (native))
 Press [q] to stop, [?] for help
 [jpeg2000 @ 0x55770e75e940] SOC marker not present
 Error while decoding stream #0:0: Invalid data found when processing input
 [jpeg2000 @ 0x55770e75fec0] Progression order RPCL
 Output #0, image2, to 'out.bmp':
   Metadata:
     encoder         : Lavf59.34.101
   Stream #0:0: Video: bmp, bgr24(pc, gbr/unknown/unknown, progressive),
 1024x1024, q=2-31, 200 kb/s, 25 fps, 25 tbn
     Metadata:
       encoder         : Lavc59.52.102 bmp
 frame=    0 fps=0.0 q=-0.0 size=       0kB time=00:00:00.04 bitrate=
 0.0kbits/[image2 @ 0x55770e74d340] The specified filename 'out.bmp' does
 not contain an image sequence pattern or a pattern is invalid.
 [image2 @ 0x55770e74d340] Use a pattern such as %03d for an image sequence
 or use the -update option (with -frames:v 1 if needed) to write a single
 image.
 frame=    1 fps=0.0 q=-0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
 speed=0.306x
 video:3072kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: unknown
 }}}

 My own build has no openjpeg support.


 And if that's not enough, the ffmpeg from my system crashes when I force
 usage of libopenjpeg:

 {{{
 ffmpeg -vcodec libopenjpeg -i 'palettedImage.jp2' -pix_fmt bgr24 -y
 out.bmp
 ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg
 developers
   built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
   configuration: --prefix=/usr --extra-version=0ubuntu0.1
 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
 --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
 --disable-stripping --enable-avresample --disable-filter=resample
 --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom
 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
 --enable-libcdio --enable-libcodec2 --enable-libflite --enable-
 libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme
 --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa
 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-
 libpulse --enable-librsvg --enable-librubberband --enable-libshine
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-
 libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-
 libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi
 --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl
 --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883
 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264
 --enable-shared
   WARNING: library configuration mismatch
   avcodec     configuration: --prefix=/usr --extra-version=0ubuntu0.1
 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu
 --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl
 --disable-stripping --enable-avresample --disable-filter=resample
 --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom
 --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca
 --enable-libcdio --enable-libcodec2 --enable-libflite --enable-
 libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme
 --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa
 --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-
 libpulse --enable-librsvg --enable-librubberband --enable-libshine
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh
 --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-
 libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-
 libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi
 --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl
 --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883
 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264
 --enable-shared --enable-version3 --disable-doc --disable-programs
 --enable-libaribb24 --enable-liblensfun --enable-libopencore_amrnb
 --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
   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
 Input #0, j2k_pipe, from 'palettedImage.jp2':
   Duration: N/A, bitrate: N/A
     Stream #0:0: Video: jpeg2000, gray, 1024x1024, 25 tbr, 25 tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (jpeg2000 (libopenjpeg) -> bmp (native))
 Press [q] to stop, [?] for help
 free(): invalid pointer
 }}}

 {{{
 ==20017== Invalid write of size 1
 ==20017==    at 0x53912C8: ??? (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x50F12BF: ??? (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x50F1FC7: avcodec_send_packet (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x4DC9F22: ??? (in /usr/lib/x86_64-linux-
 gnu/libavformat.so.58.29.100)
 ==20017==    by 0x4DD2BEF: avformat_find_stream_info (in /usr/lib/x86_64
 -linux-gnu/libavformat.so.58.29.100)
 ==20017==    by 0x11D3E3: ??? (in /usr/bin/ffmpeg)
 ==20017==    by 0x11EFC3: ??? (in /usr/bin/ffmpeg)
 ==20017==    by 0x115DD7: main (in /usr/bin/ffmpeg)
 ==20017==  Address 0x11d1b28f is 0 bytes after a block of size 1,048,655
 alloc'd
 ==20017==    at 0x483E0F0: memalign (in /usr/lib/x86_64-linux-gnu/valgrind
 /vgpreload_memcheck-amd64-linux.so)
 ==20017==    by 0x483E212: posix_memalign (in /usr/lib/x86_64-linux-
 gnu/valgrind/vgpreload_memcheck-amd64-linux.so)
 ==20017==    by 0x6598FFC: av_malloc (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x65773AC: av_buffer_alloc (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x6577431: av_buffer_allocz (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x6577BBC: av_buffer_pool_get (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x50F36BB: avcodec_default_get_buffer2 (in /usr/lib/x86_64
 -linux-gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x50F3F5A: ??? (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x54BB197: ??? (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x5390D80: ??? (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x50F12BF: ??? (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==    by 0x50F1FC7: avcodec_send_packet (in /usr/lib/x86_64-linux-
 gnu/libavcodec.so.58.54.100)
 ==20017==
 ==20017== Invalid read of size 4
 ==20017==    at 0x6577505: av_buffer_unref (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x6583A1B: av_frame_unref (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x6583BAD: av_frame_free (in /usr/lib/x86_64-linux-
 gnu/libavutil.so.56.31.100)
 ==20017==    by 0x4DC9EE5: ??? (in /usr/lib/x86_64-linux-
 gnu/libavformat.so.58.29.100)
 ==20017==    by 0x4DD2BEF: avformat_find_stream_info (in /usr/lib/x86_64
 -linux-gnu/libavformat.so.58.29.100)
 ==20017==    by 0x11D3E3: ??? (in /usr/bin/ffmpeg)
 ==20017==    by 0x11EFC3: ??? (in /usr/bin/ffmpeg)
 ==20017==    by 0x115DD7: main (in /usr/bin/ffmpeg)
 ==20017==  Address 0x121a000f15000b1b is not stack'd, malloc'd or
 (recently) free'd
 ==20017==
 ==20017==
 ==20017== Process terminating with default action of signal 11 (SIGSEGV)
 }}}
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/10058#comment:2>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list