インテルのみ表示可能 — GUID: qlb1619516818150
Ixiasoft
インテルのみ表示可能 — GUID: qlb1619516818150
Ixiasoft
41.3.3. Warp IPのレイテンシー
Warp IPのレイテンシーは、次のとおりです。
- 入力フレームレートと出力フレームレートをロックした場合はフレームの4分の1からフレーム全体まで
- Use Easy warpをオンにした場合は1から2フレームの間、Use single memory bounceをオンにした場合は通常のレイテンシー動作
- Use single memory bounceをオフにした場合は通常のレイテンシー動作は2から3フレームの間
IPは、入力プロセスと出力プロセスの相対的なタイミングを制御しません。それらのタイミングは相互に非同期にすることができます。出力のダウンストリームにあるビデオ・パイプラインからのフロー制御により、IPからの出力ビデオデータの正確なタイミングが決まります。
単純な実装では、システム内の出力フレームは入力フレームとタイミング関係がありません。IPは、必要に応じてビデオデータのフレームをドロップしたり繰り返したりすることで、異なるフレームレートに自動的に適応します。
高度な実装では、入力フレームタイミングと出力フレームタイミングの間に存在する固定位相関係を使用して、入力フレームレートと出力フレームレートをロックできます。このフレームレート・ロックは、外部ゲンロックなどのシステム・レベル・デザインの一部として実装する必要があります。
次の図では、ビデオデータのアクティブフレームの垂直ブランキング期間のみを示しています。水平ブランキング期間は、アクティブビデオ期間内にあるものと想定します。
この図では、Use single memory bounceがオフの場合に、入力からエンジンを経由して出力まで、Warp IPを介したビデオフレーム (frame1) のバッファリングと処理を示しています。レイテンシーは2から3フレームです。出力におけるアクティブなビデオの終了は、次のフレームの処理の開始と同期します。
IPが入力フレーム全体 (frame1) を受信すると、内部処理エンジンはバッファリングされたフレームをメモリーから読み出すことができます。内部処理の正確なタイミングは出力フレームのタイミングと同期されるため、内部処理エンジンがframe1を使用する前に、IPは最大1フレームの遅延を経験する場合があります。IPがフレームの処理を完了すると、出力プロセスは結果のビデオデータの生成を開始します。
LowレイテンシーのWarp IP
この図では、入力および出力のビデオ・フレームレートと入力から出力への位相オフセットがロックされている場合のLowレイテンシー動作を示しています。
この図では、入力からエンジンを経由して出力に至るまでのWarp IPによるframe1のバッファリングと処理を示しています。この例のレイテンシーは、適用するワープ変換に応じて、約4分の1からフレーム全体までの範囲になります。
入力および出力フレームレート・オフセットをロックすると、IPはフレーム全体を格納する前に、メモリーにバッファリングされたビデオデータを使用できます。図では、入力および出力ビデオフレームの位相関係が固定されており、出力でのアクティブビデオの終了が内部処理の開始と一致しないことを示しています。
IPがフレームを受信している間に十分な入力データを格納するとすぐに、エンジンはframe1からのデータの処理を開始します。同様に、出力プロセスはframe1に関連付けられたビデオデータの生成を開始し、IPはエンジンによる処理後にそれをメモリーに書き込みます。内部処理の開始から出力プロセスがメモリーからデータを読み出し始めるまでの遅延は、IPが処理する出力画像の解像度に基づいて固定量になります。ただし、入力フレームの開始からフレームデータを使用して内部処理を開始できるまでの遅延は、ワープ変換の関数です。そのため、ソフトウェアAPIはこれらの遅延の計算をサポートします。
Lowレイテンシーの設定
Lowレイテンシーの動作を実現するには、IPで正しい設定をプログラムし、入力フレームと出力フレームに固定オフセットがあることを確認します。IPの外部のビデオシステムが固定オフセットを制御します。このオフセットには、必要なワープ変換に基づいた最小設定があります。IPのソフトウェアAPIの GenerateLatencyParams() 呼び出しは、Lowレイテンシー動作のための2つの設定の値を生成します。IPの設定の1つは、内部処理と出力でのアクティブビデオの生成の間の遅延をプログラムします。もう1つの設定は、入力フレームと出力フレーム間の遅延 (クロックサイクル単位) です。
必要なワープメッシュに加えて、GenerateLatencyParams() 呼び出しでは、設定を計算するために次の情報が必要です
System_clock – core_clock の周波数 (Hz)
Video_clock – axi4s_vid_out_0_clock の周波数 (Hz)
Full_height – 垂直ブランキングを含む、処理される解像度の全高 (ライン単位)
Frame_rate – 出力フレームレート (100分の1ヘルツ単位)
クロックレート、フレームレート、およびビデオフレームの全高がわかれば、IPはビデオデータの各ラインのクロック数を計算できます。また、必要なワープ変換によって暗示される最大ラインオフセットを調べることで、IPは必要な遅延のクロックサイクル数を計算します。
GenerateLatencyParams() 呼び出しは、WarpLatencyParams 構造体を介して2つの値を返します。これら2つの値は、次のとおりです。
_total_latency – 入力フレームと出力フレーム間の最小遅延 (axi4s_vid_out_0_clock クロックサイクル単位)
_output_latency – intel_vvp_warp_set_output_latency() 呼び出しを使用してIPに適用する値。詳細については、Warp IPのソフトウェアのコード例を参照してください。
ゼロ以外のclock_offset値を指定して intel_vvp_warp_set_output_latency() を呼び出すと、Warp IPコアがLowレイテンシー動作モードに切り替わります。intel_vvp_warp_set_output_latency() の呼び出しでclock_offset値をゼロにすると、Warp IPが通常のレイテンシー モードになります。
Easy Warp IPのレイテンシー
IPが最初の入力フレーム (frame0) 全体を受信すると、Warp IPの出力プロセスによってメモリーからバッファリングされたデータを読み出すことができます (1フレームのレイテンシーが発生します)。入力フレームレートと出力フレームレートをロックしない場合は、IPが出力ビデオデータを生成する前に最大1フレームの遅延が発生する可能性があり、合計で最大2フレームの遅延が発生します。