switch (frame->format) {
case SDL_FCC_I420:
break;
case SDL_FCC_YV12:
planes[1] = 2;
planes[2] = 1;
break;
default:
NSLog(@"[yuv420p] unexpected format %x\n", frame->format);
return;
}
if ([self beginCommit]) {
for (int i = 0; i < 3; ++i) {
int plane = planes[i];
glBindTexture(GL_TEXTURE_2D, self.program.mTextureUniformHandle[i]);
glTexImage2D(GL_TEXTURE_2D,
0,
GL_LUMINANCE,
widths[plane],
heights[plane],
0,
GL_LUMINANCE,
GL_UNSIGNED_BYTE,
pixels[plane]);
}
[self postCommit];
self.mRendererBegin = YES;
[self.sizeContext updateTextureWidth:frame->w height:frame->h];
GLenum errorCode = glGetError();
if (errorCode)
{
printf("glGetError:%d\n", errorCode);
//throw;
}
}
(void) texture:(MDVideoFrame*)frame{
dispatch_sync(dispatch_get_main_queue(), ^{
int planes[3] = { 0, 1, 2 };
const GLsizei widths[3] = { frame->pitches[0], frame->pitches[1], frame->pitches[2] };
const GLsizei heights[3] = { frame->h, frame->h / 2, frame->h / 2 };
const GLubyte *pixels[3] = { frame->pixels[0], frame->pixels[1], frame->pixels[2] };
});
} 你好我播放视频的时候报[yuv420p] unexpected format 4254565f 可能是视频分辨率过大导致的 请问该怎么解决呢