[FFmpeg-user] convert from bt601 to bt709

Carl Eugen Hoyos cehoyos at ag.or.at
Tue Jun 10 16:39:15 CEST 2014

Gregory Ducatel <gducatel <at> gmail.com> writes:

> ffmpeg.exe -y -threads 8 -f image2 

The dpx decoder is currently not multi-threading 
capable: This would be trivial to add but I wonder if 
it helps performance in any case (I/O should be slower 
than dpx decoding).

> -r 24000/1001 

(Unrelated: This may be unnecessary because FFmpeg 
does read the framerate field from dpx images now. 
It is of course necessary with the workaround below.)

> -i "Source_file.%04d.dpx"
> -sws_flags full_chroma_inp+full_chroma_int+accurate_rnd+print_info 
> -c:v dnxhd -pix_fmt yuv422p -b:v 115M 
> -vf "[in]scale=1920:1080,colormatrix=bt601:bt709[out]" 
> -movflags +faststart -aspect 1.777778 "c:\test_dnxhd.mov"

I was unable to find a possibility to make FFmpeg assume 
MPEG range for the input sample (and I was unable to find 
any hint within the dpx file that it is not full scale 
which is expected for rgb afaict, if somebody could help 
with the detection, it would be useful!), you currently 
have to cheat:

$ ffmpeg -i input.dpx -f rawvideo 
-sws_flags full_chroma_inp+full_chroma_int+accurate_rnd+print_info 
-pix_fmt yuvj422p out

(You could probably compress the output, in any case you 
can use -f image2 -vcodec rawvideo if that suits your 
needs better.)

$ ffmpeg -f rawvideo -s 1920x1080 -r 24000/1001 -pix_fmt yuv422p 
-i out -vcodec dnxhd -vb 115M -movflags +faststart out.mov

Note the different colour spaces used for writing and reading.
Above may not be perfect but since you are converting 
from 10bit to 8bit with subsampling I would (perhaps 
wrongly?) assume that the output does not have to 
be perfect.
In any case: Please test and let me know if this is 
closer to what you expect.

I would open a ticket but I am still hoping for a 
checkerboard or at least a dpx sample with large 
white and black areas.

Carl Eugen

More information about the ffmpeg-user mailing list