Opened 11 years ago

Closed 11 years ago

#2510 closed defect (fixed)

Some jpeg2000 files cannot be decoded anymore by default

Reported by: Carl Eugen Hoyos Owned by: Nicolas Bertrand
Priority: important Component: avcodec
Version: git-master Keywords: j2k regression
Cc: nicoinattendu@gmail.com Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description (last modified by Carl Eugen Hoyos)

$ ffmpeg -i tests/lena.pnm -vcodec libopenjpeg outlibopenjpeg.j2c
$ ffmpeg -i tests/lena.pnm -vcodec j2k -strict -2 outj2k.j2c
Both files can be decoded with libopenjpeg and the "experimental" j2k decoder (and jasper), but not with the default decoder:

$ ffmpeg -i outlibopenjpeg.j2c out.jpg
ffmpeg version N-52554-gb691bc4 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 29 2013 12:14:54 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --enable-libopenjpeg
  libavutil      52. 27.101 / 52. 27.101
  libavcodec     55.  6.100 / 55.  6.100
  libavformat    55.  3.100 / 55.  3.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 61.101 /  3. 61.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
[jpeg2000 @ 0x24a56c0] SOD marker not found
[jpeg2000 @ 0x24a56c0] error during processing marker segment ff90
Input #0, image2, from 'outlibopenjpeg.j2c':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.jpg':
  Metadata:
    encoder         : Lavf55.3.100
    Stream #0:0: Video: mjpeg, yuvj444p, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (jpeg2000 -> mjpeg)
Press [q] to stop, [?] for help
[jpeg2000 @ 0x26077e0] SOD marker not found
[jpeg2000 @ 0x26077e0] error during processing marker segment ff90
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -inf%
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
$ ffmpeg -i outj2k.j2c out.jpg
ffmpeg version N-52554-gb691bc4 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 29 2013 12:14:54 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --enable-libopenjpeg
  libavutil      52. 27.101 / 52. 27.101
  libavcodec     55.  6.100 / 55.  6.100
  libavformat    55.  3.100 / 55.  3.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 61.101 /  3. 61.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, image2, from 'outj2k.j2c':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.jpg':
  Metadata:
    encoder         : Lavf55.3.100
    Stream #0:0: Video: mjpeg, yuvj444p, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (jpeg2000 -> mjpeg)
Press [q] to stop, [?] for help
frame=    0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -inf%
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)
$ ffmpeg -vcodec libopenjpeg -i outlibopenjpeg.j2c out.jpg
ffmpeg version N-52554-gb691bc4 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 29 2013 12:14:54 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --enable-libopenjpeg
  libavutil      52. 27.101 / 52. 27.101
  libavcodec     55.  6.100 / 55.  6.100
  libavformat    55.  3.100 / 55.  3.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 61.101 /  3. 61.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
[jpeg2000 @ 0x2c0f700] SOD marker not found
[jpeg2000 @ 0x2c0f700] error during processing marker segment ff90
Input #0, image2, from 'outlibopenjpeg.j2c':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.jpg':
  Metadata:
    encoder         : Lavf55.3.100
    Stream #0:0: Video: mjpeg, yuvj444p, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (libopenjpeg -> mjpeg)
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:16kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.134138%
$ ffmpeg -vcodec libopenjpeg -i outj2k.j2c out.jpg
ffmpeg version N-52554-gb691bc4 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 29 2013 12:14:54 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --enable-libopenjpeg
  libavutil      52. 27.101 / 52. 27.101
  libavcodec     55.  6.100 / 55.  6.100
  libavformat    55.  3.100 / 55.  3.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 61.101 /  3. 61.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, image2, from 'outj2k.j2c':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.jpg':
  Metadata:
    encoder         : Lavf55.3.100
    Stream #0:0: Video: mjpeg, yuvj444p, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (libopenjpeg -> mjpeg)
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:16kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.133245%
$ ffmpeg -vcodec j2k -strict -2 -i outlibopenjpeg.j2c out.jpg
ffmpeg version N-52554-gb691bc4 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 29 2013 12:14:54 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --enable-libopenjpeg
  libavutil      52. 27.101 / 52. 27.101
  libavcodec     55.  6.100 / 55.  6.100
  libavformat    55.  3.100 / 55.  3.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 61.101 /  3. 61.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
[jpeg2000 @ 0x34be8c0] SOD marker not found
[jpeg2000 @ 0x34be8c0] error during processing marker segment ff90
Input #0, image2, from 'outlibopenjpeg.j2c':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.jpg':
  Metadata:
    encoder         : Lavf55.3.100
    Stream #0:0: Video: mjpeg, yuvj444p, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (j2k -> mjpeg)
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:16kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.130247%
$ ffmpeg -vcodec j2k -strict -2 -i outj2k.j2c out.jpg
ffmpeg version N-52554-gb691bc4 Copyright (c) 2000-2013 the FFmpeg developers
  built on Apr 29 2013 12:14:54 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl --disable-indev=jack --enable-libopenjpeg
  libavutil      52. 27.101 / 52. 27.101
  libavcodec     55.  6.100 / 55.  6.100
  libavformat    55.  3.100 / 55.  3.100
  libavdevice    55.  0.100 / 55.  0.100
  libavfilter     3. 61.101 /  3. 61.101
  libswscale      2.  2.100 /  2.  2.100
  libswresample   0. 17.102 /  0. 17.102
  libpostproc    52.  3.100 / 52.  3.100
Input #0, image2, from 'outj2k.j2c':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.jpg':
  Metadata:
    encoder         : Lavf55.3.100
    Stream #0:0: Video: mjpeg, yuvj444p, 256x256, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (j2k -> mjpeg)
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:17kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.130062%

Change History (4)

comment:1 by Carl Eugen Hoyos, 11 years ago

Description: modified (diff)

comment:2 by Nicolas Bertrand, 11 years ago

Its an expected pb from new jpeg2000 decoder.
Not tested with images not coming from dcinema profiles.

Merge with j2k decoder shall be done fot that case.

comment:3 by Nicolas Bertrand, 11 years ago

Cc: nicoinattendu@gmail.com added
Owner: set to Nicolas Bertrand
Status: newopen

comment:4 by Carl Eugen Hoyos, 11 years ago

Resolution: fixed
Status: openclosed

Fixed by Michael.

Note: See TracTickets for help on using tickets.