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

D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS

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

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

フィールド

フィールドサイズx64x86説明
InputStreamD3D12_VIDEO_PROCESS_INPUT_STREAM128/64+0+0処理対象の入力ストリームを示すD3D12_VIDEO_PROCESS_INPUT_STREAM。
TransformD3D12_VIDEO_PROCESS_TRANSFORM36+128+64適用する変換(切り出し/配置/向き)を示すD3D12_VIDEO_PROCESS_TRANSFORM。
FlagsD3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS4+164+100入力ストリーム処理を制御するD3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS。
RateInfoD3D12_VIDEO_PROCESS_INPUT_STREAM_RATE8+168+104フレームレート変換情報を示すD3D12_VIDEO_PROCESS_INPUT_STREAM_RATE。
FilterLevelsINT128+176+112各フィルタの適用レベルを示す整数配列の先頭。
AlphaBlendingD3D12_VIDEO_PROCESS_ALPHA_BLENDING8+304+240アルファブレンディング設定を示すD3D12_VIDEO_PROCESS_ALPHA_BLENDING。

各言語での定義

#include <windows.h>

// D3D12_VIDEO_PROCESS_REFERENCE_SET  (x64 48 / x86 24 バイト)
typedef struct D3D12_VIDEO_PROCESS_REFERENCE_SET {
    DWORD NumPastFrames;
    ID3D12Resource** ppPastFrames;
    DWORD* pPastSubresources;
    DWORD NumFutureFrames;
    ID3D12Resource** ppFutureFrames;
    DWORD* pFutureSubresources;
} D3D12_VIDEO_PROCESS_REFERENCE_SET;

// D3D12_VIDEO_PROCESS_INPUT_STREAM  (x64 64 / x86 32 バイト)
typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM {
    ID3D12Resource* pTexture2D;
    DWORD Subresource;
    D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
} D3D12_VIDEO_PROCESS_INPUT_STREAM;

// RECT  (x64 16 / x86 16 バイト)
typedef struct RECT {
    INT left;
    INT top;
    INT right;
    INT bottom;
} RECT;

// D3D12_VIDEO_PROCESS_TRANSFORM  (x64 36 / x86 36 バイト)
typedef struct D3D12_VIDEO_PROCESS_TRANSFORM {
    RECT SourceRectangle;
    RECT DestinationRectangle;
    D3D12_VIDEO_PROCESS_ORIENTATION Orientation;
} D3D12_VIDEO_PROCESS_TRANSFORM;

// D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE  (x64 8 / x86 8 バイト)
typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE {
    DWORD OutputIndex;
    DWORD InputFrameOrField;
} D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;

// D3D12_VIDEO_PROCESS_ALPHA_BLENDING  (x64 8 / x86 8 バイト)
typedef struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING {
    BOOL Enable;
    FLOAT Alpha;
} D3D12_VIDEO_PROCESS_ALPHA_BLENDING;

// D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS  (x64 312 / x86 248 バイト)
typedef struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS {
    D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream[2];
    D3D12_VIDEO_PROCESS_TRANSFORM Transform;
    D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS Flags;
    D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
    INT FilterLevels[32];
    D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
} D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_PROCESS_REFERENCE_SET
{
    public uint NumPastFrames;
    public IntPtr ppPastFrames;
    public IntPtr pPastSubresources;
    public uint NumFutureFrames;
    public IntPtr ppFutureFrames;
    public IntPtr pFutureSubresources;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_PROCESS_INPUT_STREAM
{
    public IntPtr pTexture2D;
    public uint Subresource;
    public D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RECT
{
    public int left;
    public int top;
    public int right;
    public int bottom;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_PROCESS_TRANSFORM
{
    public RECT SourceRectangle;
    public RECT DestinationRectangle;
    public int Orientation;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
{
    public uint OutputIndex;
    public uint InputFrameOrField;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
{
    [MarshalAs(UnmanagedType.Bool)] public bool Enable;
    public float Alpha;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public D3D12_VIDEO_PROCESS_INPUT_STREAM[] InputStream;
    public D3D12_VIDEO_PROCESS_TRANSFORM Transform;
    public int Flags;
    public D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public int[] FilterLevels;
    public D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_PROCESS_REFERENCE_SET
    Public NumPastFrames As UInteger
    Public ppPastFrames As IntPtr
    Public pPastSubresources As IntPtr
    Public NumFutureFrames As UInteger
    Public ppFutureFrames As IntPtr
    Public pFutureSubresources As IntPtr
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_PROCESS_INPUT_STREAM
    Public pTexture2D As IntPtr
    Public Subresource As UInteger
    Public ReferenceSet As D3D12_VIDEO_PROCESS_REFERENCE_SET
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RECT
    Public left As Integer
    Public top As Integer
    Public right As Integer
    Public bottom As Integer
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_PROCESS_TRANSFORM
    Public SourceRectangle As RECT
    Public DestinationRectangle As RECT
    Public Orientation As Integer
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
    Public OutputIndex As UInteger
    Public InputFrameOrField As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_PROCESS_ALPHA_BLENDING
    <MarshalAs(UnmanagedType.Bool)> Public Enable As Boolean
    Public Alpha As Single
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public InputStream() As D3D12_VIDEO_PROCESS_INPUT_STREAM
    Public Transform As D3D12_VIDEO_PROCESS_TRANSFORM
    Public Flags As Integer
    Public RateInfo As D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public FilterLevels() As Integer
    Public AlphaBlending As D3D12_VIDEO_PROCESS_ALPHA_BLENDING
End Structure
import ctypes
from ctypes import wintypes

class D3D12_VIDEO_PROCESS_REFERENCE_SET(ctypes.Structure):
    _fields_ = [
        ("NumPastFrames", wintypes.DWORD),
        ("ppPastFrames", ctypes.c_void_p),
        ("pPastSubresources", ctypes.c_void_p),
        ("NumFutureFrames", wintypes.DWORD),
        ("ppFutureFrames", ctypes.c_void_p),
        ("pFutureSubresources", ctypes.c_void_p),
    ]

class D3D12_VIDEO_PROCESS_INPUT_STREAM(ctypes.Structure):
    _fields_ = [
        ("pTexture2D", ctypes.c_void_p),
        ("Subresource", wintypes.DWORD),
        ("ReferenceSet", D3D12_VIDEO_PROCESS_REFERENCE_SET),
    ]

class RECT(ctypes.Structure):
    _fields_ = [
        ("left", ctypes.c_int),
        ("top", ctypes.c_int),
        ("right", ctypes.c_int),
        ("bottom", ctypes.c_int),
    ]

class D3D12_VIDEO_PROCESS_TRANSFORM(ctypes.Structure):
    _fields_ = [
        ("SourceRectangle", RECT),
        ("DestinationRectangle", RECT),
        ("Orientation", ctypes.c_int),
    ]

class D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE(ctypes.Structure):
    _fields_ = [
        ("OutputIndex", wintypes.DWORD),
        ("InputFrameOrField", wintypes.DWORD),
    ]

class D3D12_VIDEO_PROCESS_ALPHA_BLENDING(ctypes.Structure):
    _fields_ = [
        ("Enable", wintypes.BOOL),
        ("Alpha", ctypes.c_float),
    ]

class D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS(ctypes.Structure):
    _fields_ = [
        ("InputStream", D3D12_VIDEO_PROCESS_INPUT_STREAM * 2),
        ("Transform", D3D12_VIDEO_PROCESS_TRANSFORM),
        ("Flags", ctypes.c_int),
        ("RateInfo", D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE),
        ("FilterLevels", ctypes.c_int * 32),
        ("AlphaBlending", D3D12_VIDEO_PROCESS_ALPHA_BLENDING),
    ]
#[repr(C)]
pub struct D3D12_VIDEO_PROCESS_REFERENCE_SET {
    pub NumPastFrames: u32,
    pub ppPastFrames: *mut core::ffi::c_void,
    pub pPastSubresources: *mut core::ffi::c_void,
    pub NumFutureFrames: u32,
    pub ppFutureFrames: *mut core::ffi::c_void,
    pub pFutureSubresources: *mut core::ffi::c_void,
}

#[repr(C)]
pub struct D3D12_VIDEO_PROCESS_INPUT_STREAM {
    pub pTexture2D: *mut core::ffi::c_void,
    pub Subresource: u32,
    pub ReferenceSet: D3D12_VIDEO_PROCESS_REFERENCE_SET,
}

#[repr(C)]
pub struct RECT {
    pub left: i32,
    pub top: i32,
    pub right: i32,
    pub bottom: i32,
}

#[repr(C)]
pub struct D3D12_VIDEO_PROCESS_TRANSFORM {
    pub SourceRectangle: RECT,
    pub DestinationRectangle: RECT,
    pub Orientation: i32,
}

#[repr(C)]
pub struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE {
    pub OutputIndex: u32,
    pub InputFrameOrField: u32,
}

#[repr(C)]
pub struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING {
    pub Enable: i32,
    pub Alpha: f32,
}

#[repr(C)]
pub struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS {
    pub InputStream: [D3D12_VIDEO_PROCESS_INPUT_STREAM; 2],
    pub Transform: D3D12_VIDEO_PROCESS_TRANSFORM,
    pub Flags: i32,
    pub RateInfo: D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE,
    pub FilterLevels: [i32; 32],
    pub AlphaBlending: D3D12_VIDEO_PROCESS_ALPHA_BLENDING,
}
import "golang.org/x/sys/windows"

type D3D12_VIDEO_PROCESS_REFERENCE_SET struct {
	NumPastFrames uint32
	ppPastFrames uintptr
	pPastSubresources uintptr
	NumFutureFrames uint32
	ppFutureFrames uintptr
	pFutureSubresources uintptr
}

type D3D12_VIDEO_PROCESS_INPUT_STREAM struct {
	pTexture2D uintptr
	Subresource uint32
	ReferenceSet D3D12_VIDEO_PROCESS_REFERENCE_SET
}

type RECT struct {
	left int32
	top int32
	right int32
	bottom int32
}

type D3D12_VIDEO_PROCESS_TRANSFORM struct {
	SourceRectangle RECT
	DestinationRectangle RECT
	Orientation int32
}

type D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE struct {
	OutputIndex uint32
	InputFrameOrField uint32
}

type D3D12_VIDEO_PROCESS_ALPHA_BLENDING struct {
	Enable int32
	Alpha float32
}

type D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS struct {
	InputStream [2]D3D12_VIDEO_PROCESS_INPUT_STREAM
	Transform D3D12_VIDEO_PROCESS_TRANSFORM
	Flags int32
	RateInfo D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
	FilterLevels [32]int32
	AlphaBlending D3D12_VIDEO_PROCESS_ALPHA_BLENDING
}
type
  D3D12_VIDEO_PROCESS_REFERENCE_SET = record
    NumPastFrames: DWORD;
    ppPastFrames: Pointer;
    pPastSubresources: Pointer;
    NumFutureFrames: DWORD;
    ppFutureFrames: Pointer;
    pFutureSubresources: Pointer;
  end;

  D3D12_VIDEO_PROCESS_INPUT_STREAM = record
    pTexture2D: Pointer;
    Subresource: DWORD;
    ReferenceSet: D3D12_VIDEO_PROCESS_REFERENCE_SET;
  end;

  RECT = record
    left: Integer;
    top: Integer;
    right: Integer;
    bottom: Integer;
  end;

  D3D12_VIDEO_PROCESS_TRANSFORM = record
    SourceRectangle: RECT;
    DestinationRectangle: RECT;
    Orientation: Integer;
  end;

  D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE = record
    OutputIndex: DWORD;
    InputFrameOrField: DWORD;
  end;

  D3D12_VIDEO_PROCESS_ALPHA_BLENDING = record
    Enable: BOOL;
    Alpha: Single;
  end;

  D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS = record
    InputStream: array[0..1] of D3D12_VIDEO_PROCESS_INPUT_STREAM;
    Transform: D3D12_VIDEO_PROCESS_TRANSFORM;
    Flags: Integer;
    RateInfo: D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE;
    FilterLevels: array[0..31] of Integer;
    AlphaBlending: D3D12_VIDEO_PROCESS_ALPHA_BLENDING;
  end;
const D3D12_VIDEO_PROCESS_REFERENCE_SET = extern struct {
    NumPastFrames: u32,
    ppPastFrames: ?*anyopaque,
    pPastSubresources: ?*anyopaque,
    NumFutureFrames: u32,
    ppFutureFrames: ?*anyopaque,
    pFutureSubresources: ?*anyopaque,
};

const D3D12_VIDEO_PROCESS_INPUT_STREAM = extern struct {
    pTexture2D: ?*anyopaque,
    Subresource: u32,
    ReferenceSet: D3D12_VIDEO_PROCESS_REFERENCE_SET,
};

const RECT = extern struct {
    left: i32,
    top: i32,
    right: i32,
    bottom: i32,
};

const D3D12_VIDEO_PROCESS_TRANSFORM = extern struct {
    SourceRectangle: RECT,
    DestinationRectangle: RECT,
    Orientation: i32,
};

const D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE = extern struct {
    OutputIndex: u32,
    InputFrameOrField: u32,
};

const D3D12_VIDEO_PROCESS_ALPHA_BLENDING = extern struct {
    Enable: i32,
    Alpha: f32,
};

const D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS = extern struct {
    InputStream: [2]D3D12_VIDEO_PROCESS_INPUT_STREAM,
    Transform: D3D12_VIDEO_PROCESS_TRANSFORM,
    Flags: i32,
    RateInfo: D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE,
    FilterLevels: [32]i32,
    AlphaBlending: D3D12_VIDEO_PROCESS_ALPHA_BLENDING,
};
type
  D3D12_VIDEO_PROCESS_REFERENCE_SET {.bycopy.} = object
    NumPastFrames: uint32
    ppPastFrames: pointer
    pPastSubresources: pointer
    NumFutureFrames: uint32
    ppFutureFrames: pointer
    pFutureSubresources: pointer

  D3D12_VIDEO_PROCESS_INPUT_STREAM {.bycopy.} = object
    pTexture2D: pointer
    Subresource: uint32
    ReferenceSet: D3D12_VIDEO_PROCESS_REFERENCE_SET

  RECT {.bycopy.} = object
    left: int32
    top: int32
    right: int32
    bottom: int32

  D3D12_VIDEO_PROCESS_TRANSFORM {.bycopy.} = object
    SourceRectangle: RECT
    DestinationRectangle: RECT
    Orientation: int32

  D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE {.bycopy.} = object
    OutputIndex: uint32
    InputFrameOrField: uint32

  D3D12_VIDEO_PROCESS_ALPHA_BLENDING {.bycopy.} = object
    Enable: int32
    Alpha: float32

  D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS {.bycopy.} = object
    InputStream: array[2, D3D12_VIDEO_PROCESS_INPUT_STREAM]
    Transform: D3D12_VIDEO_PROCESS_TRANSFORM
    Flags: int32
    RateInfo: D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
    FilterLevels: array[32, int32]
    AlphaBlending: D3D12_VIDEO_PROCESS_ALPHA_BLENDING
struct D3D12_VIDEO_PROCESS_REFERENCE_SET
{
    uint NumPastFrames;
    void* ppPastFrames;
    void* pPastSubresources;
    uint NumFutureFrames;
    void* ppFutureFrames;
    void* pFutureSubresources;
}

struct D3D12_VIDEO_PROCESS_INPUT_STREAM
{
    void* pTexture2D;
    uint Subresource;
    D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet;
}

struct RECT
{
    int left;
    int top;
    int right;
    int bottom;
}

struct D3D12_VIDEO_PROCESS_TRANSFORM
{
    RECT SourceRectangle;
    RECT DestinationRectangle;
    int Orientation;
}

struct D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
{
    uint OutputIndex;
    uint InputFrameOrField;
}

struct D3D12_VIDEO_PROCESS_ALPHA_BLENDING
{
    int Enable;
    float Alpha;
}

struct D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
{
    D3D12_VIDEO_PROCESS_INPUT_STREAM[2] InputStream;
    D3D12_VIDEO_PROCESS_TRANSFORM Transform;
    int Flags;
    D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo;
    int[32] FilterLevels;
    D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS サイズ: 248 バイト(x86)
dim st, 62    ; 4byte整数×62(構造体サイズ 248 / 4 切り上げ)
; InputStream : D3D12_VIDEO_PROCESS_INPUT_STREAM (+0, 64byte)  varptr(st)+0 を基点に操作(64byte:入れ子/配列)
; Transform : D3D12_VIDEO_PROCESS_TRANSFORM (+64, 36byte)  varptr(st)+64 を基点に操作(36byte:入れ子/配列)
; Flags : D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; RateInfo : D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE (+104, 8byte)  varptr(st)+104 を基点に操作(8byte:入れ子/配列)
; FilterLevels : INT (+112, 128byte)  varptr(st)+112 を基点に操作(128byte:入れ子/配列)
; AlphaBlending : D3D12_VIDEO_PROCESS_ALPHA_BLENDING (+240, 8byte)  varptr(st)+240 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS サイズ: 312 バイト(x64)
dim st, 78    ; 4byte整数×78(構造体サイズ 312 / 4 切り上げ)
; InputStream : D3D12_VIDEO_PROCESS_INPUT_STREAM (+0, 128byte)  varptr(st)+0 を基点に操作(128byte:入れ子/配列)
; Transform : D3D12_VIDEO_PROCESS_TRANSFORM (+128, 36byte)  varptr(st)+128 を基点に操作(36byte:入れ子/配列)
; Flags : D3D12_VIDEO_PROCESS_INPUT_STREAM_FLAGS (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; RateInfo : D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE (+168, 8byte)  varptr(st)+168 を基点に操作(8byte:入れ子/配列)
; FilterLevels : INT (+176, 128byte)  varptr(st)+176 を基点に操作(128byte:入れ子/配列)
; AlphaBlending : D3D12_VIDEO_PROCESS_ALPHA_BLENDING (+304, 8byte)  varptr(st)+304 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global D3D12_VIDEO_PROCESS_REFERENCE_SET
    #field int NumPastFrames
    #field intptr ppPastFrames
    #field intptr pPastSubresources
    #field int NumFutureFrames
    #field intptr ppFutureFrames
    #field intptr pFutureSubresources
#endstruct

#defstruct global D3D12_VIDEO_PROCESS_INPUT_STREAM
    #field intptr pTexture2D
    #field int Subresource
    #field D3D12_VIDEO_PROCESS_REFERENCE_SET ReferenceSet
#endstruct

#defstruct global RECT
    #field int left
    #field int top
    #field int right
    #field int bottom
#endstruct

#defstruct global D3D12_VIDEO_PROCESS_TRANSFORM
    #field RECT SourceRectangle
    #field RECT DestinationRectangle
    #field int Orientation
#endstruct

#defstruct global D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE
    #field int OutputIndex
    #field int InputFrameOrField
#endstruct

#defstruct global D3D12_VIDEO_PROCESS_ALPHA_BLENDING
    #field bool Enable
    #field float Alpha
#endstruct

#defstruct global D3D12_VIDEO_PROCESS_INPUT_STREAM_ARGUMENTS
    #field D3D12_VIDEO_PROCESS_INPUT_STREAM InputStream 2
    #field D3D12_VIDEO_PROCESS_TRANSFORM Transform
    #field int Flags
    #field D3D12_VIDEO_PROCESS_INPUT_STREAM_RATE RateInfo
    #field int FilterLevels 32
    #field D3D12_VIDEO_PROCESS_ALPHA_BLENDING AlphaBlending
#endstruct

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