Opened 4 years ago

Closed 4 years ago

#2510 closed defect (fixed)

Some jpeg2000 files cannot be decoded anymore by default

Reported by: cehoyos Owned by: Buxiness
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 cehoyos)

$ 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 Changed 4 years ago by cehoyos

  • Description modified (diff)

comment:2 Changed 4 years ago by Buxiness

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 Changed 4 years ago by Buxiness

  • Cc nicoinattendu@gmail.com added
  • Owner set to Buxiness
  • Status changed from new to open

comment:4 Changed 4 years ago by cehoyos

  • Resolution set to fixed
  • Status changed from open to closed

Fixed by Michael.

Note: See TracTickets for help on using tickets.