Android 如何用AVPicture格式ffmpeg表示的帧更新SDL纹理
我从ffmpeg接收YUV格式的帧,并将其转换为RGB格式,如下所示:Android 如何用AVPicture格式ffmpeg表示的帧更新SDL纹理,android,ffmpeg,video-streaming,sdl,sdl-2,Android,Ffmpeg,Video Streaming,Sdl,Sdl 2,我从ffmpeg接收YUV格式的帧,并将其转换为RGB格式,如下所示: sws_scale(pSwsCtx, (const uint8_t * const *) sFrame->data, sFrame->linesize, 0, pCodecCtx->height, dFrameRGB2
sws_scale(pSwsCtx, (const uint8_t * const *) sFrame->data,
sFrame->linesize, 0, pCodecCtx->height,
dFrameRGB24->data,
dFrameRGB24->linesize);
现在我有一个SDL2中的纹理,其格式为SDL_PIXELFORMAT_RGB24
问题:
如何将dFrameRGB24[ie AVPicture]更新为SDL纹理
因为
SDL_UpdateTexture需要原始数据和每行的像素数
int SDL_UpdateTexture(SDL_Texture* texture,
const SDL_Rect* rect,
const void* pixels,
int pitch)
何处为
AVPicture具有以下结构
uint8_t * data [AV_NUM_DATA_POINTERS]
pointers to the image data planes
int linesize [AV_NUM_DATA_POINTERS]
number of bytes per line
我怎样才能达到同样的效果?请帮帮我 您必须在SDL2中使用RGB24纹理吗?您还可以对纹理使用
SDL\u PIXELFORMAT\u IYUV
。这样就不需要从YUV到RGB的转换了。没错,更新YUVTexture平均需要50到80毫秒,我无法显示30 fps。因此,考虑使用RGB图像进行检查。