ホーム › Media.MediaFoundation › DXVA_ConfigPictureDecode
DXVA_ConfigPictureDecode
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwFunction | DWORD | 4 | +0 | +0 | DXVAデコード処理関数を識別する番号である。 |
| dwReservedBits | DWORD | 12 | +4 | +4 | 予約ビット。将来拡張用で0を設定する。 |
| guidConfigBitstreamEncryption | GUID | 16 | +16 | +16 | ビットストリームバッファの暗号化方式を示すGUIDである。 |
| guidConfigMBcontrolEncryption | GUID | 16 | +32 | +32 | マクロブロック制御バッファの暗号化方式を示すGUIDである。 |
| guidConfigResidDiffEncryption | GUID | 16 | +48 | +48 | 残差データバッファの暗号化方式を示すGUIDである。 |
| bConfigBitstreamRaw | BYTE | 1 | +64 | +64 | ビットストリームを生(raw)形式で渡すか否かを示す設定値である。 |
| bConfigMBcontrolRasterOrder | BYTE | 1 | +65 | +65 | マクロブロック制御をラスタ順で渡すか否かを示す設定値である。 |
| bConfigResidDiffHost | BYTE | 1 | +66 | +66 | 残差差分をホスト側で計算するか否かを示す設定値である。 |
| bConfigSpatialResid8 | BYTE | 1 | +67 | +67 | 空間領域残差を8ビットで表現するか否かを示す設定値である。 |
| bConfigResid8Subtraction | BYTE | 1 | +68 | +68 | 8ビット残差の減算方式を示す設定値である。 |
| bConfigSpatialHost8or9Clipping | BYTE | 1 | +69 | +69 | 空間領域ホスト側の8/9ビットクリッピング方式を示す設定値である。 |
| bConfigSpatialResidInterleaved | BYTE | 1 | +70 | +70 | 空間領域残差をインターリーブ配置するか否かを示す設定値である。 |
| bConfigIntraResidUnsigned | BYTE | 1 | +71 | +71 | イントラ残差を符号なしで表現するか否かを示す設定値である。 |
| bConfigResidDiffAccelerator | BYTE | 1 | +72 | +72 | 残差差分計算をアクセラレータ側で行うか否かを示す設定値である。 |
| bConfigHostInverseScan | BYTE | 1 | +73 | +73 | 逆スキャンをホスト側で行うか否かを示す設定値である。 |
| bConfigSpecificIDCT | BYTE | 1 | +74 | +74 | 特定のIDCT実装を使用するか否かを示す設定値である。 |
| bConfig4GroupedCoefs | BYTE | 1 | +75 | +75 | 係数を4個単位でグループ化するか否かを示す設定値である。 |
各言語での定義
#include <windows.h>
// DXVA_ConfigPictureDecode (x64 76 / x86 76 バイト)
#pragma pack(push, 1)
typedef struct DXVA_ConfigPictureDecode {
DWORD dwFunction;
DWORD dwReservedBits[3];
GUID guidConfigBitstreamEncryption;
GUID guidConfigMBcontrolEncryption;
GUID guidConfigResidDiffEncryption;
BYTE bConfigBitstreamRaw;
BYTE bConfigMBcontrolRasterOrder;
BYTE bConfigResidDiffHost;
BYTE bConfigSpatialResid8;
BYTE bConfigResid8Subtraction;
BYTE bConfigSpatialHost8or9Clipping;
BYTE bConfigSpatialResidInterleaved;
BYTE bConfigIntraResidUnsigned;
BYTE bConfigResidDiffAccelerator;
BYTE bConfigHostInverseScan;
BYTE bConfigSpecificIDCT;
BYTE bConfig4GroupedCoefs;
} DXVA_ConfigPictureDecode;
#pragma pack(pop)using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct DXVA_ConfigPictureDecode
{
public uint dwFunction;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public uint[] dwReservedBits;
public Guid guidConfigBitstreamEncryption;
public Guid guidConfigMBcontrolEncryption;
public Guid guidConfigResidDiffEncryption;
public byte bConfigBitstreamRaw;
public byte bConfigMBcontrolRasterOrder;
public byte bConfigResidDiffHost;
public byte bConfigSpatialResid8;
public byte bConfigResid8Subtraction;
public byte bConfigSpatialHost8or9Clipping;
public byte bConfigSpatialResidInterleaved;
public byte bConfigIntraResidUnsigned;
public byte bConfigResidDiffAccelerator;
public byte bConfigHostInverseScan;
public byte bConfigSpecificIDCT;
public byte bConfig4GroupedCoefs;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure DXVA_ConfigPictureDecode
Public dwFunction As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public dwReservedBits() As UInteger
Public guidConfigBitstreamEncryption As Guid
Public guidConfigMBcontrolEncryption As Guid
Public guidConfigResidDiffEncryption As Guid
Public bConfigBitstreamRaw As Byte
Public bConfigMBcontrolRasterOrder As Byte
Public bConfigResidDiffHost As Byte
Public bConfigSpatialResid8 As Byte
Public bConfigResid8Subtraction As Byte
Public bConfigSpatialHost8or9Clipping As Byte
Public bConfigSpatialResidInterleaved As Byte
Public bConfigIntraResidUnsigned As Byte
Public bConfigResidDiffAccelerator As Byte
Public bConfigHostInverseScan As Byte
Public bConfigSpecificIDCT As Byte
Public bConfig4GroupedCoefs As Byte
End Structureimport ctypes
from ctypes import wintypes
class DXVA_ConfigPictureDecode(ctypes.Structure):
_pack_ = 1
_fields_ = [
("dwFunction", wintypes.DWORD),
("dwReservedBits", wintypes.DWORD * 3),
("guidConfigBitstreamEncryption", GUID),
("guidConfigMBcontrolEncryption", GUID),
("guidConfigResidDiffEncryption", GUID),
("bConfigBitstreamRaw", ctypes.c_ubyte),
("bConfigMBcontrolRasterOrder", ctypes.c_ubyte),
("bConfigResidDiffHost", ctypes.c_ubyte),
("bConfigSpatialResid8", ctypes.c_ubyte),
("bConfigResid8Subtraction", ctypes.c_ubyte),
("bConfigSpatialHost8or9Clipping", ctypes.c_ubyte),
("bConfigSpatialResidInterleaved", ctypes.c_ubyte),
("bConfigIntraResidUnsigned", ctypes.c_ubyte),
("bConfigResidDiffAccelerator", ctypes.c_ubyte),
("bConfigHostInverseScan", ctypes.c_ubyte),
("bConfigSpecificIDCT", ctypes.c_ubyte),
("bConfig4GroupedCoefs", ctypes.c_ubyte),
]#[repr(C, packed(1))]
pub struct DXVA_ConfigPictureDecode {
pub dwFunction: u32,
pub dwReservedBits: [u32; 3],
pub guidConfigBitstreamEncryption: GUID,
pub guidConfigMBcontrolEncryption: GUID,
pub guidConfigResidDiffEncryption: GUID,
pub bConfigBitstreamRaw: u8,
pub bConfigMBcontrolRasterOrder: u8,
pub bConfigResidDiffHost: u8,
pub bConfigSpatialResid8: u8,
pub bConfigResid8Subtraction: u8,
pub bConfigSpatialHost8or9Clipping: u8,
pub bConfigSpatialResidInterleaved: u8,
pub bConfigIntraResidUnsigned: u8,
pub bConfigResidDiffAccelerator: u8,
pub bConfigHostInverseScan: u8,
pub bConfigSpecificIDCT: u8,
pub bConfig4GroupedCoefs: u8,
}import "golang.org/x/sys/windows"
type DXVA_ConfigPictureDecode struct {
dwFunction uint32
dwReservedBits [3]uint32
guidConfigBitstreamEncryption windows.GUID
guidConfigMBcontrolEncryption windows.GUID
guidConfigResidDiffEncryption windows.GUID
bConfigBitstreamRaw byte
bConfigMBcontrolRasterOrder byte
bConfigResidDiffHost byte
bConfigSpatialResid8 byte
bConfigResid8Subtraction byte
bConfigSpatialHost8or9Clipping byte
bConfigSpatialResidInterleaved byte
bConfigIntraResidUnsigned byte
bConfigResidDiffAccelerator byte
bConfigHostInverseScan byte
bConfigSpecificIDCT byte
bConfig4GroupedCoefs byte
}type
DXVA_ConfigPictureDecode = packed record
dwFunction: DWORD;
dwReservedBits: array[0..2] of DWORD;
guidConfigBitstreamEncryption: TGUID;
guidConfigMBcontrolEncryption: TGUID;
guidConfigResidDiffEncryption: TGUID;
bConfigBitstreamRaw: Byte;
bConfigMBcontrolRasterOrder: Byte;
bConfigResidDiffHost: Byte;
bConfigSpatialResid8: Byte;
bConfigResid8Subtraction: Byte;
bConfigSpatialHost8or9Clipping: Byte;
bConfigSpatialResidInterleaved: Byte;
bConfigIntraResidUnsigned: Byte;
bConfigResidDiffAccelerator: Byte;
bConfigHostInverseScan: Byte;
bConfigSpecificIDCT: Byte;
bConfig4GroupedCoefs: Byte;
end;const DXVA_ConfigPictureDecode = extern struct {
dwFunction: u32,
dwReservedBits: [3]u32,
guidConfigBitstreamEncryption: GUID,
guidConfigMBcontrolEncryption: GUID,
guidConfigResidDiffEncryption: GUID,
bConfigBitstreamRaw: u8,
bConfigMBcontrolRasterOrder: u8,
bConfigResidDiffHost: u8,
bConfigSpatialResid8: u8,
bConfigResid8Subtraction: u8,
bConfigSpatialHost8or9Clipping: u8,
bConfigSpatialResidInterleaved: u8,
bConfigIntraResidUnsigned: u8,
bConfigResidDiffAccelerator: u8,
bConfigHostInverseScan: u8,
bConfigSpecificIDCT: u8,
bConfig4GroupedCoefs: u8,
};type
DXVA_ConfigPictureDecode {.packed.} = object
dwFunction: uint32
dwReservedBits: array[3, uint32]
guidConfigBitstreamEncryption: GUID
guidConfigMBcontrolEncryption: GUID
guidConfigResidDiffEncryption: GUID
bConfigBitstreamRaw: uint8
bConfigMBcontrolRasterOrder: uint8
bConfigResidDiffHost: uint8
bConfigSpatialResid8: uint8
bConfigResid8Subtraction: uint8
bConfigSpatialHost8or9Clipping: uint8
bConfigSpatialResidInterleaved: uint8
bConfigIntraResidUnsigned: uint8
bConfigResidDiffAccelerator: uint8
bConfigHostInverseScan: uint8
bConfigSpecificIDCT: uint8
bConfig4GroupedCoefs: uint8align(1)
struct DXVA_ConfigPictureDecode
{
uint dwFunction;
uint[3] dwReservedBits;
GUID guidConfigBitstreamEncryption;
GUID guidConfigMBcontrolEncryption;
GUID guidConfigResidDiffEncryption;
ubyte bConfigBitstreamRaw;
ubyte bConfigMBcontrolRasterOrder;
ubyte bConfigResidDiffHost;
ubyte bConfigSpatialResid8;
ubyte bConfigResid8Subtraction;
ubyte bConfigSpatialHost8or9Clipping;
ubyte bConfigSpatialResidInterleaved;
ubyte bConfigIntraResidUnsigned;
ubyte bConfigResidDiffAccelerator;
ubyte bConfigHostInverseScan;
ubyte bConfigSpecificIDCT;
ubyte bConfig4GroupedCoefs;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DXVA_ConfigPictureDecode サイズ: 76 バイト(x64)
dim st, 19 ; 4byte整数×19(構造体サイズ 76 / 4 切り上げ)
; dwFunction : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwReservedBits : DWORD (+4, 12byte) varptr(st)+4 を基点に操作(12byte:入れ子/配列)
; guidConfigBitstreamEncryption : GUID (+16, 16byte) varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; guidConfigMBcontrolEncryption : GUID (+32, 16byte) varptr(st)+32 を基点に操作(16byte:入れ子/配列)
; guidConfigResidDiffEncryption : GUID (+48, 16byte) varptr(st)+48 を基点に操作(16byte:入れ子/配列)
; bConfigBitstreamRaw : BYTE (+64, 1byte) poke st,64,値 / 値 = peek(st,64)
; bConfigMBcontrolRasterOrder : BYTE (+65, 1byte) poke st,65,値 / 値 = peek(st,65)
; bConfigResidDiffHost : BYTE (+66, 1byte) poke st,66,値 / 値 = peek(st,66)
; bConfigSpatialResid8 : BYTE (+67, 1byte) poke st,67,値 / 値 = peek(st,67)
; bConfigResid8Subtraction : BYTE (+68, 1byte) poke st,68,値 / 値 = peek(st,68)
; bConfigSpatialHost8or9Clipping : BYTE (+69, 1byte) poke st,69,値 / 値 = peek(st,69)
; bConfigSpatialResidInterleaved : BYTE (+70, 1byte) poke st,70,値 / 値 = peek(st,70)
; bConfigIntraResidUnsigned : BYTE (+71, 1byte) poke st,71,値 / 値 = peek(st,71)
; bConfigResidDiffAccelerator : BYTE (+72, 1byte) poke st,72,値 / 値 = peek(st,72)
; bConfigHostInverseScan : BYTE (+73, 1byte) poke st,73,値 / 値 = peek(st,73)
; bConfigSpecificIDCT : BYTE (+74, 1byte) poke st,74,値 / 値 = peek(st,74)
; bConfig4GroupedCoefs : BYTE (+75, 1byte) poke st,75,値 / 値 = peek(st,75)
; ※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 DXVA_ConfigPictureDecode, pack=1
#field int dwFunction
#field int dwReservedBits 3
#field GUID guidConfigBitstreamEncryption
#field GUID guidConfigMBcontrolEncryption
#field GUID guidConfigResidDiffEncryption
#field byte bConfigBitstreamRaw
#field byte bConfigMBcontrolRasterOrder
#field byte bConfigResidDiffHost
#field byte bConfigSpatialResid8
#field byte bConfigResid8Subtraction
#field byte bConfigSpatialHost8or9Clipping
#field byte bConfigSpatialResidInterleaved
#field byte bConfigIntraResidUnsigned
#field byte bConfigResidDiffAccelerator
#field byte bConfigHostInverseScan
#field byte bConfigSpecificIDCT
#field byte bConfig4GroupedCoefs
#endstruct
stdim st, DXVA_ConfigPictureDecode ; NSTRUCT 変数を確保
st->dwFunction = 100
mes "dwFunction=" + st->dwFunction