Hi all!

I use libav to decode MJPEG frames from IP-camera and to show some pixels from 
them on a SDL-surface.
SDL takes only RGB pixels so I have to convert YUV from MJPEG frame to RGB.
I have AVFrame after avcodec_decode_video() and as I see, there data[0] stands 
for Y component, data[1] - V component and data[2] - U component.
Also, U and V components arrays are twice shorter, so that 1 U or V component 
stands for 2 Y components.
Then I use formulas found in wikipedia to convert YUV to RGB:

R=Y + 1.370705*(U - 128);
G=Y - 0.698001*(V - 128) - 0.337633*(U - 128);
B=Y + 1.732446*(V - 128);

But in final picture I got colors mismatch in highly white and highly black 
regions.
For example in pixels that should be black, I have blue or red pixels, and in 
white regions - only green.

So I have two questions:
1) Am I right in my vision of YUV components position in AVFrame->data arrays ?
2) Is there any way to solve problems with colors mismatch?


_______________________________________________
Libav-user mailing list
[email protected]
http://ffmpeg.org/mailman/listinfo/libav-user

Reply via email to