Here is a somewhat improved routine to calculate colors in colorspace.h, using the round() function. It is for calculating BT.601 and BT.709 colors. The rounding is very important for accurate colors.
Is anyone else concerned about accurate colors in ffpeg? ================================================================================== #include "..\include\stdio.h" #include "..\include\math.h" //coefficients #define R601 0.299 #define G601 0.587 #define B601 0.114 #define R709 0.2126 #define G709 0.7152 #define B709 0.0722 float Cr,Cb,y; int r, g, b; void encode(int r, int g, int b, int colorspace) { if(colorspace == 601){ //use BT.601 color space y = (r*R601) + (g*G601) + (b*B601); Cr = (r * R601) - y; Cb = (b * B601) - y; r = round((Cr + y) / R601); g = round(-((Cr + y + Cb) / G601)); b = round((y + Cb) / B601); } else { //use BT.709 color space y = (r*R709) + (g*G709) + (b*B709); Cr = (r * R709) - y; Cb = (b * B709) - y; r = round((Cr + y) / R709); g = round(-((Cr + y + Cb) / G709)); b = round((y + Cb) / B709); } printf("%i\n", r); printf("%i\n", g); printf("%i\n", b); } int main(void){ // encode rgb colors encode(255,128,0,601); //use 601 or 709 as last argument } -----Original Message----- From: Michael Niedermayer <michae...@gmx.at> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Sent: Wed, Jun 3, 2015 11:52 am Subject: Re: [FFmpeg-devel] colorspace.h On Tue, Jun 02, 2015 at 02:28:59AM -0400, Chris wrote: > Hello - > > I have found what I believe to be some questionable code in colorspace.h. I have modified the code to what I believe is correct but am unable to compile ffmpeg myself on Windows to test my modifications, despite spending many hours trying to do so and reading several how-to's. > > We can discuss the code changes here if people would like, but someone who is better equipped to compile ffmpeg would have to compile it. can you post a patch that shows the modifications and explain what is wrong before and how its improved Thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB During times of universal deceit, telling the truth becomes a revolutionary act. -- George Orwell _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel