AR# 68227

Video Common ライブラリ - ビデオ タイミング表にカスタム解像度のサポートを追加する方法

説明

ビデオ タイミング表にカスタム解像度のサポートを追加する方法を教えてください。

Video Common ライブラリのデフォルト タイミング表には Common タイミング表の多くが含まれていますが、アプリケーションの解像度を追加するにはどうすればよいですか。

ソリューション

Video Common には、カスタム解像度表を作成して登録するための API が含まれています。

特定の解像度を登録する方法の例は、次のとおりです。1 および 2 は、定数宣言が行われる場所 (.h ファイルなど) で実行できます。 

3 は、ランタイムで実行する必要があります。

1) モード ID 列挙を割り当てます。これらは XVIDC_VM_CUSTOM 定数よりも大きい値にする必要があります。

/* Assign Mode ID Enumeration. First entry Must be > XVIDC_VM_CUSTOM */
typedef enum {
    XVIDC_VM_3840x2160_30_P_SB = (XVIDC_VM_CUSTOM + 1),
    XVIDC_CM_NUM_SUPPORTED
} XVIDC_CUSTOM_MODES;

2) 追加する各カスタム解像度のエントリを含むカスタム表を作成します。

/* Create entry for each mode in the custom table */
const XVidC_VideoTimingMode XVidC_MyVideoTimingMode[(XVIDC_CM_NUM_SUPPORTED - (XVIDC_VM_CUSTOM + 1))] =
{
    { XVIDC_VM_3840x2160_30_P_SB, "3840x2160@30Hz (SB)", XVIDC_FR_30HZ,
        {3840, 48, 32, 80, 4000, 1,
         2160, 3, 5, 23, 2191, 0, 0, 0, 0, 1} }
};

3) この表をアプリケーションに登録します。

これは、ペリフェラルを初期化する前に実行できます。

/* User registers custom timing table */
  xil_printf("INFO> Registering Custom Timing Table with %d entries \r\n", (XVIDC_CM_NUM_SUPPORTED - (XVIDC_VM_CUSTOM + 1)));
  Status = XVidC_RegisterCustomTimingModes(XVidC_MyVideoTimingMode, (XVIDC_CM_NUM_SUPPORTED - (XVIDC_VM_CUSTOM + 1)));
  if (Status != XST_SUCCESS) {
      xil_printf("ERR: Unable to register custom timing table\r\n\r\n");
  }

注記: この表のフォーマットは、次の通りです。

/*
* This table contains the main stream attributes for various standard
* resolutions. Each entry is of the format:
* 1) ID: XVIDC_VM_x__(_RB = Reduced Blanking)
* 2) Resolution naming: "x@"
* 3) Frame rate: XVIDC_FR_
* 4) Video timing structure:
* 1) Horizontal active resolution (pixels)
* 2) Horizontal front porch (pixels)
* 3) Horizontal sync width (pixels)
* 4) Horizontal back porch (pixels)
* 5) Horizontal total (pixels)
* 6) Horizontal sync polarity (0=negative|1=positive)
* 7) Vertical active resolution (lines)
* 8) Frame 0: Vertical front porch (lines)
* 9) Frame 0: Vertical sync width (lines)
* 10) Frame 0: Vertical back porch (lines)
* 11) Frame 0: Vertical total (lines)
* 12) Frame 1: Vertical front porch (lines)
* 13) Frame 1: Vertical sync width (lines)
* 14) Frame 1: Vertical back porch (lines)
* 15) Frame 1: Vertical total (lines)
* 16) Vertical sync polarity (0=negative|1=positive)
*/
AR# 68227
日付 08/18/2017
ステータス アクティブ
種類 一般
IP