iPhone 3GS で ffmpeg を使用してビデオをデコードするための A という子スレッド、yuv データを表示するための B という別のスレッドがあります。デコード スレッドのレートはわずか 15 fps です。
更新: フレーム サイズは 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 プレーンを個別に抽出します。以下はスレッドメソッドを表示しています。