1

YUVフレームデータをCGContextに書き込むにはどうすればよいですか?

私を助けてください、

どうもありがとう。

4

1 に答える 1

2

いくつかの疑似コードとともに行う必要があることの一般的なロードマップは次のようになります。

  1. まず、描画する CG ビットマップ コンテキストを作成します。のピクセル形式のリストは、こちらから入手できます。iOS でわかるように、唯一の実際のオプションは、16 bpp または 32 bpp とアルファ チャネルを使用した 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のウィキペディア ページで、これを行う方法の式を取得できます。

  3. CG ビットマップ コンテキストを CG イメージに変換します。

    CGImageRef frameImage = CGBitmapContextCreateImage(frameContext);
    
  4. CG イメージを CG コンテキストに描画します。

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