使用Opengles着色器显示YUV420数据太慢了

时间:2012-04-05 16:29:16

标签: iphone opengl-es ffmpeg yuv

我有一个名为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方法分别提取y u v plane。以下是显示线程方法。

0 个答案:

没有答案