Opened 4 years ago

Last modified 12 months ago

#2966 open defect

ljpeg: support 36bpp rgb

Reported by: ami_stuff Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: ljpeg mjpeg
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

that's the last mode supported by "My ViewPad?" program for lossless jpeg

http://www1.datafilehost.com/d/a2822f88

C:\>ffmpeg -i 36bpp_rgb_lossless.jpg out.bmp
ffmpeg version N-56277-g2fcef19 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep 15 2013 02:23:39 with gcc 4.5.0 (GCC) 20100414 (Fedora MinGW 4.5.
0-1.fc14)
  configuration: --prefix=/var/www/users/research/ffmpeg/snapshots/build --arch=
x86 --target-os=mingw32 --cross-prefix=i686-pc-mingw32- --cc='ccache i686-pc-min
gw32-gcc' --enable-pthreads --enable-memalign-hack --enable-runtime-cpudetect --
enable-cross-compile --enable-static --disable-shared --extra-libs='-lws2_32 -lw
inmm -lpthread' --extra-cflags='--static -I/var/www/users/research/ffmpeg/snapsh
ots/build/include' --extra-ldflags='-static -L/var/www/users/research/ffmpeg/sna
pshots/build/lib' --enable-bzlib --enable-zlib --enable-gpl --enable-version3 --
enable-nonfree --enable-libx264 --enable-libspeex --enable-libtheora --enable-li
bvorbis --enable-libfaac --enable-libxvid --enable-libopencore-amrnb --enable-li
bopencore-amrwb --enable-libmp3lame --enable-libfreetype --enable-libvpx --disab
le-decoder=libvpx
  libavutil      52. 43.100 / 52. 43.100
  libavcodec     55. 31.101 / 55. 31.101
  libavformat    55. 16.102 / 55. 16.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 84.100 /  3. 84.100
  libswscale      2.  5.100 /  2.  5.100
  libswresample   0. 17.103 /  0. 17.103
  libpostproc    52.  3.100 / 52.  3.100
[image2 @ 0x205fa40] Stream #0: not enough frames to estimate rate; consider inc
reasing probesize
Input #0, image2, from '36bpp_rgb_lossless.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, bgr24, 1200x1200, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to 'out.bmp':
  Metadata:
    encoder         : Lavf55.16.102
    Stream #0:0: Video: bmp, bgr24, 1200x1200, q=2-31, 200 kb/s, 90k tbn, 25 tbc

Stream mapping:
  Stream #0:0 -> #0:0 (mjpeg -> bmp)
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=-1.0 Lsize=N/A time=00:00:00.04 bitrate=N/A
video:4219kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.000509
%

Attachments (3)

36_YCbCrK.jpg (292.5 KB) - added by ami_stuff 12 months ago.
48_YCbCrK.jpg (295.6 KB) - added by ami_stuff 12 months ago.
36_RGB.jpg (473.5 KB) - added by ami_stuff 12 months ago.

Download all attachments as: .zip

Change History (10)

comment:1 Changed 4 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords ljpeg mjpeg added
  • Reproduced by developer set
  • Status changed from new to open
  • Version changed from unspecified to git-master
$ ffmpeg -i 36bpp_rgb_lossless.jpg
ffmpeg version N-56297-g7ac6c63 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep 15 2013 23:50:37 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      52. 43.100 / 52. 43.100
  libavcodec     55. 31.101 / 55. 31.101
  libavformat    55. 16.102 / 55. 16.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 84.100 /  3. 84.100
  libswscale      2.  5.100 /  2.  5.100
  libswresample   0. 17.103 /  0. 17.103
  libpostproc    52.  3.100 / 52.  3.100
[image2 @ 0x2b3f080] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, image2, from '36bpp_rgb_lossless.jpg':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: mjpeg, bgr48le(12 bpc), 1200x1200, 25 tbr, 25 tbn, 25 tbc
At least one output file must be specified

comment:2 follow-up: Changed 3 years ago by kurosu

The linked file is no longer available, can you attach it to this bug report instead?

comment:3 in reply to: ↑ 2 Changed 3 years ago by ami_stuff

Replying to kurosu:

The linked file is no longer available, can you attach it to this bug report instead?

It's too big, but here is a new link:

http://www.datafilehost.com/d/8f4a4787

comment:5 follow-up: Changed 3 years ago by kurosu

Currently it decodes to 16bits per component without rescaling. It can then be encoded to format supporting 16 bits (thereby keeping the full dynamic afaik). My guess is that there are several ways to solve this:

  • actually implement support for BGR36 (that means conversion too)
  • or scale output of the jpeg decoder
  • or, seeing how the jpeg decoder already reports "bgr48le(12 bpc)", extend support for this mixed information in various codecs.

comment:6 in reply to: ↑ 5 Changed 3 years ago by cehoyos

Replying to kurosu:

Currently it decodes to 16bits per component without rescaling. It can then be encoded to format supporting 16 bits (thereby keeping the full dynamic afaik). My guess is that there are several ways to solve this:

  • actually implement support for BGR36 (that means conversion too)

Please don't.
It was a fault that yuv with 8<bpc<16 was added, please don't add more.

  • or scale output of the jpeg decoder
  • or, seeing how the jpeg decoder already reports "bgr48le(12 bpc)", extend support for this mixed information in various codecs.

Imo, output should be rgb48 (or similar) with bits_per_coded_sample set accordingly.

Changed 12 months ago by ami_stuff

Changed 12 months ago by ami_stuff

Changed 12 months ago by ami_stuff

comment:7 Changed 12 months ago by ami_stuff

I attached also some lossy samples.

Note: See TracTickets for help on using tickets.