avcodec YUV a RGB

Estoy tratando de convertir un marco YUV a RGB usando libswscale.

Aquí está mi código:

AVFrame *RGBFrame;
SwsContext *ConversionContext;

ConversionContext = sws_getCachedContext(NULL, FrameWidth, FrameHeight, AV_PIX_FMT_YUV420P, FrameWidth, FrameHeight, AV_PIX_FMT_RGB24, SWS_BILINEAR, 0, 0, 0);
RGBFrame = av_frame_alloc();

avpicture_fill((AVPicture *)RGBFrame, &FillVect[0], AV_PIX_FMT_RGB24, FrameWidth, FrameHeight);

sws_scale(ConversionContext, VideoFrame->data, VideoFrame->linesize, 0, VideoFrame->height, RGBFrame->data, RGBFrame->linesize);

Mi programa hace SEGFAULT en la función sws_scale.

VideoFrame es una estructura AVFrame que contiene mi marco decodificado.

Creo que esto se debe a que el marco YUV proviene de avcodec_decode_video2, que devuelve una matriz como esta:

VideoFrame->data[0] // Y array, linesize = frame width
VideoFrame->data[1] // U array, linesize = frame width/2
VideoFrame->data[2] // V array, linesize = frame width/2

Mientras que YUV420P tiene teóricamente solo un plano (según Wikipedia, YUV420P es un formato plano, entonces los datos Y, U, V se agrupan). Entonces, no sé cómo convertir mi matriz donde los datos Y, U, V se separan en RGB24, usando swscale.

Por favor ayudame, gracias :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta