は私がCVPixelBufferRefの配列を作成して再利用するには?私のアプリケーションで
- へのMP4ムービーを書き込むためのカスタムオーダーにAVAssetWriterInputPixelBufferAdaptorにそれらを後で追加24 CVPixelBufferRef
- を作成する必要があります。
VideoExport :: ADDFRAME関数は次の空CVPixelBufferRef生画素データと格納を受信します。デモコードは次のとおりです。
// .h
CVPixelBufferRef buffers[24];
// .mm
void VideoExport::addFrame(unsigned char * pixels, long frame_index) {
buffers[frame_index] = NULL;
CVPixelBufferCreateWithBytes(NULL,
frameSize.width,
frameSize.height,
kCVPixelFormatType_24RGB,
(void*)pixels,
frameSize.width * 3,
NULL,
0,
NULL,
&buffers[frame_index]);
}
ピクセルバッファが正常に表示されないようです。問題は、をbuffers[index]
に変更して別のフレームをムービーファイルに書き込もうとすると、同じフレームが再び上書きされることです。
保存されたフレームは、私がaddFrame
に送った最後のものと思われ、ユニークなバッファの配列を使用しようとしています。私はaddFrame
への呼び出しが以前のデータを上書きすると思われます。
注1:addFrame
に送信されたピクセルが一意であることをテストしました。
注2:addFrame
のすぐ内側のフレームにフレームを追加すると、生成されたムービーに固有のフレームがありますが、フレームオーダーをシャッフルできません。
の配列を作成して再利用する正しい方法は何ですか?CVPixelBufferRef? pixelBufferPool
が役に立ったら、どうすればいいですか?
ありがとうございます。