[FFmpeg-user] YUV->RGB conversion. What is the default matrix used?
Tim Nicholson
nichot20 at yahoo.com
Wed Jul 4 18:20:44 CEST 2012
On 04/07/12 15:31, Mike Scheutzow wrote:
> Tim Nicholson wrote:
>> Although we now have the "colormatrix" filter to convert between
>> different YUV colorspace standards it occurs to me that it is not clear
>> what matrixing is used by default when converting between YUV and RGB.
>>
>> A quick test using:-
>>
>> ffmpeg -i bars-601.mov -t 1 -an -r 1 %04d-601.png
>>
>> and an inspection of the resultant png shows RGB values of the bars to
>> differ from the values expected if using the 601 matrix values, and even
>> a grey scale has significant colour casting at certain levels.
>>
>> So it begs the question, what coefficients are being used by default?
>
> As near as I can tell from the code, and from the command:
>
> ./ffmpeg -i test.mov -vframes 1 out%d.png
>
> the default colorspace for yuv->rgb conversion is:
>
> /* ITU-R Rec. 624-4 System B, G */
>
> This is chosen in sws_getContext() in libswscale/utils.c.
>
Ahh I wondered where it was... Thanks
I have been looking at libswscale/yuv2rgb.c and noticed that 601 wasn't
even defined in the list of coefficients there. However I am struggling
to understand the coefficients as listed there as they don't match any
figures I am use to, and there are 4 of them not the expected three, as
per libavfilter/vf_colormatrix
> I found no way to select a different colorspace from the ./ffmpeg
> command line.
>
No, unfortunately, and also the colormatrix filter doesn't allow
conversion to that standard either, which would have been a workaround.
If I could relate the coefficients as defined in the two files above I
might be able to add 634/smpte 170m (they use the same values) to
colormatrix to provide a workaround...
>
> Mike Scheutzow
>[...]
--
Tim
More information about the ffmpeg-user
mailing list