Win32 API 日本語リファレンス
ホームGraphics.Direct3D11 › D3D11_VIDEO_DECODER_CONFIG

D3D11_VIDEO_DECODER_CONFIG

構造体
サイズx64: 100 バイト / x86: 100 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
guidConfigBitstreamEncryptionGUID16+0+0ビットストリーム データ バッファーが D3D11CryptoSession の仕組みを使用して暗号化される場合、この GUID は 0 に設定します。暗号化を適用しない場合、値は DXVA_NoEncrypt です。ConfigBitstreamRaw が 0 の場合、値は DXVA_NoEncrypt でなければなりません。
guidConfigMBcontrolEncryptionGUID16+16+16マクロブロック制御データ バッファーが D3D11CryptoSession の仕組みを使用して暗号化される場合、この GUID は 0 に設定します。暗号化を適用しない場合、値は DXVA_NoEncrypt です。ConfigBitstreamRaw が 1 の場合、値は DXVA_NoEncrypt でなければなりません。
guidConfigResidDiffEncryptionGUID16+32+32残差差分デコード データ バッファーが D3D11CryptoSession の仕組みを使用して暗号化される場合、この GUID は 0 に設定します。暗号化を適用しない場合、値は DXVA_NoEncrypt です。ConfigBitstreamRaw が 1 の場合、値は DXVA_NoEncrypt でなければなりません。
ConfigBitstreamRawDWORD4+48+48ホスト デコーダーが生のビットストリーム データを送信するかどうかを示します。値が 1 の場合、ピクチャーのデータは生のビットストリーム コンテンツとしてビットストリーム バッファーで送信されます。値が 0 の場合、ピクチャー データはマクロブロック制御コマンド バッファーを使用して送信されます。ConfigResidDiffHost または ConfigResidDiffAccelerator のいずれかが 1 の場合、値は 0 でなければなりません。
ConfigMBcontrolRasterOrderDWORD4+52+52マクロブロック制御コマンドがラスター スキャン順であるか、任意の順序であるかを指定します。値が 1 の場合、各マクロブロック制御コマンド バッファー内のマクロブロック制御コマンドはラスター スキャン順です。値が 0 の場合、順序は任意です。一部の種類のビットストリームでは、ラスター順を強制すると、処理しなければならないマクロブロック制御バッファーの数が大幅に増えるか、ホスト側で制御情報を並べ替える必要が生じます。そのため、任意の順序をサポートする方が効率的な場合があります。
ConfigResidDiffHostDWORD4+56+56ホストの残差差分構成を格納します。値が 1 の場合、一部の残差差分デコード データが空間領域のブロックとしてホストから送信されることがあります。値が 0 の場合、空間領域のデータは送信されません。
ConfigSpatialResid8DWORD4+60+60

ホストベースの残差差分デコードを使用する場合に、予測 (非イントラ) ピクチャーの残差差分の空間領域ブロックを表現するために使用されるワード サイズを示します。

ConfigResidDiffHost が 1 かつ ConfigSpatialResid8 が 1 の場合、ホストは非イントラ マクロブロックの残差差分の空間領域ブロックを 8 ビット符号付きサンプルで送信し、予測 (非イントラ) ピクチャー内のイントラ マクロブロックについては ConfigIntraResidUnsigned の値に応じた形式で送信します。

  • ConfigIntraResidUnsigned が 0 の場合、イントラ マクロブロックの空間領域ブロックは、定数の基準値 2^(BPP–1) を基準とする 8 ビット符号付き整数値として送信されます。
  • ConfigIntraResidUnsigned が 1 の場合、イントラ マクロブロックの空間領域ブロックは、定数の基準値 0 を基準とする 8 ビット符号なし整数値として送信されます。
ConfigResidDiffHost が 1 かつ ConfigSpatialResid8 が 0 の場合、ホストは非イントラ マクロブロックの残差差分の空間領域データ ブロックを 16 ビット符号付きサンプルで送信し、予測 (非イントラ) ピクチャー内のイントラ マクロブロックについては ConfigIntraResidUnsigned の値に応じた形式で送信します。
  • ConfigIntraResidUnsigned が 0 の場合、イントラ マクロブロックの空間領域ブロックは、定数の基準値 2^(BPP–1) を基準とする 16 ビット符号付き整数値として送信されます。
  • ConfigIntraResidUnsigned が 1 の場合、イントラ マクロブロックの空間領域ブロックは、定数の基準値 0 を基準とする 16 ビット符号なし整数値として送信されます。
ConfigResidDiffHost が 0 の場合、ConfigSpatialResid8 は 0 でなければなりません。

イントラ ピクチャーでは、ピクセルあたりのビット数 (BPP) が 8 の場合は 8 ビット サンプルを使用して、BPP > 8 の場合は 16 ビット サンプルを使用して空間領域ブロックを送信しなければなりません。ConfigIntraResidUnsigned が 0 の場合、これらのサンプルは定数の基準値 2^(BPP–1) を基準とする符号付き整数値として送信され、ConfigIntraResidUnsigned が 1 の場合は、定数の基準値 0 を基準とする符号なし整数値として送信されます。

ConfigResid8SubtractionDWORD4+64+64

値が 1 の場合、8 ビットの差分オーバーフロー ブロックは加算されるのではなく減算されます。ConfigSpatialResid8 が 1 でない限り、値は 0 でなければなりません。

差分を加算するのではなく減算できることにより、8 ビットの差分デコードは、ビデオ デコーダーの仕様で要求される ±255 の全範囲に完全に準拠できます。+255 は 2 つの符号付き 8 ビット数の加算では表現できませんが、±255 の範囲の任意の数は 2 つの符号付き 8 ビット数の差として表現できるためです (+255 = +127 から –128 を引いた値)。

ConfigSpatialHost8or9ClippingDWORD4+68+68

値が 1 の場合、イントラ マクロブロックの空間領域ブロックはホスト側で 8 ビットの範囲にクリップし、非イントラ マクロブロックの空間領域ブロックはホスト側で 9 ビットの範囲にクリップしなければなりません。値が 0 の場合、ホストによるそのようなクリッピングは不要です。

ConfigSpatialResid8 が 0 かつ ConfigResidDiffHost が 1 でない限り、値は 0 でなければなりません。

ConfigSpatialResidInterleavedDWORD4+72+72値が 1 の場合、空間領域の残差差分データは、YUV 形式の彩度インターリーブ パターンに一致する彩度インターリーブ形式で送信しなければなりません。ConfigResidDiffHost が 1 で、かつ YUV 形式が NV12 または NV21 でない限り、値は 0 でなければなりません。
ConfigIntraResidUnsignedDWORD4+76+76

ホストベースの差分デコードを使用する場合に、イントラ ブロックの残差差分データの空間領域ブロックの表現方法を示します。

ConfigResidDiffHost が 1 かつ ConfigIntraResidUnsigned が 0 の場合、イントラ マクロブロックの空間領域の残差差分データ ブロックは次のように送信しなければなりません。

  • 非イントラ ピクチャーで ConfigSpatialResid8 が 0 の場合、イントラ マクロブロックの空間領域の残差差分データ ブロックは、定数の基準値 2^(BPP–1) を基準とする 16 ビット符号付き整数値として送信されます。
  • 非イントラ ピクチャーで ConfigSpatialResid8 が 1 の場合、イントラ マクロブロックの空間領域の残差差分データ ブロックは、定数の基準値 2^(BPP–1) を基準とする 8 ビット符号付き整数値として送信されます。
  • イントラ ピクチャーで BPP が 8 の場合、ConfigSpatialResid8 の値にかかわらず、イントラ マクロブロックの空間領域の残差差分データ ブロックは、定数の基準値 2^(BPP–1) を基準とする 8 ビット符号付き整数値として送信されます。
ConfigResidDiffHost が 1 かつ ConfigIntraResidUnsigned が 1 の場合、イントラ マクロブロックの空間領域の残差差分データ ブロックは次のように送信しなければなりません。
  • 非イントラ ピクチャーで ConfigSpatialResid8 が 0 の場合、イントラ マクロブロックの空間領域の残差差分データ ブロックは、定数の基準値 0 を基準とする 16 ビット符号なし整数値として送信しなければなりません。
  • 非イントラ ピクチャーで ConfigSpatialResid8 が 1 の場合、イントラ マクロブロックの空間領域の残差差分データ ブロックは、定数の基準値 0 を基準とする 8 ビット符号なし整数値として送信されます。
  • イントラ ピクチャーで BPP が 8 の場合、ConfigSpatialResid8 の値にかかわらず、イントラ マクロブロックの空間領域の残差差分データ ブロックは、定数の基準値 0 を基準とする 8 ビット符号なし整数値として送信されます。
ConfigResidDiffHost が 1 でない限り、このメンバーの値は 0 でなければなりません。
ConfigResidDiffAcceleratorDWORD4+80+80

値が 1 の場合、アクセラレーターベースの IDCT のために、係数データの変換領域ブロックをホストから送信できます。値が 0 の場合、アクセラレーターベースの IDCT は使用されません。ConfigResidDiffHostConfigResidDiffAccelerator の両方が 1 の場合は、マクロブロック レベルの制御コマンドで示されるとおり、残差差分デコードの一部をホストで、残りをアクセラレーターで行うことを示します。

ConfigBitstreamRaw が 1 の場合、値は 0 でなければなりません。

ConfigHostInverseScanDWORD4+84+84

値が 1 の場合、変換領域ブロック処理の逆スキャンはホストで実行され、変換係数については代わりに絶対インデックスが送信されます。値が 0 の場合、逆スキャンはアクセラレーターで実行されます。

ConfigResidDiffAccelerator が 0 の場合、または Config4GroupedCoefs が 1 の場合、値は 0 でなければなりません。

ConfigSpecificIDCTDWORD4+88+88

値が 1 の場合、ITU-T 勧告 H.263 の Annex W で規定されている IDCT が使用されます。値が 0 の場合、ホスト外の IDCT には準拠する任意の IDCT を使用できます。

H.263 の付属書は MPEG-2 corrigendum 2 の IDCT 要件に準拠していないため、MPEG-2 ビデオで使用する場合は値を 1 にしてはなりません。

ConfigResidDiffAccelerator が 0 の場合、値は 0 でなければなりません。これは、純粋にホストベースの残差差分デコードであることを示します。

Config4GroupedCoefsDWORD4+92+92値が 1 の場合、ホスト外の IDCT 用の変換係数は DXVA_TCoef4Group 構造体を使用して送信されます。値が 0 の場合は、DXVA_TCoefSingle 構造体が使用されます。ConfigResidDiffAccelerator が 0 の場合、または ConfigHostInverseScan が 1 の場合、値は 0 でなければなりません。
ConfigMinRenderTargetBuffCountWORD2+96+96デコーダー デバイスが同時に処理するフレーム数を指定します。
ConfigDecoderSpecificWORD2+98+98デコーダー固有の構成情報を格納します。

公式ドキュメント

DirectX Video Acceleration (DXVA) 用の Microsoft Direct3D 11 デコーダー デバイスの構成を記述します。

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

各言語での定義

#include <windows.h>

// D3D11_VIDEO_DECODER_CONFIG  (x64 100 / x86 100 バイト)
typedef struct D3D11_VIDEO_DECODER_CONFIG {
    GUID guidConfigBitstreamEncryption;
    GUID guidConfigMBcontrolEncryption;
    GUID guidConfigResidDiffEncryption;
    DWORD ConfigBitstreamRaw;
    DWORD ConfigMBcontrolRasterOrder;
    DWORD ConfigResidDiffHost;
    DWORD ConfigSpatialResid8;
    DWORD ConfigResid8Subtraction;
    DWORD ConfigSpatialHost8or9Clipping;
    DWORD ConfigSpatialResidInterleaved;
    DWORD ConfigIntraResidUnsigned;
    DWORD ConfigResidDiffAccelerator;
    DWORD ConfigHostInverseScan;
    DWORD ConfigSpecificIDCT;
    DWORD Config4GroupedCoefs;
    WORD ConfigMinRenderTargetBuffCount;
    WORD ConfigDecoderSpecific;
} D3D11_VIDEO_DECODER_CONFIG;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D11_VIDEO_DECODER_CONFIG
{
    public Guid guidConfigBitstreamEncryption;
    public Guid guidConfigMBcontrolEncryption;
    public Guid guidConfigResidDiffEncryption;
    public uint ConfigBitstreamRaw;
    public uint ConfigMBcontrolRasterOrder;
    public uint ConfigResidDiffHost;
    public uint ConfigSpatialResid8;
    public uint ConfigResid8Subtraction;
    public uint ConfigSpatialHost8or9Clipping;
    public uint ConfigSpatialResidInterleaved;
    public uint ConfigIntraResidUnsigned;
    public uint ConfigResidDiffAccelerator;
    public uint ConfigHostInverseScan;
    public uint ConfigSpecificIDCT;
    public uint Config4GroupedCoefs;
    public ushort ConfigMinRenderTargetBuffCount;
    public ushort ConfigDecoderSpecific;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D11_VIDEO_DECODER_CONFIG
    Public guidConfigBitstreamEncryption As Guid
    Public guidConfigMBcontrolEncryption As Guid
    Public guidConfigResidDiffEncryption As Guid
    Public ConfigBitstreamRaw As UInteger
    Public ConfigMBcontrolRasterOrder As UInteger
    Public ConfigResidDiffHost As UInteger
    Public ConfigSpatialResid8 As UInteger
    Public ConfigResid8Subtraction As UInteger
    Public ConfigSpatialHost8or9Clipping As UInteger
    Public ConfigSpatialResidInterleaved As UInteger
    Public ConfigIntraResidUnsigned As UInteger
    Public ConfigResidDiffAccelerator As UInteger
    Public ConfigHostInverseScan As UInteger
    Public ConfigSpecificIDCT As UInteger
    Public Config4GroupedCoefs As UInteger
    Public ConfigMinRenderTargetBuffCount As UShort
    Public ConfigDecoderSpecific As UShort
End Structure
import ctypes
from ctypes import wintypes

class D3D11_VIDEO_DECODER_CONFIG(ctypes.Structure):
    _fields_ = [
        ("guidConfigBitstreamEncryption", GUID),
        ("guidConfigMBcontrolEncryption", GUID),
        ("guidConfigResidDiffEncryption", GUID),
        ("ConfigBitstreamRaw", wintypes.DWORD),
        ("ConfigMBcontrolRasterOrder", wintypes.DWORD),
        ("ConfigResidDiffHost", wintypes.DWORD),
        ("ConfigSpatialResid8", wintypes.DWORD),
        ("ConfigResid8Subtraction", wintypes.DWORD),
        ("ConfigSpatialHost8or9Clipping", wintypes.DWORD),
        ("ConfigSpatialResidInterleaved", wintypes.DWORD),
        ("ConfigIntraResidUnsigned", wintypes.DWORD),
        ("ConfigResidDiffAccelerator", wintypes.DWORD),
        ("ConfigHostInverseScan", wintypes.DWORD),
        ("ConfigSpecificIDCT", wintypes.DWORD),
        ("Config4GroupedCoefs", wintypes.DWORD),
        ("ConfigMinRenderTargetBuffCount", ctypes.c_ushort),
        ("ConfigDecoderSpecific", ctypes.c_ushort),
    ]
#[repr(C)]
pub struct D3D11_VIDEO_DECODER_CONFIG {
    pub guidConfigBitstreamEncryption: GUID,
    pub guidConfigMBcontrolEncryption: GUID,
    pub guidConfigResidDiffEncryption: GUID,
    pub ConfigBitstreamRaw: u32,
    pub ConfigMBcontrolRasterOrder: u32,
    pub ConfigResidDiffHost: u32,
    pub ConfigSpatialResid8: u32,
    pub ConfigResid8Subtraction: u32,
    pub ConfigSpatialHost8or9Clipping: u32,
    pub ConfigSpatialResidInterleaved: u32,
    pub ConfigIntraResidUnsigned: u32,
    pub ConfigResidDiffAccelerator: u32,
    pub ConfigHostInverseScan: u32,
    pub ConfigSpecificIDCT: u32,
    pub Config4GroupedCoefs: u32,
    pub ConfigMinRenderTargetBuffCount: u16,
    pub ConfigDecoderSpecific: u16,
}
import "golang.org/x/sys/windows"

type D3D11_VIDEO_DECODER_CONFIG struct {
	guidConfigBitstreamEncryption windows.GUID
	guidConfigMBcontrolEncryption windows.GUID
	guidConfigResidDiffEncryption windows.GUID
	ConfigBitstreamRaw uint32
	ConfigMBcontrolRasterOrder uint32
	ConfigResidDiffHost uint32
	ConfigSpatialResid8 uint32
	ConfigResid8Subtraction uint32
	ConfigSpatialHost8or9Clipping uint32
	ConfigSpatialResidInterleaved uint32
	ConfigIntraResidUnsigned uint32
	ConfigResidDiffAccelerator uint32
	ConfigHostInverseScan uint32
	ConfigSpecificIDCT uint32
	Config4GroupedCoefs uint32
	ConfigMinRenderTargetBuffCount uint16
	ConfigDecoderSpecific uint16
}
type
  D3D11_VIDEO_DECODER_CONFIG = record
    guidConfigBitstreamEncryption: TGUID;
    guidConfigMBcontrolEncryption: TGUID;
    guidConfigResidDiffEncryption: TGUID;
    ConfigBitstreamRaw: DWORD;
    ConfigMBcontrolRasterOrder: DWORD;
    ConfigResidDiffHost: DWORD;
    ConfigSpatialResid8: DWORD;
    ConfigResid8Subtraction: DWORD;
    ConfigSpatialHost8or9Clipping: DWORD;
    ConfigSpatialResidInterleaved: DWORD;
    ConfigIntraResidUnsigned: DWORD;
    ConfigResidDiffAccelerator: DWORD;
    ConfigHostInverseScan: DWORD;
    ConfigSpecificIDCT: DWORD;
    Config4GroupedCoefs: DWORD;
    ConfigMinRenderTargetBuffCount: Word;
    ConfigDecoderSpecific: Word;
  end;
const D3D11_VIDEO_DECODER_CONFIG = extern struct {
    guidConfigBitstreamEncryption: GUID,
    guidConfigMBcontrolEncryption: GUID,
    guidConfigResidDiffEncryption: GUID,
    ConfigBitstreamRaw: u32,
    ConfigMBcontrolRasterOrder: u32,
    ConfigResidDiffHost: u32,
    ConfigSpatialResid8: u32,
    ConfigResid8Subtraction: u32,
    ConfigSpatialHost8or9Clipping: u32,
    ConfigSpatialResidInterleaved: u32,
    ConfigIntraResidUnsigned: u32,
    ConfigResidDiffAccelerator: u32,
    ConfigHostInverseScan: u32,
    ConfigSpecificIDCT: u32,
    Config4GroupedCoefs: u32,
    ConfigMinRenderTargetBuffCount: u16,
    ConfigDecoderSpecific: u16,
};
type
  D3D11_VIDEO_DECODER_CONFIG {.bycopy.} = object
    guidConfigBitstreamEncryption: GUID
    guidConfigMBcontrolEncryption: GUID
    guidConfigResidDiffEncryption: GUID
    ConfigBitstreamRaw: uint32
    ConfigMBcontrolRasterOrder: uint32
    ConfigResidDiffHost: uint32
    ConfigSpatialResid8: uint32
    ConfigResid8Subtraction: uint32
    ConfigSpatialHost8or9Clipping: uint32
    ConfigSpatialResidInterleaved: uint32
    ConfigIntraResidUnsigned: uint32
    ConfigResidDiffAccelerator: uint32
    ConfigHostInverseScan: uint32
    ConfigSpecificIDCT: uint32
    Config4GroupedCoefs: uint32
    ConfigMinRenderTargetBuffCount: uint16
    ConfigDecoderSpecific: uint16
struct D3D11_VIDEO_DECODER_CONFIG
{
    GUID guidConfigBitstreamEncryption;
    GUID guidConfigMBcontrolEncryption;
    GUID guidConfigResidDiffEncryption;
    uint ConfigBitstreamRaw;
    uint ConfigMBcontrolRasterOrder;
    uint ConfigResidDiffHost;
    uint ConfigSpatialResid8;
    uint ConfigResid8Subtraction;
    uint ConfigSpatialHost8or9Clipping;
    uint ConfigSpatialResidInterleaved;
    uint ConfigIntraResidUnsigned;
    uint ConfigResidDiffAccelerator;
    uint ConfigHostInverseScan;
    uint ConfigSpecificIDCT;
    uint Config4GroupedCoefs;
    ushort ConfigMinRenderTargetBuffCount;
    ushort ConfigDecoderSpecific;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D11_VIDEO_DECODER_CONFIG サイズ: 100 バイト(x64)
dim st, 25    ; 4byte整数×25(構造体サイズ 100 / 4 切り上げ)
; guidConfigBitstreamEncryption : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; guidConfigMBcontrolEncryption : GUID (+16, 16byte)  varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; guidConfigResidDiffEncryption : GUID (+32, 16byte)  varptr(st)+32 を基点に操作(16byte:入れ子/配列)
; ConfigBitstreamRaw : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ConfigMBcontrolRasterOrder : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; ConfigResidDiffHost : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; ConfigSpatialResid8 : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; ConfigResid8Subtraction : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; ConfigSpatialHost8or9Clipping : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; ConfigSpatialResidInterleaved : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; ConfigIntraResidUnsigned : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; ConfigResidDiffAccelerator : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; ConfigHostInverseScan : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; ConfigSpecificIDCT : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; Config4GroupedCoefs : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; ConfigMinRenderTargetBuffCount : WORD (+96, 2byte)  wpoke st,96,値  /  値 = wpeek(st,96)
; ConfigDecoderSpecific : WORD (+98, 2byte)  wpoke st,98,値  /  値 = wpeek(st,98)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global D3D11_VIDEO_DECODER_CONFIG
    #field GUID guidConfigBitstreamEncryption
    #field GUID guidConfigMBcontrolEncryption
    #field GUID guidConfigResidDiffEncryption
    #field int ConfigBitstreamRaw
    #field int ConfigMBcontrolRasterOrder
    #field int ConfigResidDiffHost
    #field int ConfigSpatialResid8
    #field int ConfigResid8Subtraction
    #field int ConfigSpatialHost8or9Clipping
    #field int ConfigSpatialResidInterleaved
    #field int ConfigIntraResidUnsigned
    #field int ConfigResidDiffAccelerator
    #field int ConfigHostInverseScan
    #field int ConfigSpecificIDCT
    #field int Config4GroupedCoefs
    #field short ConfigMinRenderTargetBuffCount
    #field short ConfigDecoderSpecific
#endstruct

stdim st, D3D11_VIDEO_DECODER_CONFIG        ; NSTRUCT 変数を確保
st->ConfigBitstreamRaw = 100
mes "ConfigBitstreamRaw=" + st->ConfigBitstreamRaw