Ticket #1179 (closed defect: fixed)
libopenjpeg: encoded as rgb48, decodes as yuv444p16le
| Reported by: | ami_stuff | Owned by: | |
|---|---|---|---|
| Priority: | normal | Component: | avcodec |
| Version: | git-master | Keywords: | libopenjpeg |
| Cc: | Blocked By: | ||
| Blocking: | Reproduced by developer: | yes | |
| Analyzed by developer: | no |
Description
the output jp2 file decodes correctly with IrfanView?, so the problem is probably in libopenjpeg's decoder
C:\>ffmpeg -i test.bmp -vcodec libopenjpeg -pix_fmt rgb48 out.jp2
ffmpeg version N-39267-g4082198 Copyright (c) 2000-2012 the FFmpeg developers
built on Mar 25 2012 20:25:08 with gcc 4.6.2
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
libavutil 51. 44.100 / 51. 44.100
libavcodec 54. 12.100 / 54. 12.100
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 65.102 / 2. 65.102
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 10.100 / 0. 10.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, image2, from 'test.bmp':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: bmp, bgr24, 1024x768, 25 tbr, 25 tbn, 25 tbc
[buffer @ 02191D60] w:1024 h:768 pixfmt:bgr24 tb:1/1000000 sar:0/1 sws_param:
[buffersink @ 02191120] auto-inserting filter 'auto-inserted scale 0' between th
e filter 'src' and the filter 'out'
[scale @ 02191580] w:1024 h:768 fmt:bgr24 sar:0/1 -> w:1024 h:768 fmt:rgb48le sa
r:0/1 flags:0x4
Output #0, image2, to 'out.jp2':
Metadata:
encoder : Lavf54.3.100
Stream #0:0: Video: j2k, rgb48le, 1024x768, q=2-31, 200 kb/s, 90k tbn, 25 tb
c
Stream mapping:
Stream #0:0 -> #0:0 (bmp -> libopenjpeg)
Press [q] to stop, [?] for help
frame= 1 fps=0.3 q=0.0 Lsize= 0kB time=00:00:00.04 bitrate= 0.0kbits/
s
video:3506kB audio:0kB global headers:0kB muxing overhead -100.000000%
C:\>ffmpeg -i out.jp2
ffmpeg version N-39267-g4082198 Copyright (c) 2000-2012 the FFmpeg developers
built on Mar 25 2012 20:25:08 with gcc 4.6.2
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-ru
ntime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libope
ncore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --en
able-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger -
-enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwben
c --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-
libxvid --enable-zlib
libavutil 51. 44.100 / 51. 44.100
libavcodec 54. 12.100 / 54. 12.100
libavformat 54. 3.100 / 54. 3.100
libavdevice 53. 4.100 / 53. 4.100
libavfilter 2. 65.102 / 2. 65.102
libswscale 2. 1.100 / 2. 1.100
libswresample 0. 10.100 / 0. 10.100
libpostproc 52. 0.100 / 52. 0.100
Input #0, image2, from 'out.jp2':
Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
Stream #0:0: Video: j2k, yuv444p16le, 1024x768, 25 tbr, 25 tbn, 25 tbc
At least one output file must be specified
Attachments
Change History
comment:1 Changed 14 months ago by ami_stuff
-pix_fmt yuv444p out.jp2 -> out.jp2 is identified as rgb24
comment:2 Changed 14 months ago by cehoyos
- Keywords libopenjpeg added
- Version changed from unspecified to git-master
- Component changed from undetermined to avcodec
Does IrfanView? show pictures encoded with -pix_fmt yuv444p16 correctly?
Or both rgb24 and yuv444p?
I suspect this ticket cannot be fixed / there will always be an incorrectly decoded image, see also http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/137075/focus=137086
comment:3 follow-up: ↓ 4 Changed 14 months ago by ami_stuff
Does IrfanView? show pictures encoded with -pix_fmt yuv444p16 correctly?
no, this one decodes incorrectly
Or both rgb24 and yuv444p?
these looks ok
comment:4 in reply to: ↑ 3 Changed 14 months ago by cehoyos
- Status changed from new to open
- Reproduced by developer set
Both outrgb.jp2 and outyuv.jp2 decode correctly with OSX Picture Viewer and jasper, outyuv.jp2 fails with FFmpeg and ImageMagick?. Old j2k_to_image (libopenjpeg) failed for outyuv.jp2, current openjpeg svn works fine for both files.
$ ffmpeg -i tests/lena.pnm -pix_fmt rgb24 outrgb.jp2
$ ffmpeg -i tests/lena.pnm -pix_fmt yuv444p outyuv.jp2
comment:5 Changed 14 months ago by mbradshaw
This can be corrected in some cases, actually. Paul's patch from March (commit 67d5fcc989a0ee3cc3b3a89e643ee7f099ca6229) adds support for using the JP2 format (and makes this default). If frames are saved in the JP2 format, the color space will be saved as well. If frames are saved in the J2K format, the color space will not be saved and must be guessed. OpenJPEG's opj_image structure has a color_space member identifying it as either unknown/unspecified (which it will be for J2K frames), RGB, gray, or YUV (it should be one of the last three for JP2 frames).



