Opened 11 years ago

Closed 11 years ago

#1897 closed defect (fixed)

arbitrary maxval for netpbm image formats (pam,pnm,pgm)

Reported by: Elon Musk Owned by:
Priority: normal Component: avcodec
Version: git-master Keywords: pnm
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Files that are created with pamdepth with maxval argument as 512 for example (from original 255) decodes as black.

Is there some nice way to support this instead of doing insane calculations as it is currently done for grayscale in pnmdec.c (see upgrade arg) ?

Change History (3)

comment:1 by Carl Eugen Hoyos, 11 years ago

Please provide command line and complete, uncut console output.

comment:2 by Cigaes, 11 years ago

Component: undeterminedavcodec
Keywords: pnm added
Reproduced by developer: set
Status: newopen
Version: unspecifiedgit-master

I can reproduce a similar problem with the following commands:

./ffmpeg_g -f lavfi -i testsrc -vframes 1 /tmp/image.png
convert /tmp/image.png -depth 7 /tmp/image.ppm
./ffmpeg_g -i /tmp/image.ppm /tmp/image2.png

Then display both images: the one converted by ffmpeg is darker. Apparently, convert does not want to produce 9-bit. images, it goes straight for 16-bits, and ffmpeg is correct.

There is absolutely nothing interesting in the console output:

ffmpeg version N-46520-g58d1d70 Copyright (c) 2000-2012 the FFmpeg developers
  built on Nov  7 2012 23:33:12 with gcc 4.7 (Debian 4.7.1-7)
  configuration: --enable-shared --disable-static --enable-gpl --enable-libx264 --enable-libass --enable-libfreetype --assert-level=1
  libavutil      52.  5.100 / 52.  5.100
  libavcodec     54. 71.100 / 54. 71.100
  libavformat    54. 36.100 / 54. 36.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 21.106 /  3. 21.106
  libswscale      2.  1.102 /  2.  1.102
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
Input #0, image2, from '/tmp/image.ppm':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: ppm, rgb24, 320x240, 25 tbr, 25 tbn, 25 tbc
Output #0, image2, to '/tmp/image2.png':
  Metadata:
    encoder         : Lavf54.36.100
    Stream #0:0: Video: png, rgb24, 320x240, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (ppm -> png)
Press [q] to stop, [?] for help
frame=    1 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.04 bitrate=   0.0kbits/s    
video:2kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.000000%

In pnmdec.c, copying the maxval/upgrade test from the GRAY8 case to the RGB24 case seems to fix the problem.

comment:3 by Carl Eugen Hoyos, 11 years ago

Resolution: fixed
Status: openclosed

Should be fixed in 34d48dac.

Note: See TracTickets for help on using tickets.