如何将 YUV 帧数据写入 CGContext?
请帮我,
非常感谢。
您需要做什么以及一些伪代码的一般路线图如下所示:
首先创建一个要绘制的 CG 位图上下文。此处提供了像素格式列表。正如您在 iOS 上看到的,您唯一真正的选择是具有 16 bpp 或 32 bpp 和 alpha 通道的 RGB 风格。Mac OS X 上有更多选项,但您仍然希望使用某种 RGB 风格。
CGColorSpaceRef rgbColorSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef frameContext = CGBitmapContextCreate(NULL, w, h, 8, bytesPerRow, rgbColorSpace, kCGImageAlphaNoneSkipFirst);
CGColorSpaceRelease(rgbColorSpace);
void * data = CGBitmapContextGetData(frameContext);
将您的 YUV 帧数据转换为 RGB 并将 RGB 数据写入 CG 位图上下文的数据缓冲区。您可以在YUV的 Wikipedia 页面上获取有关如何执行此操作的公式。
将 CG 位图上下文转换为 CG 图像。
CGImageRef frameImage = CGBitmapContextCreateImage(frameContext);
将 CG 图像绘制到 CG 上下文中。
CGContextDrawImage(myCGContext, myCGRect, frameImage);