Я хочу отображать видео на карту воспроизведения видео, если формат пикселей - RGBA / BGRA, я могу записывать видеоданные в буфер карты, потому что это так просто, но если формат пикселей - YUV422 / YUV420, это непросто (при по крайней мере, для меня), и я не знаю, как записать 3 буфера данных Y, U, V в ОДИН буфер карты воспроизведения. Я погуглил, но не смог найти свой ответ.
Пожалуйста, посмотрите следующий мой фрагмент кода и комментарии:
if(f== SDL_PIXELFORMAT_BGRA32)
{
ret = SDL_UpdateTexture(*tex, NULL, frame->data[0], frame->linesize[0]); //the SDL display video perfectly
if (myCardBuffer)
{
int straid = frame->linesize[0] * frame->height;
memcpy(myCardBuffer, frame->data[0], straid); //card frame is bmdFormat8BitBGRA and works perfectly
}
}
else if (f == SDL_PIXELFORMAT_IYUV) // Planar mode: Y + U + V (3 planes)
{
ret = SDL_UpdateYUVTexture(*tex, NULL,
frame->data[0], frame->linesize[0],frame->data[1], frame->linesize[1], frame->data[2], frame->linesize[2]);//the SDL display video perfectly
if (myCardBuffer)
{
//card frame is bmdFormat8BitYUV but I dont know how to write 3 Y,U,V data buffers to it
}
}
и это информация о формате пикселей карты:
введите описание изображения здесь
Вопрос: Как записать видеоданные YUV422 / YUV420 (буферы Y, U, V) в буфер карты?