Win32 API 日本語リファレンス
ホームGraphics.Direct3D11 › D3D11_VIDEO_PROCESSOR_STREAM

D3D11_VIDEO_PROCESSOR_STREAM

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

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

フィールド

フィールドサイズx64x86説明
EnableBOOL4+0+0

この入力ストリームが有効かどうかを指定します。値が TRUE の場合、VideoProcessorBlt メソッドはこのストリームを出力サーフェスに BLT します。そうでない場合、このストリームは BLT されません。

同時に有効にできるストリームの最大数は、D3D11_VIDEO_PROCESSOR_CAPS 構造体の MaxInputStreams メンバーで示されます。

OutputIndexDWORD4+4+4出力フレームの 0 から始まるインデックス番号です。
InputFrameOrFieldDWORD4+8+8入力フレームまたはフィールドの 0 から始まるインデックス番号です。
PastFramesDWORD4+12+12過去の参照フレームの数です。
FutureFramesDWORD4+16+16未来の参照フレームの数です。
ppPastSurfacesID3D11VideoProcessorInputView**8/4+24+20呼び出し元が割り当てた ID3D11VideoProcessorInputView ポインターの配列へのポインターです。この配列には、ビデオ処理操作の過去の参照フレームが格納されます。配列の要素数は PastFrames と等しくなります。
pInputSurfaceID3D11VideoProcessorInputView*8/4+32+24現在の入力フレームを含むサーフェスの ID3D11VideoProcessorInputView インターフェイスへのポインターです。
ppFutureSurfacesID3D11VideoProcessorInputView**8/4+40+28呼び出し元が割り当てた ID3D11VideoProcessorInputView ポインターの配列へのポインターです。この配列には、ビデオ処理操作の未来の参照フレームが格納されます。配列の要素数は FutureFrames と等しくなります。
ppPastSurfacesRightID3D11VideoProcessorInputView**8/4+48+32

ステレオ 3D 形式が D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE の場合、このメンバーは右ビュー用の過去の参照フレームを格納する配列を指します。配列の要素数は PastFrames と等しくなります。

その他のステレオ 3D 形式の場合は、このメンバーに NULL を設定します。詳細については、ID3D11VideoContext::VideoProcessorSetStreamStereoFormat を参照してください。

pInputSurfaceRightID3D11VideoProcessorInputView*8/4+56+36

ステレオ 3D 形式が D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE の場合、このメンバーには右ビュー用の現在の入力フレームへのポインターが格納されます。

その他のステレオ 3D 形式の場合は、このメンバーに NULL を設定します。

ppFutureSurfacesRightID3D11VideoProcessorInputView**8/4+64+40

ステレオ 3D 形式が D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE の場合、このメンバーは右ビュー用の未来の参照フレームを格納する配列を指します。配列の要素数は FutureFrames と等しくなります。

その他のステレオ 3D 形式の場合は、このメンバーに NULL を設定します。

公式ドキュメント

ID3D11VideoContext::VideoProcessorBlt メソッド用のストリームレベルのデータを格納します。

解説(Remarks)

ステレオ 3D 形式が D3D11_VIDEO_PROCESSOR_STEREO_FORMAT_SEPARATE の場合、ppPastSurfacespInputSurfaceppFutureSurfaces の各メンバーには左ビューが格納されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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 Structure
import 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: pointer
struct 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