インテルのみ表示可能 — GUID: cvv1620125246820
Ixiasoft
1. Video and Vision Processing Suiteについて
2. Video and Vision Processing IPのスタートガイド
3. Video and Vision Processing IPの機能の説明
4. Video and Vision Processing IPインターフェイス
5. Video and Vision Processing IPレジスター
6. Video and Vision Processing IPのソフトウェア・プログラミング・モデル
7. Protocol Converter Intel® FPGA IP
8. 3D LUT Intel® FPGA IP
9. AXI-Stream Broadcaster Intel® FPGA IP
10. Bits per Color Sample Adapter Intel FPGA IP
11. Chroma Key Intel® FPGA IP
12. Chroma Resampler Intel® FPGA IP
13. Clipper Intel® FPGA IP
14. Clocked Video Input Intel® FPGA IP
15. Clocked Video to Full-Raster Converter Intel® FPGA IP
16. Clocked Video Output Intel® FPGA IP
17. Color Space Converter Intel® FPGA IP
18. Deinterlacer Intel® FPGA IP
19. FIR Filter Intel® FPGA IP
20. Frame Cleaner Intel® FPGA IP
21. Full-Raster to Clocked Video Converter Intel® FPGA IP
22. Full-Raster to Streaming Converter Intel® FPGA IP
23. Genlock Controller Intel® FPGA IP
24. Generic Crosspoint Intel® FPGA IP
25. Genlock Signal Router Intel® FPGA IP
26. Guard Bands Intel® FPGA IP
27. Interlacer Intel® FPGA IP
28. Mixer Intel® FPGA IP
29. Parallel Converter Intel® FPGA IPのピクセル
30. Scaler Intel® FPGA IP
31. Stream Cleaner Intel® FPGA IP
32. Switch Intel® FPGA IP
33. Tone Mapping Operator Intel® FPGA IP
34. Test Pattern Generator Intel® FPGA IP
35. Video and Vision Monitor Intel FPGA IP
36. Video Frame Buffer Intel® FPGA IP
37. Video Frame Reader Intel FPGA IP
38. Video Frame Writer Intel FPGA IP
39. Video Streaming FIFO Intel® FPGA IP
40. Video Timing Generator Intel® FPGA IP
41. Warp Intel® FPGA IP
42. デザイン・セキュリティー
43. Video and Vision Processing Suiteユーザーガイドの文書改訂履歴
23.4.1. Genlockコントローラーのフリーランニングの実現 (初期化またはロックからリファレンス・クロックNまで)
23.4.2. リファレンス・クロックNへのロック (Genlock Controller IPフリーランニングから)
23.4.3. VCXOホールドオーバーの設定
23.4.4. Genlock Controller IPの再起動
23.4.5. リファレンス・クロックN Newへのロック (リファレンス・クロックN Oldへのロックから)
23.4.6. リファレンス・クロックまたはVCXOベース周波数への変更 (p50およびp59.94ビデオ・フォーマット間の切り替え、またはその逆)
23.4.7. リファレンス・クロックの妨害 (ケーブルの引っ張り)
インテルのみ表示可能 — GUID: cvv1620125246820
Ixiasoft
8.5. 3D LUT IPのソフトウェアAPI
IPには、IPの必要なすべてのパラメーターをコンフィグレーションおよび制御するソフトウェア・ドライバーが含まれています。
図 16. ソフトウェア・ドライバーの使用例
intel_vvp_3d_lut_instance lut_0; ret = intel_vvp_3d_lut_init(&lut_0, (intel_vvp_core_base)LUT_0_BASE); if (ret == 0) { /* Load LUT buffer 0 by software */ if (load_3d_lut(&lut_0, 0) == 0) { /* Enable LUT processing */ intel_vvp_3d_lut_enable(&lut_0, true); } else { printf("Error loading LUT data: %d\n"); } } else { printf("Error initializing lut_0: %d\n", ret); }
ドライバーにはロード機能がありません。LUTエントリーデータを入手するには別の方法もあります。最も単純なものは、ソフトウェア・ソースコード内のコンパイル済みの構造からのものです。このメソッドの使用例は、次のとおりです。
int load_3d_lut(intel_vvp_3d_lut_instance* instance, uint8_t buffer) { uint16_t r_idx = 0, g_idx = 0, b_idx = 0; uint32_t table_idx = 0; while (table_idx < ((sizeof(lut_table)/sizeof(uint16_t)) - 4)) { int result = intel_vvp_3d_lut_load(instance, r_idx, g_idx, b_idx, buffer, lut_table[table_idx], lut_table[table_idx + 1], lut_table[table_idx + 2], lut_table[table_idx + 3]); if (result != 0) { return result; } table_idx += 4; if (++r_idx == LUT_TABLE_DIMENSION) { r_idx = 0; if (++g_idx == LUT_TABLE_DIMENSION) { g_idx = 0; if (++b_idx == LUT_TABLE_DIMENSION) { break; } } } } return 0; }
この例では、データはLUTエントリーごとに4つの要素 (4 * lut_dimension³) を含むフラット構造です。
次元とデータテーブルの定義は、次のとおりです。
#DEFINE LUT_TABLE_DIMENSION 17 const uint16_t lut_table[] = { 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0050, 0x0050, 0x0050, 0x0000, 0x0079, 0x0079, 0x0079, 0x0000, 0x0092, 0x0092, 0x0092, 0x0000, 0x00A6, 0x00A6, 0x00A6, 0x0000, 0x00B9, 0x00B9, 0x00B9, 0x0000, /* continues… 4913 lines total */
名前 | 説明 |
---|---|
intel_vvp_3d_lut_init | LUTインスタンスを初期化します。 |
intel_vvp_3d_lut_enable | LUT処理をイネーブルします。 |
intel_vvp_3d_lut_buffer_select | LUTバッファーを選択します。 |
intel_vvp_3d_lut_load | LUTエントリーをロードします。 |
intel_vvp_3d_lut_get_double_buffered | ダブルバッファーのコンフィグレーション・パラメーターを取得します。 |
intel_vvp_3d_lut_get_input_depth | 入力ストリームのビット解像度を取得します。 |
intel_vvp_3d_lut_get_lut_alpha_channel | アルファチャネルのサポート・コンフィグレーション・パラメーターを取得します。 |
intel_vvp_3d_lut_get_lut_depth | LUTストリームのビット解像度を取得します。 |
intel_vvp_3d_lut_get_dimension | LUTのサイズを取得します。 |
intel_vvp_3d_lut_get_output_depth | 出力ストリームのビット解像度を取得します。 |
intel_vvp_3d_lut_get_pixels_per_clock | クロックサイクルごとに送信されるピクセルの数です。 |
intel_vvp_3d_lut_init
- void intel_vvp_3d_lut_init( intel_vvp_3d_lut_instance* instance, intel_vvp_core_base base);
- 説明
- 3D LUTインスタンスを初期化します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- ベース - 3D LUT IPのベースアドレスへのポインター
- 戻り値
- 成功した場合はゼロ、それ以外の場合は負の整数
intel_vvp_3d_lut_enable
- void intel_vvp_3d_lut_enable( intel_vvp_3d_lut_instance* instance, int enable);
- 説明
- LUT処理をイネーブルします。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
-
イネーブル – LUT動作をイネーブルします。
- 0 – パススルー入力ストリームは変更されません。
- 1 – LUT処理をイネーブルします。
- 戻り値
- なし
intel_vvp_3d_lut_buffer_select
- int intel_vvp_3d_lut_buffer_select( intel_vvp_3d_lut_instance* instance, uint8_t buffer);
- 説明
- LUT行列バッファーを選択します (ダブル・バッファリングをイネーブルする必要あり)
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- バッファー - 選択されるバッファー (0または1)
- 戻り値
-
- 0 – 動作が成功しました。
- -1 - バッファー・パラメーターが範囲外であるか、ダブル・バッファリングがコンフィグレーションされていません。
intel_vvp_3d_lut_load
- int intel_vvp_3d_lut_load( intel_vvp_3d_lut_instance* instance, uint16_t r_idx, uint16_t g_idx, uint16_t b_idx, uint8_t buffer, uint16_t r_val, uint16_t g_val, uint16_t b_val, uint16_t a_val);
- 説明
- LUTテーブルにエントリーをロードします。パラメーターはテーブルのインデックスとテーブルエントリーのR/G/B/A値を指定します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- r_idx - 赤色のインデックス。範囲0から (LUT寸法 - 1)
- g_idx - 緑色のインデックス。範囲 0から (LUT寸法 - 1)
- b_idx - 青色のインデックス。範囲 0から (LUT寸法 - 1)
- バッファー - 範囲0から1 (ダブル・バッファー・コンフィグレーションの場合)
- r_val - 赤色の値。範囲0から (2lut_ Depth - 1)
- g_val - 緑色の値。範囲0から (2lut_ Depth - 1)
- b_val - 青色の値。範囲0から (2lut_ Depth - 1)
- a_val - アルファ値。LUTアルファをイネーブルする必要があります。そうでない場合は、値を0に設定する必要があります。
- 戻り値
-
- 0 - 成功
- -1 (r_idx/g_idx/b_idxが範囲外)
- -2 (バッファー・パラメーターが範囲外であるか、ダブル・バッファリングがコンフィグレーションされていない)
- -3 (アルファ値が設定されているがサポートされていない)
- -4 (r_val/g_val/b_valが範囲外)
intel_vvp_3d_lut_get_double_buffered
- uint8_t intel_vvp_3d_lut_get_double_buffered( intel_vvp_3d_lut_instance* instance);
- 説明
- ダブルバッファリングされたIPコンフィグレーションを取得します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
-
- 0 (ダブル・バッファー・オプションがコンフィグレーシされていない場合)
- 1 (ダブル・バッファー・オプションがコンフィグレーシされている場合)
intel_vvp_3d_lut_get_input_depth
- uint8_t intel_vvp_3d_lut_get_input_depth( intel_vvp_3d_lut_instance* instance);
- 説明
- 入力ストリームのビット解像度を取得します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
- 範囲は8から16 です。値は入力カラープレーンごとのビット数です。
intel_vvp_3d_lut_get_lut_alpha_channel
- uint8_t intel_vvp_3d_lut_get_lut_alpha_channel( intel_vvp_3d_lut_instance* instance);
- 説明
-
アルファチャネルのサポート・コンフィグレーション・パラメーターを取得します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
-
- 0 (アルファチャネルが設定されているがサポートされていない場合)
- 1 (アルファチャネルがサポートされている場合)
intel_vvp_3d_lut_get_lut_depth
- uint8_t intel_vvp_3d_lut_get_lut_depth( intel_vvp_3d_lut_instance* instance);
- 説明
- LUT処理ストリームのコンフィグレーションされたビット解像度を取得します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
- 範囲は8から16 です。値はLUTカラープレーンごとのビット数です。
intel_vvp_3d_lut_get_dimension
- uint8_t intel_vvp_3d_lut_get_dimension( intel_vvp_3d_lut_instance* instance);
- 説明
- コンフィグレーションされたLUTサイズを取得します。値は単一の寸法サイズです。寸法サイズがAの場合、LUTサイズは (A x A x A) エントリーになります。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
- 有効な値は {9、17、33、65} です。
intel_vvp_3d_lut_get_output_depth
- uint8_t intel_vvp_3d_lut_get_output_depth( intel_vvp_3d_lut_instance* instance);
- 説明
- LUT出力ストリームのビット解像度を取得します。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
- 範囲は8から16です。値は出力カラープレーンごとのビット数です。
intel_vvp_3d_lut_get_pixels_per_clock
- uint8_t intel_vvp_3d_lut_get_pixels_per_clock( intel_vvp_3d_lut_instance* instance);
- 説明
- 各ビデオ・クロック・サイクルで処理される入力ピクセルの数です。
- 引数
- インスタンス - 3D LUTソフトウェア・ドライバー・インスタンス構造体へのポインター
- 戻り値
- ピクセル数。範囲は1から8です。