#4523: JPEG2000 yuv420p file generated by ffmpeg with libopenjpeg codec is broken -------------------------------------+------------------------------------- Reporter: saste | Owner: Type: defect | Status: new Priority: important | Component: avcodec Version: git- | Keywords: libopenjpeg master | Blocking: Blocked By: | Analyzed by developer: 0 Reproduced by developer: 1 | -------------------------------------+------------------------------------- Summary of the bug: How to reproduce: {{{ $ ffmpeg -i fate-samples/lena.pnm -strict -2 -c libopenjpeg -pix_fmt yuv420p -y lena.yuv420p.j2k ffmpeg version N-71578-g57865a9 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9) configuration: --extra-cflags=-I/home/stefano/include --extra- ldflags=-L/home/stefano/lib --enable-libopenjpeg --enable-pic --enable- fontconfig --enable-libass --enable-version3 --prefix=/home/stefano --disable-shared --enable-static --enable-debug=3 --enable-pthreads --disable-optimizations --enable-libvorbis --enable-gpl --enable-nonfree --enable-libmp3lame --enable-libtheora --enable-gpl --enable-x11grab --enable-frei0r --enable-libfaac --enable-libcaca --enable-libflite --enable-libzmq --enable-libfreetype --enable-libopencv --enable-libgme --enable-libcdio --enable-libvo-aacenc --enable-libx264 --enable-ladspa --enable-libquvi --enable-opengl --enable-libvpx --enable-libxcb libavutil 54. 23.100 / 54. 23.100 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 30.100 / 56. 30.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 14.100 / 5. 14.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, image2, from 'fate-samples/lena.pnm': Duration: 00:00:00.04, start: 0.000000, bitrate: 39333 kb/s Stream #0:0: Video: ppm, rgb24, 256x256, 25 tbr, 25 tbn, 25 tbc Output #0, image2, to 'lena.yuv420p.j2k': Metadata: encoder : Lavf56.30.100 Stream #0:0: Video: jpeg2000 (libopenjpeg), yuv420p, 256x256, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc56.35.101 libopenjpeg Stream mapping: Stream #0:0 -> #0:0 (ppm (native) -> jpeg2000 (libopenjpeg)) 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:46kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown }}}
The generated file lena.yuv420p.j2k can be successfully decoded, but contains chroma artifacts. Of the three applications used to display it (ffplay, okular, display) only okular was able to show the image correctly. Re-encoding the file with ffmpeg generates a corrupted image, showing the same artifacts as the image displayed by ffplay (see attachment): {{{ ffmpeg -i lena.yuv420p.j2k lena.yuv420p.png ffmpeg version N-71578-g57865a9 Copyright (c) 2000-2015 the FFmpeg developers built with gcc 4.8 (Ubuntu/Linaro 4.8.1-10ubuntu9) configuration: --extra-cflags=-I/home/stefano/include --extra- ldflags=-L/home/stefano/lib --enable-libopenjpeg --enable-pic --enable- fontconfig --enable-libass --enable-version3 --prefix=/home/stefano --disable-shared --enable-static --enable-debug=3 --enable-pthreads --disable-optimizations --enable-libvorbis --enable-gpl --enable-nonfree --enable-libmp3lame --enable-libtheora --enable-gpl --enable-x11grab --enable-frei0r --enable-libfaac --enable-libcaca --enable-libflite --enable-libzmq --enable-libfreetype --enable-libopencv --enable-libgme --enable-libcdio --enable-libvo-aacenc --enable-libx264 --enable-ladspa --enable-libquvi --enable-opengl --enable-libvpx --enable-libxcb libavutil 54. 23.100 / 54. 23.100 libavcodec 56. 35.101 / 56. 35.101 libavformat 56. 30.100 / 56. 30.100 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 14.100 / 5. 14.100 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, j2k_pipe, from 'lena.yuv420p.j2k': Duration: N/A, bitrate: N/A Stream #0:0: Video: jpeg2000 (JPEG 2000 codestream restriction 0), yuv420p, 256x256, 25 tbr, 25 tbn, 25 tbc File 'lena.yuv420p.png' already exists. Overwrite ? [y/N] y Output #0, apng, to 'lena.yuv420p.png': Metadata: encoder : Lavf56.30.100 Stream #0:0: Video: apng, rgb24, 256x256, q=2-31, 200 kb/s, 25 fps, 25 tbn, 25 tbc Metadata: encoder : Lavc56.35.101 apng Stream mapping: Stream #0:0 -> #0:0 (jpeg2000 (native) -> apng (native)) Press [q] to stop, [?] for help [apng @ 0x24703c0] Only a single frame so saving as a normal PNG. frame= 1 fps=0.0 q=0.0 Lsize= 140kB time=00:00:00.04 bitrate=28599.6kbits/s video:140kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.019585% }}} The problem doesn't exist if I use -pix_fmt yuv444p. -- Ticket URL: <https://trac.ffmpeg.org/ticket/4523> FFmpeg <https://ffmpeg.org> FFmpeg issue tracker _______________________________________________ FFmpeg-trac mailing list FFmpeg-trac@avcodec.org http://avcodec.org/mailman/listinfo/ffmpeg-trac