1

我有一个名为 A 的子线程用于在 iPhone 3GS 上使用 ffmpeg 解码视频,另一个名为 B 的线程用于显示 yuv 数据,在线程 B 中,我使用 glSubTexImage2D 上传 YUV 纹理,然后在着色器中将 yuv 数据转换为 RGB,但帧解码线程中的速率只有 15fps。为什么?

更新: 帧大小为 720 * 576。我还发现了一些有趣的事情,如果我不启动显示 YUV 数据的线程,解码线程中计算的帧速率是 22 fps,否则为 15 fps。所以我认为我的显示方法一定是低效的。代码如下。

我在解码线程中有一个回调:

typedef struct _DVDVideoPicture
{
   char *plane[4];
   int iLineSize[4];
}DVDVideoPicture;

void YUVCallBack(void *pYUVData, void *pContext)
{
   VideoView *view = (VideoView *)pContext;
   [view.glView copyYUVData:(DVDVideoPicture *)pData];
   [view calculateFrameRate];
}

copyYUVData 方法分别提取 yuv 平面。以下是显示线程方法。

4

0 回答 0