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

DXVA2_ConfigPictureDecode

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

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

フィールド

フィールドサイズx64x86説明
guidConfigBitstreamEncryptionGUID16+0+0ビットストリーム暗号化方式を識別するGUID。無効時はDXVA_NoEncrypt。
guidConfigMBcontrolEncryptionGUID16+16+16マクロブロック制御データの暗号化方式を識別するGUID。
guidConfigResidDiffEncryptionGUID16+32+32残差差分データの暗号化方式を識別するGUID。
ConfigBitstreamRawDWORD4+48+48生ビットストリームをデコーダに渡すか否かを示す設定値。
ConfigMBcontrolRasterOrderDWORD4+52+52マクロブロック制御データのラスタ順序を示す設定値。
ConfigResidDiffHostDWORD4+56+56残差差分をホスト側で計算するか否かを示す設定値。
ConfigSpatialResid8DWORD4+60+60空間領域残差を8ビットで扱うか否かを示す設定値。
ConfigResid8SubtractionDWORD4+64+648ビット残差減算を行うか否かを示す設定値。
ConfigSpatialHost8or9ClippingDWORD4+68+68ホスト側で8または9ビットクリッピングを行うか否かを示す設定値。
ConfigSpatialResidInterleavedDWORD4+72+72空間残差データをインターリーブするか否かを示す設定値。
ConfigIntraResidUnsignedDWORD4+76+76イントラ残差を符号なしで扱うか否かを示す設定値。
ConfigResidDiffAcceleratorDWORD4+80+80残差差分をアクセラレータ側で計算するか否かを示す設定値。
ConfigHostInverseScanDWORD4+84+84逆スキャンをホスト側で行うか否かを示す設定値。
ConfigSpecificIDCTDWORD4+88+88使用する特定のIDCT実装を示す設定値。
Config4GroupedCoefsDWORD4+92+92係数を4つ単位でグループ化するか否かを示す設定値。
ConfigMinRenderTargetBuffCountWORD2+96+96必要となる最小レンダーターゲットバッファ数。
ConfigDecoderSpecificWORD2+98+98デコーダ固有の追加構成フラグ。

各言語での定義

#include <windows.h>

// DXVA2_ConfigPictureDecode  (x64 100 / x86 100 バイト)
typedef struct DXVA2_ConfigPictureDecode {
    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;
} DXVA2_ConfigPictureDecode;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DXVA2_ConfigPictureDecode
{
    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 DXVA2_ConfigPictureDecode
    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 DXVA2_ConfigPictureDecode(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 DXVA2_ConfigPictureDecode {
    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 DXVA2_ConfigPictureDecode 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
  DXVA2_ConfigPictureDecode = 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 DXVA2_ConfigPictureDecode = 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
  DXVA2_ConfigPictureDecode {.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 DXVA2_ConfigPictureDecode
{
    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 レイアウト)
; DXVA2_ConfigPictureDecode サイズ: 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 DXVA2_ConfigPictureDecode
    #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, DXVA2_ConfigPictureDecode        ; NSTRUCT 変数を確保
st->ConfigBitstreamRaw = 100
mes "ConfigBitstreamRaw=" + st->ConfigBitstreamRaw