1

如何将 YUV 帧数据写入 CGContext?

请帮我,

非常感谢。

4

1 回答 1

2

您需要做什么以及一些伪代码的一般路线图如下所示:

  1. 首先创建一个要绘制的 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);
    
  2. 将您的 YUV 帧数据转换为 RGB 并将 RGB 数据写入 CG 位图上下文的数据缓冲区。您可以在YUV的 Wikipedia 页面上获取有关如何执行此操作的公式。

  3. 将 CG 位图上下文转换为 CG 图像。

    CGImageRef frameImage = CGBitmapContextCreateImage(frameContext);
    
  4. 将 CG 图像绘制到 CG 上下文中。

    CGContextDrawImage(myCGContext, myCGRect, frameImage);
    
于 2012-07-17T17:15:49.547 回答