ホーム › Graphics.Direct3D11 › D3D11_VIDEO_PROCESSOR_STREAM
D3D11_VIDEO_PROCESSOR_STREAM
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Enable | BOOL | 4 | +0 | +0 | このストリームを有効にするか。TRUEで処理対象。 |
| OutputIndex | DWORD | 4 | +4 | +4 | ステレオ等で使用する出力インデックス。 |
| InputFrameOrField | DWORD | 4 | +8 | +8 | 処理対象の入力フレームまたはフィールドのインデックス。 |
| PastFrames | DWORD | 4 | +12 | +12 | 提供する過去フレームの数。 |
| FutureFrames | DWORD | 4 | +16 | +16 | 提供する未来フレームの数。 |
| ppPastSurfaces | ID3D11VideoProcessorInputView** | 8/4 | +24 | +20 | 過去フレームの入力ビュー配列へのポインタ。 |
| pInputSurface | ID3D11VideoProcessorInputView* | 8/4 | +32 | +24 | 現在処理する入力サーフェスのビュー。 |
| ppFutureSurfaces | ID3D11VideoProcessorInputView** | 8/4 | +40 | +28 | 未来フレームの入力ビュー配列へのポインタ。 |
| ppPastSurfacesRight | ID3D11VideoProcessorInputView** | 8/4 | +48 | +32 | ステレオ右目用の過去フレーム入力ビュー配列。NULL可。 |
| pInputSurfaceRight | ID3D11VideoProcessorInputView* | 8/4 | +56 | +36 | ステレオ右目用の現在入力サーフェスのビュー。NULL可。 |
| ppFutureSurfacesRight | ID3D11VideoProcessorInputView** | 8/4 | +64 | +40 | ステレオ右目用の未来フレーム入力ビュー配列。NULL可。 |
各言語での定義
#include <windows.h>
// D3D11_VIDEO_PROCESSOR_STREAM (x64 72 / x86 44 バイト)
typedef struct D3D11_VIDEO_PROCESSOR_STREAM {
BOOL Enable;
DWORD OutputIndex;
DWORD InputFrameOrField;
DWORD PastFrames;
DWORD FutureFrames;
ID3D11VideoProcessorInputView** ppPastSurfaces;
ID3D11VideoProcessorInputView* pInputSurface;
ID3D11VideoProcessorInputView** ppFutureSurfaces;
ID3D11VideoProcessorInputView** ppPastSurfacesRight;
ID3D11VideoProcessorInputView* pInputSurfaceRight;
ID3D11VideoProcessorInputView** ppFutureSurfacesRight;
} D3D11_VIDEO_PROCESSOR_STREAM;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D11_VIDEO_PROCESSOR_STREAM
{
[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;
public IntPtr ppPastSurfacesRight;
public IntPtr pInputSurfaceRight;
public IntPtr ppFutureSurfacesRight;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D11_VIDEO_PROCESSOR_STREAM
<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
Public ppPastSurfacesRight As IntPtr
Public pInputSurfaceRight As IntPtr
Public ppFutureSurfacesRight As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class D3D11_VIDEO_PROCESSOR_STREAM(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),
("ppPastSurfacesRight", ctypes.c_void_p),
("pInputSurfaceRight", ctypes.c_void_p),
("ppFutureSurfacesRight", ctypes.c_void_p),
]#[repr(C)]
pub struct D3D11_VIDEO_PROCESSOR_STREAM {
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,
pub ppPastSurfacesRight: *mut core::ffi::c_void,
pub pInputSurfaceRight: *mut core::ffi::c_void,
pub ppFutureSurfacesRight: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type D3D11_VIDEO_PROCESSOR_STREAM struct {
Enable int32
OutputIndex uint32
InputFrameOrField uint32
PastFrames uint32
FutureFrames uint32
ppPastSurfaces uintptr
pInputSurface uintptr
ppFutureSurfaces uintptr
ppPastSurfacesRight uintptr
pInputSurfaceRight uintptr
ppFutureSurfacesRight uintptr
}type
D3D11_VIDEO_PROCESSOR_STREAM = record
Enable: BOOL;
OutputIndex: DWORD;
InputFrameOrField: DWORD;
PastFrames: DWORD;
FutureFrames: DWORD;
ppPastSurfaces: Pointer;
pInputSurface: Pointer;
ppFutureSurfaces: Pointer;
ppPastSurfacesRight: Pointer;
pInputSurfaceRight: Pointer;
ppFutureSurfacesRight: Pointer;
end;const D3D11_VIDEO_PROCESSOR_STREAM = extern struct {
Enable: i32,
OutputIndex: u32,
InputFrameOrField: u32,
PastFrames: u32,
FutureFrames: u32,
ppPastSurfaces: ?*anyopaque,
pInputSurface: ?*anyopaque,
ppFutureSurfaces: ?*anyopaque,
ppPastSurfacesRight: ?*anyopaque,
pInputSurfaceRight: ?*anyopaque,
ppFutureSurfacesRight: ?*anyopaque,
};type
D3D11_VIDEO_PROCESSOR_STREAM {.bycopy.} = object
Enable: int32
OutputIndex: uint32
InputFrameOrField: uint32
PastFrames: uint32
FutureFrames: uint32
ppPastSurfaces: pointer
pInputSurface: pointer
ppFutureSurfaces: pointer
ppPastSurfacesRight: pointer
pInputSurfaceRight: pointer
ppFutureSurfacesRight: pointerstruct D3D11_VIDEO_PROCESSOR_STREAM
{
int Enable;
uint OutputIndex;
uint InputFrameOrField;
uint PastFrames;
uint FutureFrames;
void* ppPastSurfaces;
void* pInputSurface;
void* ppFutureSurfaces;
void* ppPastSurfacesRight;
void* pInputSurfaceRight;
void* ppFutureSurfacesRight;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; D3D11_VIDEO_PROCESSOR_STREAM サイズ: 44 バイト(x86)
dim st, 11 ; 4byte整数×11(構造体サイズ 44 / 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 : ID3D11VideoProcessorInputView** (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pInputSurface : ID3D11VideoProcessorInputView* (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ppFutureSurfaces : ID3D11VideoProcessorInputView** (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; ppPastSurfacesRight : ID3D11VideoProcessorInputView** (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; pInputSurfaceRight : ID3D11VideoProcessorInputView* (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; ppFutureSurfacesRight : ID3D11VideoProcessorInputView** (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D11_VIDEO_PROCESSOR_STREAM サイズ: 72 バイト(x64)
dim st, 18 ; 4byte整数×18(構造体サイズ 72 / 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 : ID3D11VideoProcessorInputView** (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pInputSurface : ID3D11VideoProcessorInputView* (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ppFutureSurfaces : ID3D11VideoProcessorInputView** (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ppPastSurfacesRight : ID3D11VideoProcessorInputView** (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pInputSurfaceRight : ID3D11VideoProcessorInputView* (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ppFutureSurfacesRight : ID3D11VideoProcessorInputView** (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global D3D11_VIDEO_PROCESSOR_STREAM
#field bool Enable
#field int OutputIndex
#field int InputFrameOrField
#field int PastFrames
#field int FutureFrames
#field intptr ppPastSurfaces
#field intptr pInputSurface
#field intptr ppFutureSurfaces
#field intptr ppPastSurfacesRight
#field intptr pInputSurfaceRight
#field intptr ppFutureSurfacesRight
#endstruct
stdim st, D3D11_VIDEO_PROCESSOR_STREAM ; NSTRUCT 変数を確保
st->Enable = 100
mes "Enable=" + st->Enable