NV12 フレームがバイト配列としてメモリにあるとします。知っている:
- その幅と高さ
- そのストライド (パディングを含むラインの合計幅)。これは、NV12 仕様に従って Y および UV コンポーネントで同じです
- Y の開始位置、U の開始位置は Y + (ストライド * 高さ)、V の開始位置は U + 1 (U とインターリーブ) です。
これは私がこれまでに持っているものです:
SwsContext* context = sws_getContext(frameWidth, frameHeight, AV_PIX_FMT_NV12, frameWidth, frameHeight, AV_PIX_FMT_RGB32, 0, nullptr, nullptr, nullptr);
sws_scale(context,
したがって、sws_scaleへのパラメーターがどうあるべきかわかりません。
- srcSlice : バイト配列へのポインタ? どうやらポインターへのポインターである必要がありますが、私が持っているのは単なるバイトの 1 次元配列です。
- srcStride : どうやらストライドの配列が必要なようですが、ファイル全体で 1 つのストライドしかありません。要素が 1 つだけの配列を渡す必要がありますか?
- srcSliceY : 私が推測する最初のバイトへのオフセット? そのときは 0 のはずです。
- srcSliceH : 私が推測するフレームの高さ
- dst : もう一度、ポインターへのポインターですが、宛先出力は実際には単なる別のバイト配列です...
- dstStride : 幅 * 4 ですね。
どんな助けでも感謝します。