cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

ビデオ シリーズ 30 –インターレース ビデオについて

kshimizu
Xilinx Employee
Xilinx Employee
3 0 719

本ブログは英語版のVideo Series 30 – Understanding Interlaced Videoを翻訳したものです。

 

インターレース ビデオとプログレッシブ ビデオの違いについて

以前にビデオ シリーズを読んだことがあるなら、「ビデオ初心者シリーズ 16: VTC IP を使用したビデオ タイミングについて」の記事で、プログレッシブ ビデオとインターレース ビデオについて触れたことを覚えていてくださるかもしれません。違いについては後ほどのビデオ シリーズにて説明すると述べたので、今回はこの違いについて説明します。

それでは、プログレッシブ ビデオとインターレース ビデオについて説明します。

プログレッシブ ビデオ (またはノンインターレース) は、ビデオのデフォルト設定です。プログレッシブ ビデオでは、フレームごとにすべてのライン (走行線) のすべてのピクセル値が送信されます。

帯域幅を抑えたい場合は、インターレース ビデオを使用できます。インターレース ビデオでは、半分のラインだけが送信されます。たとえば、あるフレームの奇数ラインのみが転送された後、次のフレームの偶数ラインのみが送信されます。

1.png

2.png

インターレース ビデオでは、ラインの半分を含んだフレームをフィールドと呼びます。

インターレースのフィールドを作成するために各フレームの半分のラインを送信することを、走査線の間引きと呼びます。ただし、この方法では、色または強度に垂直方向の急激な遷移がある場合にちらつきが発生することがあります。

より優れた方法とされる垂直フィルターでは、複数のプログレッシブ フレームを使用してインターレース フィールドが作成されます。

たとえば、2 つの連続するフレームの最初のラインの平均値を使用して、フィールドの最初のラインを作成できます。

 

 

AXI4-Stream でインターレース コンテンツを転送する方法

AXI4-Stream インターフェイスでは、インターレース コンテンツの送信はプログレッシブ コンテンツの送信と類似しています。tuser 信号はフィールドの最初のピクセルに対してアサートされ、tLast 信号はフィールドの最後のピクセルに対してアサートされます。

唯一の違いは fid 信号です。この信号はプログレッシブ ビデオには必要ありません。プログレッシブ ビデオでは 0 に接続する必要があります。fid 信号は、奇数または偶数のフィールドが現在送信されているかどうかを示すために使用されます。このため、この信号はフィールドごとに切り替わります。

3.jpg

 

 

インターレース コンテンツをプログレッシブ コンテンツに変換

一部のアプリケーションでは、インターレース ビデオ データをプログレッシブ ビデオに変換する必要があります。この操作は、デインターレースと呼ばれます。

ザイリンクス デバイスでは、Video Processing Subsystem (VPSS) IP を使用してインターレース ビデオをプログレッシブ ビデオに変換できます。

 

 

ザイリンクス VPSS IP を使用したデインターレースの例

添付のサンプル デザインでは、Video Processing Subsystem IP がスケーラー専用として設定されています。

このデザインは、「ビデオ シリーズ 28: カラー スペース コンバーター モードでの VPSS IP の使用」に基づいています。

Vivado 2019.1 では、ザイリンクスの Test Pattern Generator を使用してインターレース コンテンツを生成できます。これをインターレース ソースとして使用しています。

 

ビデオ シリーズ 28 デザインと比較した際のハードウェアの変更

この例では、VPSS をデインターレース専用に設定するために若干の変更を加えただけです (ビデオ シリーズ 28 の例では、カラースペース コンバーターが設定されていました)

  • VPSS [Video Processing Functionality] 設定を [Deinterlacing Only] (デインターレース専用) に変更しました。

4.jpg

  • [Deinterlacer] タブで [Enable Motion Adaptative Deinterlacing] オプションをオンのままにしました。このオプションがオンのときは、VPSS でフレーム バッファーが使用され、メモリへのアクセスには AXI Memory Mapper インターフェイスが使用されます。

5.jpg

  • AXI4 メモリ マップド インターフェイスを PS DDR に接続しました。

6.jpg

  • 最後に、ストリームがインターレースされるで、TPG の fid 信号を VPSS に接続しました。

7.jpg

 

ビデオ シリーズ 28 のアプリケーションと比較した際のソフトウェアの変更

ビデオ シリーズ 28 のアプリケーションと比較したとき、若干の変更をアプリケーションに加える必要があります。

  • VPSS ではカラー変換を実行しないので、入力と出力の両方でカラー スペースを YUV422 に固定します。

XVidC_ColorFormat colorFmtIn = XVIDC_CSF_YCRCB_422;

  • TPG を設定する場合、高さは入力の高さを 2 で割った値にします。

app_hdmi_conf_tpg(&tpg_inst, Height/2, Width, colorFmtIn, XTPG_BKGND_COLOR_BARS);

  • TPG で出力をインターレースに設定します。

app_hdmi_conf_tpg_interlaced(&tpg_inst, 1);

  • 入力ストリームはインターレースとして設定します。

StreamIn.IsInterlaced   = 1;

  • VPSS 内の DMA エンジンで使用されるベース アドレスを定義する必要があります。この設定は PSS を初期化する (XVprocSs_CfgInitialize) 前に実行する必要があります。

XVprocSs_SetFrameBufBaseaddr(&VprocInst,0x10600000);

 

デザインの生成

  1. チュートリアル ファイルをダウンロードし、フォルダーを解凍します。
  2. Vivado 2019.1 を開きます。
  3. [Tcl Console] ウィンドウで、cd コマンドを使用して (cd XVES_0030/hw)、ZIP 解凍ディレクトリに移動します。
  4. [Tcl Console] ウィンドウで、source コマンドを使用してスクリプト tcl (source ./create_proj.tcl) を実行します
  5. BD 出力ファイルを生成し、合成、インプリメンテーションを実行し、ビットストリームを生成します。
  6. ビットストリームを含むハードウェアを XVES_0030/sw/sdk_export にエクスポートします。
  7. Windows メニューまたはコマンド ラインから Xilinx Software Command Line Tools (XSCT) 2019.1 を起動します。

・Windows メニューで次を実行します。

[スタート] → [すべてのプログラム] → [Xilinx Design Tools] → [Xilinx Software Command Line Tool 2019.1] をクリックします。

・コマンド ラインで次を実行します。

xsct コマンドを使用します (SDK 2019.1 用の環境変数を設定する必要があります。)

8. xsct で cd コマンドを使用して XVES_0030/sw に移動します。

9. source create_SW_proj.tcl コマンドを使用します。

10. SDK を開き、XVES_0030/sw/sdk_workspace をワークスペースとして選択します。

 

 

このビデオ シリーズ エントリはいかがでしたか?

  • [Kudos] ボタン  をクリックして Kudos (拍手) しましょう。kudos.JPG

     

  • [Share] ボタン をクリックして、ソーシャル メディアで共有してください。share.JPG

     

 

  • このトピックにコメントしたり、新しいトピックをフォーラムで作成し質問してください。

 

 

ビデオ シリーズについて