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

DXVAHD_STREAM_DATA

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

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

フィールド

フィールドサイズx64x86説明
EnableBOOL4+0+0当該入力ストリームを処理対象として有効化するか否かを示す。TRUEで有効。
OutputIndexDWORD4+4+4出力先フレームのインデックス(レート変換時)を示す。
InputFrameOrFieldDWORD4+8+8処理対象の入力フレームまたはフィールドのインデックスを示す。
PastFramesDWORD4+12+12ppPastSurfacesに供給する過去フレームの数を示す。
FutureFramesDWORD4+16+16ppFutureSurfacesに供給する未来フレームの数を示す。
ppPastSurfacesIDirect3DSurface9**8/4+24+20過去参照フレームのサーフェス配列へのポインタである。
pInputSurfaceIDirect3DSurface9*8/4+32+24現在処理対象の入力フレームサーフェスへのポインタである。
ppFutureSurfacesIDirect3DSurface9**8/4+40+28未来参照フレームのサーフェス配列へのポインタである。

各言語での定義

#include <windows.h>

// DXVAHD_STREAM_DATA  (x64 48 / x86 32 バイト)
typedef struct DXVAHD_STREAM_DATA {
    BOOL Enable;
    DWORD OutputIndex;
    DWORD InputFrameOrField;
    DWORD PastFrames;
    DWORD FutureFrames;
    IDirect3DSurface9** ppPastSurfaces;
    IDirect3DSurface9* pInputSurface;
    IDirect3DSurface9** ppFutureSurfaces;
} DXVAHD_STREAM_DATA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DXVAHD_STREAM_DATA
{
    [MarshalAs(UnmanagedType.Bool)] public bool Enable;
    public uint OutputIndex;
    public uint InputFrameOrField;
    public uint PastFrames;
    public uint FutureFrames;
    public IntPtr ppPastSurfaces;
    public IntPtr pInputSurface;
    public IntPtr ppFutureSurfaces;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DXVAHD_STREAM_DATA
    <MarshalAs(UnmanagedType.Bool)> Public Enable As Boolean
    Public OutputIndex As UInteger
    Public InputFrameOrField As UInteger
    Public PastFrames As UInteger
    Public FutureFrames As UInteger
    Public ppPastSurfaces As IntPtr
    Public pInputSurface As IntPtr
    Public ppFutureSurfaces As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class DXVAHD_STREAM_DATA(ctypes.Structure):
    _fields_ = [
        ("Enable", wintypes.BOOL),
        ("OutputIndex", wintypes.DWORD),
        ("InputFrameOrField", wintypes.DWORD),
        ("PastFrames", wintypes.DWORD),
        ("FutureFrames", wintypes.DWORD),
        ("ppPastSurfaces", ctypes.c_void_p),
        ("pInputSurface", ctypes.c_void_p),
        ("ppFutureSurfaces", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct DXVAHD_STREAM_DATA {
    pub Enable: i32,
    pub OutputIndex: u32,
    pub InputFrameOrField: u32,
    pub PastFrames: u32,
    pub FutureFrames: u32,
    pub ppPastSurfaces: *mut core::ffi::c_void,
    pub pInputSurface: *mut core::ffi::c_void,
    pub ppFutureSurfaces: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type DXVAHD_STREAM_DATA struct {
	Enable int32
	OutputIndex uint32
	InputFrameOrField uint32
	PastFrames uint32
	FutureFrames uint32
	ppPastSurfaces uintptr
	pInputSurface uintptr
	ppFutureSurfaces uintptr
}
type
  DXVAHD_STREAM_DATA = record
    Enable: BOOL;
    OutputIndex: DWORD;
    InputFrameOrField: DWORD;
    PastFrames: DWORD;
    FutureFrames: DWORD;
    ppPastSurfaces: Pointer;
    pInputSurface: Pointer;
    ppFutureSurfaces: Pointer;
  end;
const DXVAHD_STREAM_DATA = extern struct {
    Enable: i32,
    OutputIndex: u32,
    InputFrameOrField: u32,
    PastFrames: u32,
    FutureFrames: u32,
    ppPastSurfaces: ?*anyopaque,
    pInputSurface: ?*anyopaque,
    ppFutureSurfaces: ?*anyopaque,
};
type
  DXVAHD_STREAM_DATA {.bycopy.} = object
    Enable: int32
    OutputIndex: uint32
    InputFrameOrField: uint32
    PastFrames: uint32
    FutureFrames: uint32
    ppPastSurfaces: pointer
    pInputSurface: pointer
    ppFutureSurfaces: pointer
struct DXVAHD_STREAM_DATA
{
    int Enable;
    uint OutputIndex;
    uint InputFrameOrField;
    uint PastFrames;
    uint FutureFrames;
    void* ppPastSurfaces;
    void* pInputSurface;
    void* ppFutureSurfaces;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DXVAHD_STREAM_DATA サイズ: 32 バイト(x86)
dim st, 8    ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; Enable : BOOL (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; OutputIndex : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; InputFrameOrField : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; PastFrames : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; FutureFrames : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ppPastSurfaces : IDirect3DSurface9** (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; pInputSurface : IDirect3DSurface9* (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ppFutureSurfaces : IDirect3DSurface9** (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DXVAHD_STREAM_DATA サイズ: 48 バイト(x64)
dim st, 12    ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; Enable : BOOL (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; OutputIndex : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; InputFrameOrField : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; PastFrames : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; FutureFrames : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ppPastSurfaces : IDirect3DSurface9** (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pInputSurface : IDirect3DSurface9* (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ppFutureSurfaces : IDirect3DSurface9** (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DXVAHD_STREAM_DATA
    #field bool Enable
    #field int OutputIndex
    #field int InputFrameOrField
    #field int PastFrames
    #field int FutureFrames
    #field intptr ppPastSurfaces
    #field intptr pInputSurface
    #field intptr ppFutureSurfaces
#endstruct

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