1

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 ですね。

どんな助けでも感謝します。

4

1 に答える 1