On Mon, Dec 1, 2008 at 7:52 AM, Thibault Daoulas <
[EMAIL PROTECTED]> wrote:

> Hi,
>    I know there has been several questions about how sws_scale works,
> and I thought I had it clear. However even after reading some examples
> in swscale-example.c and ffmpeg.c, I do not manage to make my YUV420p ->
> RGB conversion work.
> Basically I have a raw data stored in YUV420p format (in a u_char*), but
> in order to use it as a texture on my OpenGL primitive, I want do the
> conversion to RGB.
> Here is what I do :
>
>  sws_src_stride[0] = width_;
>  sws_src_stride[1] = sws_src_stride[2] = width_/2;
>  sws_tar_stride[0] = outw_*bytes_per_pixel;
>  sws_tar_stride[1] = sws_tar_stride[2] = 0;
>
>  sws_tar[0] = pixbuf_;
>  sws_tar[1] = sws_tar[2] = NULL;


you might find the function
avpicture_fill<http://www.irisa.fr/texmex/people/dufouil/ffmpegdoxy/imgconvert_8c.html#2884d6046e625b2b6eb3561ee87f8abc>usefull
as it fills the strides for you


>
>
>  sws_context = sws_getContext(width_, height_, PIX_FMT_YUV420P, outw_,
> outh_, PIX_FMT_RGB32, flags, NULL, NULL, NULL);
>
>  sws_src[0] = (uint8_t*)frm;
>  sws_src[1] = sws_src[0] + framesize_;
>  sws_src[2] = sws_src[1] + framesize_/4;
>
>  sws_scale(sws_context, sws_src, sws_src_stride, 0, height_, sws_tar,
> sws_tar_stride);
>
> Then my question is, how does sws_tar contain the RGB data ? And
> consequently how should it be transferred to my opengl texture loading
> function ?
> Thanks for any help, I do not have it quite clear what the fields of the
> u_int * dst[]; in the libavcodec stand for, and I doubt they represent
> each of them one channel r, g, b...
>
> Thibault.
>

RGB32 is a packed format. this means that sws_tar[0] will contain the
pointer to the entire RGB data.
the data is packed like so (exceprt from www.fourcc.org )

top 8 bits of each u_int32 unused, and the RGB is accessed using this mask

> Red 0x00FF0000  Green 0x0000FF00  Blue 0x000000FF
_______________________________________________
libav-user mailing list
[email protected]
https://lists.mplayerhq.hu/mailman/listinfo/libav-user

Reply via email to