Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › D3D12_VIDEO_DECODE_TIER

D3D12_VIDEO_DECODE_TIER

列挙型
基底型i4

メンバー 4

名前10進16進説明
D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED00x0ビデオデコードはサポートされていません。
D3D12_VIDEO_DECODE_TIER_110x1

ティア 1 では、ハードウェアデコーダーは、アプリケーションが参照テクスチャをテクスチャ配列として割り当てることを要求します。これは、ハードウェアが個々のピクチャバッファーごとにフルサイズのポインターをサポートせず、代わりに 1 つのポインターとより限定的なビットオフセットしか持たないため、テクスチャがアドレス空間内で「近接」している必要があるというハードウェア要件に対応するためです。テクスチャ配列の詳細については、Introduction To Textures in Direct3D 11 を参照してください。

デコーダーハードウェアが、他のエンジンでの操作や別のビデオ操作ではサポートされない固有のメモリレイアウトを必要とする場合、デコーダーはプロファイルのサポートを照会された際に、D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT 構造体に D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED 構成フラグを設定することがあります。このフラグは、アプリケーションが参照を D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY フラグ付きで割り当てなければならないことを示します。出力を将来の参照フレームとして使用する必要がある場合、アプリケーションは D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS 構造体を使用して参照専用の出力を設定してください。ID3D12VideoCommandList::DecodeFrame に渡される出力フレームは、パイプラインの他の部分で使用できる D3D12 リソースであり、D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY フラグを持っていてはなりません。

圧縮入力バッファーに関するティア 1 の要件

  • 特定のフレームのすべてのスライスは順番どおりに配置され、かつ連続していなければなりません。つまり、スライス間にすき間があってはなりません。スライス制御バッファーは、この要件を満たすオフセットとサイズのパラメーターを指定する必要があります。
  • 最初のスライスは 128 バイト境界から開始しなければなりません。D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM 構造体に設定するオフセットは、128 バイトの倍数でなければなりません。
  • D3D12_MEMORY_POOL_L0 で割り当てられたバッファーからのデコードがサポートされます。これは常にシステムメモリですが、それでも D3D12 バッファーです。
  • 既定のプールである D3D12_MEMORY_POOL_L1 で割り当てられたバッファー (D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE で割り当てられたものを含む) からのデコードがサポートされます。
D3D12_VIDEO_DECODE_TIER_220x2

デコードティア 2 では、テクスチャをテクスチャ配列として参照することも、個別のテクスチャ 2D リソースの配列 (各リソースの配列サイズは 1) として参照することもできます。これは呼び出し側にとってより柔軟であり、ストリーミングビデオのように解像度が頻繁に変化するシナリオで重要です。テクスチャ配列は単一の単位としてしか割り当ておよび解放できないのに対し、個別のテクスチャ 2D リソースは個々に割り当ておよび解放できるためです。

デコードハードウェアが、他のエンジンでの操作や別のビデオ操作ではサポートされない固有のタイリング形式を必要とする場合、デコーダーはプロファイルのサポートを照会された際に、D3D12_FEATURE_DATA_VIDEO_DECODE_SUPPORT 構造体に D3D12_VIDEO_DECODE_CONFIGURATION_FLAG_REFERENCE_ONLY_ALLOCATIONS_REQUIRED 構成フラグを設定することがあります。このフラグは、アプリケーションが参照を D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY フラグ付きで割り当てなければならないことを示します。出力を将来の参照フレームとして使用する必要がある場合、アプリケーションは D3D12_VIDEO_DECODE_CONVERSION_ARGUMENTS 構造体を使用して参照専用の出力を設定してください。ID3D12VideoCommandList::DecodeFrame に渡される出力フレームは、パイプラインの他の部分で使用できる D3D12 リソースであり、D3D12_RESOURCE_FLAG_VIDEO_DECODE_REFERENCE_ONLY フラグを持っていてはなりません。

圧縮入力バッファーに関するティア 2 の要件

これらの要件はティア 1 の要件と同一です。

  • 特定のフレームのすべてのスライスは順番どおりに配置され、かつ連続していなければなりません。つまり、スライス間にすき間があってはなりません。スライス制御バッファーは、この要件を満たすオフセットとサイズのパラメーターを指定する必要があります。
  • 最初のスライスは 128 バイト境界から開始しなければなりません。D3D12_VIDEO_DECODE_COMPRESSED_BITSTREAM 構造体に設定するオフセットは、128 バイトの倍数でなければなりません。
  • D3D12_MEMORY_POOL_L0 で割り当てられたバッファーからのデコードがサポートされます。これは常にシステムメモリですが、それでも D3D12 バッファーです。
  • 既定のプールである D3D12_MEMORY_POOL_L1 で割り当てられたバッファー (D3D12_CPU_PAGE_PROPERTY_NOT_AVAILABLE で割り当てられたものを含む) からのデコードがサポートされます。
D3D12_VIDEO_DECODE_TIER_330x3このフィールドは予約済みです。

公式ドキュメント

ハードウェアビデオデコーダーのデコードティアを指定します。これにより、アプリケーションが定義するテクスチャおよびバッファーに必要な形式が決まります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

列挙メンバーの定義。HSP タブは #define global(値は16進)。

typedef enum D3D12_VIDEO_DECODE_TIER : int {
    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
    D3D12_VIDEO_DECODE_TIER_1 = 1,
    D3D12_VIDEO_DECODE_TIER_2 = 2,
    D3D12_VIDEO_DECODE_TIER_3 = 3
} D3D12_VIDEO_DECODE_TIER;
public enum D3D12_VIDEO_DECODE_TIER : int
{
    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
    D3D12_VIDEO_DECODE_TIER_1 = 1,
    D3D12_VIDEO_DECODE_TIER_2 = 2,
    D3D12_VIDEO_DECODE_TIER_3 = 3,
}
Public Enum D3D12_VIDEO_DECODE_TIER As Integer
    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0
    D3D12_VIDEO_DECODE_TIER_1 = 1
    D3D12_VIDEO_DECODE_TIER_2 = 2
    D3D12_VIDEO_DECODE_TIER_3 = 3
End Enum
import enum

class D3D12_VIDEO_DECODE_TIER(enum.IntEnum):
    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0
    D3D12_VIDEO_DECODE_TIER_1 = 1
    D3D12_VIDEO_DECODE_TIER_2 = 2
    D3D12_VIDEO_DECODE_TIER_3 = 3
// D3D12_VIDEO_DECODE_TIER
pub const D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED: i32 = 0;
pub const D3D12_VIDEO_DECODE_TIER_1: i32 = 1;
pub const D3D12_VIDEO_DECODE_TIER_2: i32 = 2;
pub const D3D12_VIDEO_DECODE_TIER_3: i32 = 3;
// D3D12_VIDEO_DECODE_TIER
const (
	D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED int32 = 0
	D3D12_VIDEO_DECODE_TIER_1 int32 = 1
	D3D12_VIDEO_DECODE_TIER_2 int32 = 2
	D3D12_VIDEO_DECODE_TIER_3 int32 = 3
)
const
  D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0;
  D3D12_VIDEO_DECODE_TIER_1 = 1;
  D3D12_VIDEO_DECODE_TIER_2 = 2;
  D3D12_VIDEO_DECODE_TIER_3 = 3;
// D3D12_VIDEO_DECODE_TIER
pub const D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED: i32 = 0;
pub const D3D12_VIDEO_DECODE_TIER_1: i32 = 1;
pub const D3D12_VIDEO_DECODE_TIER_2: i32 = 2;
pub const D3D12_VIDEO_DECODE_TIER_3: i32 = 3;
const
  D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED* = 0
  D3D12_VIDEO_DECODE_TIER_1* = 1
  D3D12_VIDEO_DECODE_TIER_2* = 2
  D3D12_VIDEO_DECODE_TIER_3* = 3
enum D3D12_VIDEO_DECODE_TIER : int {
    D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED = 0,
    D3D12_VIDEO_DECODE_TIER_1 = 1,
    D3D12_VIDEO_DECODE_TIER_2 = 2,
    D3D12_VIDEO_DECODE_TIER_3 = 3,
}
#define global D3D12_VIDEO_DECODE_TIER_NOT_SUPPORTED 0x0
#define global D3D12_VIDEO_DECODE_TIER_1             0x1
#define global D3D12_VIDEO_DECODE_TIER_2             0x2
#define global D3D12_VIDEO_DECODE_TIER_3             0x3