Opened 13 years ago
Closed 13 years ago
#2633 closed defect (fixed)
dpx display errors
| Reported by: | mcinquin | Owned by: | Carl Eugen Hoyos |
|---|---|---|---|
| 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:
- download http://motion.kodak.com/motion/uploadedFiles/Digital_LAD_dpx.zip
- ffmpeg -i Digital_LAD_2048x1556.dpx lad.tif
- 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 by , 13 years ago
| Component: | undetermined → avcodec |
|---|---|
| Keywords: | dpx regression added |
| Priority: | normal → important |
| Version: | unspecified → git-master |
comment:2 by , 13 years ago
| Component: | avcodec → swscale |
|---|---|
| Owner: | set to |
| Status: | new → 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 by , 13 years ago
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 by , 13 years ago
Could you test if the patch fixes your issue?
http://thread.gmane.org/gmane.comp.video.ffmpeg.devel/164614
comment:5 by , 13 years ago
| Resolution: | → fixed |
|---|---|
| Status: | open → closed |
This should be fixed, thank you for testing!



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