私の目的は、ビデオファイルの複数のフレームをデコードし、デコードされたフレームをFIFOバッファーに蓄積して、後で読み取ることです。パケットをAVFRamemFrameにデコードします。
avcodec_decode_video2(mCodecContext、mFrame、&frameFinished、&mPacket);
通常、YUVフレームをmFrame-> data [n] [0]からFIFOバッファーにコピーすることができますが、memcpyを可能な限り削減しようとしています。したがって、mFrame-> data [n] [0]をコピーする代わりに、mFrame(それが指すフレームよりもはるかに小さい)をバッファーに格納したいだけです。読み取りに関しては、それをフェッチして、データ。
私はこれをやろうとしましたが、うまくいきませんでした。AVFrameはバッファからフェッチされますが、画面に表示すると、ビデオはフリーズしたように見えます。パケットをデコードするたびに同じmFrameを使用して上書きしていると思われるかもしれませんが、そうではありません。デコードループで毎回新しいAVFrame*を作成しています。
この問題は、avcodecの動作に関連していますか?何か案は?
ありがとうマイク