Opened 4 years ago

Closed 4 years ago

#2633 closed defect (fixed)

dpx display errors

Reported by: mcinquin Owned by: cehoyos
Priority: important Component: swscale
Version: git-master Keywords: dpx regression
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug: commit 5cc5d9d5f7ea2231490d11cf2a28350ebb3f06ab introduces small errors in reading DPX.

How to reproduce:

  1. download http://motion.kodak.com/motion/uploadedFiles/Digital_LAD_dpx.zip
  2. ffmpeg -i Digital_LAD_2048x1556.dpx lad.tif
  3. compare the two in DJV, Photoshop or whatever. The 445, 445, 445 square has been transformed by FFmpeg into 450, 445, 451

Bug was introduced by commit 5cc5d9d5f7ea2231490d11cf2a28350ebb3f06ab ; I was able to reproduce it on Mac 10.8 & 10.7, and on Debian Squeeze
Checking out commit just before the bad commit makes the error go away.

It can seem like a small error, but when you feed the image to a 3D Lut now that FFmpeg supports it, the error is multiplied and the colors become way off.

Change History (5)

comment:1 Changed 4 years ago by cehoyos

  • Component changed from undetermined to avcodec
  • Keywords dpx regression added
  • Priority changed from normal to important
  • Version changed from unspecified to git-master

Please add your failing command line together with the complete, uncut console output to make this a valid ticket.

comment:2 Changed 4 years ago by cehoyos

  • Component changed from avcodec to swscale
  • Owner set to cehoyos
  • Status changed from new to open

From a user's perspective, this is a lavc regression, but the problem is in libswscale, I will post a patch tomorrow.

comment:3 Changed 4 years ago by mcinquin

Of course I should have posted complete command line first.

"broken" dpx handling :

root@108:~/ffmpeg# ./ffmpeg -v debug -i ~/Digital_LAD_2048x1556.dpx ~/laddebian.tif
ffmpeg version N-53813-ge4bf3a9 Copyright (c) 2000-2013 the FFmpeg developers
  built on Jun  4 2013 08:57:51 with gcc 4.4.5 (Debian 4.4.5-8)
  configuration: 
  libavutil      52. 34.100 / 52. 34.100
  libavcodec     55. 15.100 / 55. 15.100
  libavformat    55.  8.102 / 55.  8.102
  libavdevice    55.  2.100 / 55.  2.100
  libavfilter     3. 74.101 /  3. 74.101
  libswscale      2.  3.100 /  2.  3.100
  libswresample   0. 17.102 /  0. 17.102
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument 'debug'.
Reading option '-i' ... matched as input file with argument '/root/Digital_LAD_2048x1556.dpx'.
Reading option '/root/laddebian.tif' ... matched as output file.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument debug.
Successfully parsed a group of options.
Parsing a group of options: input file /root/Digital_LAD_2048x1556.dpx.
Successfully parsed a group of options.
Opening an input file: /root/Digital_LAD_2048x1556.dpx.
[AVIOContext @ 0xa4e0c60] Statistics: 12779008 bytes read, 0 seeks
[image2 @ 0xa4dfca0] Probe buffer size limit of 5000000 bytes reached
[image2 @ 0xa4dfca0] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, image2, from '/root/Digital_LAD_2048x1556.dpx':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0, 1, 1/25: Video: dpx, gbrp10le, 2048x1556 [SAR 1:1 DAR 512:389], 1/25, 25 tbr, 25 tbn, 25 tbc
Successfully opened the file.
Parsing a group of options: output file /root/laddebian.tif.
Successfully parsed a group of options.
Opening an output file: /root/laddebian.tif.
File '/root/laddebian.tif' already exists. Overwrite ? [y/N] y
Successfully opened the file.
detected 4 logical cores
[graph 0 input from stream 0:0 @ 0xa4e10a0] Setting 'video_size' to value '2048x1556'
[graph 0 input from stream 0:0 @ 0xa4e10a0] Setting 'pix_fmt' to value '86'
[graph 0 input from stream 0:0 @ 0xa4e10a0] Setting 'time_base' to value '1/25'
[graph 0 input from stream 0:0 @ 0xa4e10a0] Setting 'pixel_aspect' to value '1/1'
[graph 0 input from stream 0:0 @ 0xa4e10a0] Setting 'sws_param' to value 'flags=2'
[graph 0 input from stream 0:0 @ 0xa4e10a0] Setting 'frame_rate' to value '25/1'
[graph 0 input from stream 0:0 @ 0xa4e10a0] w:2048 h:1556 pixfmt:gbrp10le tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[format @ 0xa4ce1e0] compat: called with args=[rgb24|pal8|gray|gray8a|gray16le|monob|monow|yuv420p|yuv422p|yuv440p|yuv444p|yuv410p|yuv411p|rgb48le|rgba|rgba64le]
[format @ 0xa4ce1e0] Setting 'pix_fmts' to value 'rgb24|pal8|gray|gray8a|gray16le|monob|monow|yuv420p|yuv422p|yuv440p|yuv444p|yuv410p|yuv411p|rgb48le|rgba|rgba64le'
[auto-inserted scaler 0 @ 0xa4ce980] Setting 'flags' to value '0x4'
[auto-inserted scaler 0 @ 0xa4ce980] w:iw h:ih flags:'0x4' interl:0
[format @ 0xa4ce1e0] auto-inserting filter 'auto-inserted scaler 0' between the filter 'Parsed_null_0' and the filter 'format'
[AVFilterGraph @ 0xa4d3e60] query_formats: 4 queried, 3 merged, 1 already done, 0 delayed
[auto-inserted scaler 0 @ 0xa4ce980] picking rgb48le out of 15 ref:gbrp10le alpha:0
[auto-inserted scaler 0 @ 0xa4ce980] w:2048 h:1556 fmt:gbrp10le sar:1/1 -> w:2048 h:1556 fmt:rgb48le sar:1/1 flags:0x4
Output #0, image2, to '/root/laddebian.tif':
  Metadata:
    encoder         : Lavf55.8.102
    Stream #0:0, 0, 1/90000: Video: tiff, rgb48le, 2048x1556 [SAR 1:1 DAR 512:389], 1/25, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (dpx -> tiff)
Press [q] to stop, [?] for help
[AVIOContext @ 0xa4ce2e0] Statistics: 0 seeks, 589 writeouts
EOF on sink link output stream 0:0:default.00:00.04 bitrate=N/A    
No more output streams to write to, finishing.
frame=    1 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.04 bitrate=N/A    
video:18823kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.000114%
1 frames successfully decoded, 0 decoding errors
root@108:~/ffmpeg# 

Correct dpx handling :

root@108:~/ffmpeg# git checkout 99f50907143b096009682481ba4c5129ab65149e ; git clean -x -d -f ; ./configure && make
root@108:~/ffmpeg# ./ffmpeg -v debug -i ~/Digital_LAD_2048x1556.dpx ~/laddebian.tif
ffmpeg version N-43935-g99f5090 Copyright (c) 2000-2012 the FFmpeg developers
  built on Jun  4 2013 09:18:49 with gcc 4.4.5 (Debian 4.4.5-8)
  configuration: 
  libavutil      51. 70.100 / 51. 70.100
  libavcodec     54. 54.100 / 54. 54.100
  libavformat    54. 25.104 / 54. 25.104
  libavdevice    54.  2.100 / 54.  2.100
  libavfilter     3. 13.101 /  3. 13.101
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 15.100 /  0. 15.100
[AVIOContext @ 0x9fd6f80] Statistics: 12779008 bytes read, 0 seeks
[image2 @ 0x9fd0500] Probe buffer size limit 5000000 reached
[image2 @ 0x9fd0500] Stream #0: not enough frames to estimate rate; consider increasing probesize
Input #0, image2, from '/root/Digital_LAD_2048x1556.dpx':
  Duration: 00:00:00.04, start: 0.000000, bitrate: N/A
    Stream #0:0, 1, 1/25: Video: dpx, rgb48le, 2048x1556 [SAR 1:1 DAR 512:389], 1/25, 25 tbr, 25 tbn, 25 tbc
[buffer @ 0x9fcf440] Setting entry with key 'video_size' to value '2048x1556'
[buffer @ 0x9fcf440] Setting entry with key 'pix_fmt' to value '42'
[buffer @ 0x9fcf440] Setting entry with key 'time_base' to value '1/25'
[buffer @ 0x9fcf440] Setting entry with key 'pixel_aspect' to value '1/1'
[buffer @ 0x9fcf440] Setting entry with key 'sws_param' to value 'flags=2'
[buffer @ 0x9fcf440] Setting entry with key 'frame_rate' to value '25/1'
[graph 0 input from stream 0:0 @ 0x9fcf880] w:2048 h:1556 pixfmt:rgb48le tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
Output #0, image2, to '/root/laddebian.tif':
  Metadata:
    encoder         : Lavf54.25.104
    Stream #0:0, 0, 1/90000: Video: tiff, rgb48le, 2048x1556 [SAR 1:1 DAR 512:389], 1/25, q=2-31, 200 kb/s, 90k tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (dpx -> tiff)
Press [q] to stop, [?] for help
[output stream 0:0 @ 0x9fd0460] EOF on sink link output stream 0:0:default.
No more output streams to write to, finishing.
frame=    1 fps=0.0 q=0.0 Lsize=       0kB time=00:00:00.04 bitrate=   0.0kbits/s    
video:14463kB audio:0kB subtitle:0 global headers:0kB muxing overhead -100.000000%

comment:4 Changed 4 years ago by cehoyos

Could you test if the patch fixes your issue?
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/164614

comment:5 Changed 4 years ago by cehoyos

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

This should be fixed, thank you for testing!

Note: See TracTickets for help on using tickets.