YUVフレームデータをCGContextに書き込むにはどうすればよいですか?
私を助けてください、
どうもありがとう。
いくつかの疑似コードとともに行う必要があることの一般的なロードマップは次のようになります。
まず、描画する 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);
YUV フレーム データを RGB に変換し、RGB データを CG ビットマップ コンテキストのデータ バッファーに書き込みます。YUVのウィキペディア ページで、これを行う方法の式を取得できます。
CG ビットマップ コンテキストを CG イメージに変換します。
CGImageRef frameImage = CGBitmapContextCreateImage(frameContext);
CG イメージを CG コンテキストに描画します。
CGContextDrawImage(myCGContext, myCGRect, frameImage);