CVPixelBufferRef
にデータを読み込むためにglReadPixels
を使用しています。私はCVPixelBufferRef
を入力としてAVAssetWriter
に入力します。残念ながら、ピクセルフォーマットは不一致であるようです。ピクセルフォーマット、CVPixelBufferRefs、glReadPixels
私はAVAssetWriter
がARGBフォーマットの画素データを望んでいる間glReadPixels
がRGBA形式でピクセルデータを返していると思います。変換する最良の方法は何ですかRGBA〜ARGB?ここで
は、私がこれまで試したものです:ARGB =(RGBA >> 8)の線に沿って
- ビット操作を|中間ステップ
CVPixelBufferRefは添え字をサポートしていないようですので、ビット操作が機能しなかったとしてCGImageRef
を用いて(RGBA < < 24)
CGImageRef
中間ステップは機能しますが、パフォーマンスが低下する可能性があるコードを50行追加したくないと思います。
どのようにCVPixelBufferRefを取得していますか?あなたはCVPixelBufferCreateを呼び出していますか?もしそうなら、あなたはpixelFormatTypeパラメータとして何を渡していますか?どの形式がglReadPixelsに渡されますか? –
'kCVPixelFormatType_32ARGB'を' CVPixelBufferCreate'に渡しています。 glReadPixelsに 'GL_RBGA'を渡します。私は 'CVPixelBufferCreate'にRBGAフォーマットを渡そうとしましたが、動作しませんでした(悪い色かアプリがクラッシュしました)。 – MrDatabase