Как конвертировать RGB из YUV420p для кодировщика ffmpeg?

Я хочу сделать .avi видео файл из растровых изображений с использованием кода C ++. Я написал следующий код:

//Get RGB array data from bmp file
uint8_t* rgb24Data = new uint8_t[3*imgWidth*imgHeight];
hBitmap = (HBITMAP) LoadImage( NULL, _T("myfile.bmp"), IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE);
GetDIBits(hdc, hBitmap, 0, imgHeight, rgb24Data , (BITMAPINFO*)&bmi, DIB_RGB_COLORS);

/* Allocate the encoded raw picture. */
AVPicture dst_picture;
avpicture_alloc(&dst_picture, AV_PIX_FMT_YUV420P, imgWidth, imgHeight);

/* Convert rgb24Data to YUV420p and stored into array dst_picture.data */
RGB24toYUV420P(imgWidth, imgHeight, rgb24Data, dst_picture.data); //How to implement this function?

//code for encode frame dst_picture here

Моя проблема в том, как реализоватьRGB24toYUV420P() функция, эта функция будет конвертироватьRGB24 данные из массива rgb24Data toYUV420p и сохранить в массивdst_picture.data для кодировщика ffmpeg?

Ответы на вопрос(2)

Ваш ответ на вопрос