Android 如何用AVPicture格式ffmpeg表示的帧更新SDL纹理

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

我从ffmpeg接收YUV格式的帧,并将其转换为RGB格式,如下所示:

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图像进行检查。