WMT_VIDEOIMAGE_SAMPLE2
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dwMagic | DWORD | 4 | +0 | +0 | 予約済みです。このメンバーには WMT_VIDEOIMAGE_MAGIC_NUMBER_2 を設定しなければなりません。 | ||||||||||
| dwStructSize | DWORD | 4 | +4 | +4 | 構造体のサイズ。sizeof(WMT_VIDEOIMAGE_SAMPLE2) を設定します。 | ||||||||||
| dwControlFlags | DWORD | 4 | +8 | +8 | サンプルの種類を指定します。次の表に示すフラグを 1 つ以上、ビット単位の OR 演算子 (|) で組み合わせて使用します。
| ||||||||||
| dwViewportWidth | DWORD | 4 | +12 | +12 | 出力フレームの幅。 | ||||||||||
| dwViewportHeight | DWORD | 4 | +16 | +16 | 出力フレームの高さ。 | ||||||||||
| dwCurrImageWidth | DWORD | 4 | +20 | +20 | 現在の画像の幅。 | ||||||||||
| dwCurrImageHeight | DWORD | 4 | +24 | +24 | 現在の画像の高さ。 | ||||||||||
| fCurrRegionX0 | FLOAT | 4 | +28 | +28 | 現在の画像における関心領域の原点の X 成分。 | ||||||||||
| fCurrRegionY0 | FLOAT | 4 | +32 | +32 | 現在の画像における関心領域の原点の Y 成分。 | ||||||||||
| fCurrRegionWidth | FLOAT | 4 | +36 | +36 | 現在の画像における関心領域の幅。指定した関心領域は、出力フレームのサイズに合わせてサイズ変更されます。 | ||||||||||
| fCurrRegionHeight | FLOAT | 4 | +40 | +40 | 現在の画像における関心領域の高さ。指定した関心領域は、出力フレームのサイズに合わせてサイズ変更されます。 | ||||||||||
| fCurrBlendCoef | FLOAT | 4 | +44 | +44 | 現在の画像のブレンド係数。この値は、直前の画像に対する現在の画像の透明度を指定します。2 つの画像のブレンド係数の合計は 1.0 でなければなりません。 | ||||||||||
| dwPrevImageWidth | DWORD | 4 | +48 | +48 | 直前の画像の幅。 | ||||||||||
| dwPrevImageHeight | DWORD | 4 | +52 | +52 | 直前の画像の高さ。 | ||||||||||
| fPrevRegionX0 | FLOAT | 4 | +56 | +56 | 直前の画像における関心領域の原点の X 成分。 | ||||||||||
| fPrevRegionY0 | FLOAT | 4 | +60 | +60 | 直前の画像における関心領域の原点の Y 成分。 | ||||||||||
| fPrevRegionWidth | FLOAT | 4 | +64 | +64 | 直前の画像における関心領域の幅。指定した関心領域は、出力フレームのサイズに合わせてサイズ変更されます。 | ||||||||||
| fPrevRegionHeight | FLOAT | 4 | +68 | +68 | 直前の画像における関心領域の高さ。指定した関心領域は、出力フレームのサイズに合わせてサイズ変更されます。 | ||||||||||
| fPrevBlendCoef | FLOAT | 4 | +72 | +72 | 直前の画像のブレンド係数。この値は、現在の画像に対する直前の画像の透明度を指定します。2 つの画像のブレンド係数の合計は 1.0 でなければなりません。 | ||||||||||
| dwEffectType | DWORD | 4 | +76 | +76 | 直前の画像から現在の画像へのトランジションを表すエフェクト識別子。詳細については、Video Image Transitions を参照してください。 | ||||||||||
| dwNumEffectParas | DWORD | 4 | +80 | +80 | 現在のエフェクトに関係するエフェクトパラメーターの数。この構造体の最後の 5 つのメンバーには、エフェクトパラメーターの値が格納されます。このメンバーは、それらのパラメーターのうちいくつが有効な情報を含んでいるかを指定します。 | ||||||||||
| fEffectPara0 | FLOAT | 4 | +84 | +84 | エフェクトパラメーター。このパラメーターおよびこの構造体に含まれる他の 4 つのパラメーターの用途は、dwEffectType メンバーの値で指定されるエフェクトによって決まります。 | ||||||||||
| fEffectPara1 | FLOAT | 4 | +88 | +88 | エフェクトパラメーター。このパラメーターおよびこの構造体に含まれる他の 4 つのパラメーターの用途は、dwEffectType メンバーの値で指定されるエフェクトによって決まります。 | ||||||||||
| fEffectPara2 | FLOAT | 4 | +92 | +92 | エフェクトパラメーター。このパラメーターおよびこの構造体に含まれる他の 4 つのパラメーターの用途は、dwEffectType メンバーの値で指定されるエフェクトによって決まります。 | ||||||||||
| fEffectPara3 | FLOAT | 4 | +96 | +96 | エフェクトパラメーター。このパラメーターおよびこの構造体に含まれる他の 4 つのパラメーターの用途は、dwEffectType メンバーの値で指定されるエフェクトによって決まります。 | ||||||||||
| fEffectPara4 | FLOAT | 4 | +100 | +100 | エフェクトパラメーター。このパラメーターおよびこの構造体に含まれる他の 4 つのパラメーターの用途は、dwEffectType メンバーの値で指定されるエフェクトによって決まります。 | ||||||||||
| bKeepPrevImage | BOOL | 4 | +104 | +104 | 入力サンプルの場合、TRUE は新しい画像が現在の画像を置き換え、現在の画像が破棄されることを示します。このメンバーに FALSE を設定した場合の既定の動作では、現在の画像が直前の画像となり、新しい画像が現在の画像となります。 |
公式ドキュメント
[このページに関連する機能である Windows Media Format 11 SDK はレガシー機能です。この機能は Source Reader および Sink Writer に置き換えられました。Source Reader と Sink Writer は Windows 10 および Windows 11 向けに最適化されています。Microsoft は、可能な場合には新しいコードで Windows Media Format 11 SDK ではなく Source Reader と Sink Writer を使用することを強く推奨します。レガシー API を使用している既存のコードについても、可能であれば新しい API を使用するように書き換えることを推奨します。]
WMT_VIDEOIMAGE_SAMPLE2 構造体は、Video Image ストリームのサンプルを記述します。この構造体は、単独で、または付随する画像とともに、Video Image ストリーム用にライターへ渡す各サンプルで使用しなければなりません。詳細については、Writing Video Image Samples を参照してください。
解説(Remarks)
入力用の Video Image サンプルを作成する場合、現在の画像に関する値は、そのサンプルに付随する画像を表します。直前の画像に関する値は、1 つ前のサンプルで現在の画像であった画像を表します。通常、新しい画像を渡すと直前の画像は破棄されます (古い現在の画像が新しい直前の画像となり、サンプルとともに渡された画像が新しい現在の画像となります)。新しい画像を渡す際に、古い現在の画像を破棄して古い直前の画像を保持したい場合は、bKeepPrevImage メンバーに TRUE を設定します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// WMT_VIDEOIMAGE_SAMPLE2 (x64 108 / x86 108 バイト)
typedef struct WMT_VIDEOIMAGE_SAMPLE2 {
DWORD dwMagic;
DWORD dwStructSize;
DWORD dwControlFlags;
DWORD dwViewportWidth;
DWORD dwViewportHeight;
DWORD dwCurrImageWidth;
DWORD dwCurrImageHeight;
FLOAT fCurrRegionX0;
FLOAT fCurrRegionY0;
FLOAT fCurrRegionWidth;
FLOAT fCurrRegionHeight;
FLOAT fCurrBlendCoef;
DWORD dwPrevImageWidth;
DWORD dwPrevImageHeight;
FLOAT fPrevRegionX0;
FLOAT fPrevRegionY0;
FLOAT fPrevRegionWidth;
FLOAT fPrevRegionHeight;
FLOAT fPrevBlendCoef;
DWORD dwEffectType;
DWORD dwNumEffectParas;
FLOAT fEffectPara0;
FLOAT fEffectPara1;
FLOAT fEffectPara2;
FLOAT fEffectPara3;
FLOAT fEffectPara4;
BOOL bKeepPrevImage;
} WMT_VIDEOIMAGE_SAMPLE2;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WMT_VIDEOIMAGE_SAMPLE2
{
public uint dwMagic;
public uint dwStructSize;
public uint dwControlFlags;
public uint dwViewportWidth;
public uint dwViewportHeight;
public uint dwCurrImageWidth;
public uint dwCurrImageHeight;
public float fCurrRegionX0;
public float fCurrRegionY0;
public float fCurrRegionWidth;
public float fCurrRegionHeight;
public float fCurrBlendCoef;
public uint dwPrevImageWidth;
public uint dwPrevImageHeight;
public float fPrevRegionX0;
public float fPrevRegionY0;
public float fPrevRegionWidth;
public float fPrevRegionHeight;
public float fPrevBlendCoef;
public uint dwEffectType;
public uint dwNumEffectParas;
public float fEffectPara0;
public float fEffectPara1;
public float fEffectPara2;
public float fEffectPara3;
public float fEffectPara4;
[MarshalAs(UnmanagedType.Bool)] public bool bKeepPrevImage;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WMT_VIDEOIMAGE_SAMPLE2
Public dwMagic As UInteger
Public dwStructSize As UInteger
Public dwControlFlags As UInteger
Public dwViewportWidth As UInteger
Public dwViewportHeight As UInteger
Public dwCurrImageWidth As UInteger
Public dwCurrImageHeight As UInteger
Public fCurrRegionX0 As Single
Public fCurrRegionY0 As Single
Public fCurrRegionWidth As Single
Public fCurrRegionHeight As Single
Public fCurrBlendCoef As Single
Public dwPrevImageWidth As UInteger
Public dwPrevImageHeight As UInteger
Public fPrevRegionX0 As Single
Public fPrevRegionY0 As Single
Public fPrevRegionWidth As Single
Public fPrevRegionHeight As Single
Public fPrevBlendCoef As Single
Public dwEffectType As UInteger
Public dwNumEffectParas As UInteger
Public fEffectPara0 As Single
Public fEffectPara1 As Single
Public fEffectPara2 As Single
Public fEffectPara3 As Single
Public fEffectPara4 As Single
<MarshalAs(UnmanagedType.Bool)> Public bKeepPrevImage As Boolean
End Structureimport ctypes
from ctypes import wintypes
class WMT_VIDEOIMAGE_SAMPLE2(ctypes.Structure):
_fields_ = [
("dwMagic", wintypes.DWORD),
("dwStructSize", wintypes.DWORD),
("dwControlFlags", wintypes.DWORD),
("dwViewportWidth", wintypes.DWORD),
("dwViewportHeight", wintypes.DWORD),
("dwCurrImageWidth", wintypes.DWORD),
("dwCurrImageHeight", wintypes.DWORD),
("fCurrRegionX0", ctypes.c_float),
("fCurrRegionY0", ctypes.c_float),
("fCurrRegionWidth", ctypes.c_float),
("fCurrRegionHeight", ctypes.c_float),
("fCurrBlendCoef", ctypes.c_float),
("dwPrevImageWidth", wintypes.DWORD),
("dwPrevImageHeight", wintypes.DWORD),
("fPrevRegionX0", ctypes.c_float),
("fPrevRegionY0", ctypes.c_float),
("fPrevRegionWidth", ctypes.c_float),
("fPrevRegionHeight", ctypes.c_float),
("fPrevBlendCoef", ctypes.c_float),
("dwEffectType", wintypes.DWORD),
("dwNumEffectParas", wintypes.DWORD),
("fEffectPara0", ctypes.c_float),
("fEffectPara1", ctypes.c_float),
("fEffectPara2", ctypes.c_float),
("fEffectPara3", ctypes.c_float),
("fEffectPara4", ctypes.c_float),
("bKeepPrevImage", wintypes.BOOL),
]#[repr(C)]
pub struct WMT_VIDEOIMAGE_SAMPLE2 {
pub dwMagic: u32,
pub dwStructSize: u32,
pub dwControlFlags: u32,
pub dwViewportWidth: u32,
pub dwViewportHeight: u32,
pub dwCurrImageWidth: u32,
pub dwCurrImageHeight: u32,
pub fCurrRegionX0: f32,
pub fCurrRegionY0: f32,
pub fCurrRegionWidth: f32,
pub fCurrRegionHeight: f32,
pub fCurrBlendCoef: f32,
pub dwPrevImageWidth: u32,
pub dwPrevImageHeight: u32,
pub fPrevRegionX0: f32,
pub fPrevRegionY0: f32,
pub fPrevRegionWidth: f32,
pub fPrevRegionHeight: f32,
pub fPrevBlendCoef: f32,
pub dwEffectType: u32,
pub dwNumEffectParas: u32,
pub fEffectPara0: f32,
pub fEffectPara1: f32,
pub fEffectPara2: f32,
pub fEffectPara3: f32,
pub fEffectPara4: f32,
pub bKeepPrevImage: i32,
}import "golang.org/x/sys/windows"
type WMT_VIDEOIMAGE_SAMPLE2 struct {
dwMagic uint32
dwStructSize uint32
dwControlFlags uint32
dwViewportWidth uint32
dwViewportHeight uint32
dwCurrImageWidth uint32
dwCurrImageHeight uint32
fCurrRegionX0 float32
fCurrRegionY0 float32
fCurrRegionWidth float32
fCurrRegionHeight float32
fCurrBlendCoef float32
dwPrevImageWidth uint32
dwPrevImageHeight uint32
fPrevRegionX0 float32
fPrevRegionY0 float32
fPrevRegionWidth float32
fPrevRegionHeight float32
fPrevBlendCoef float32
dwEffectType uint32
dwNumEffectParas uint32
fEffectPara0 float32
fEffectPara1 float32
fEffectPara2 float32
fEffectPara3 float32
fEffectPara4 float32
bKeepPrevImage int32
}type
WMT_VIDEOIMAGE_SAMPLE2 = record
dwMagic: DWORD;
dwStructSize: DWORD;
dwControlFlags: DWORD;
dwViewportWidth: DWORD;
dwViewportHeight: DWORD;
dwCurrImageWidth: DWORD;
dwCurrImageHeight: DWORD;
fCurrRegionX0: Single;
fCurrRegionY0: Single;
fCurrRegionWidth: Single;
fCurrRegionHeight: Single;
fCurrBlendCoef: Single;
dwPrevImageWidth: DWORD;
dwPrevImageHeight: DWORD;
fPrevRegionX0: Single;
fPrevRegionY0: Single;
fPrevRegionWidth: Single;
fPrevRegionHeight: Single;
fPrevBlendCoef: Single;
dwEffectType: DWORD;
dwNumEffectParas: DWORD;
fEffectPara0: Single;
fEffectPara1: Single;
fEffectPara2: Single;
fEffectPara3: Single;
fEffectPara4: Single;
bKeepPrevImage: BOOL;
end;const WMT_VIDEOIMAGE_SAMPLE2 = extern struct {
dwMagic: u32,
dwStructSize: u32,
dwControlFlags: u32,
dwViewportWidth: u32,
dwViewportHeight: u32,
dwCurrImageWidth: u32,
dwCurrImageHeight: u32,
fCurrRegionX0: f32,
fCurrRegionY0: f32,
fCurrRegionWidth: f32,
fCurrRegionHeight: f32,
fCurrBlendCoef: f32,
dwPrevImageWidth: u32,
dwPrevImageHeight: u32,
fPrevRegionX0: f32,
fPrevRegionY0: f32,
fPrevRegionWidth: f32,
fPrevRegionHeight: f32,
fPrevBlendCoef: f32,
dwEffectType: u32,
dwNumEffectParas: u32,
fEffectPara0: f32,
fEffectPara1: f32,
fEffectPara2: f32,
fEffectPara3: f32,
fEffectPara4: f32,
bKeepPrevImage: i32,
};type
WMT_VIDEOIMAGE_SAMPLE2 {.bycopy.} = object
dwMagic: uint32
dwStructSize: uint32
dwControlFlags: uint32
dwViewportWidth: uint32
dwViewportHeight: uint32
dwCurrImageWidth: uint32
dwCurrImageHeight: uint32
fCurrRegionX0: float32
fCurrRegionY0: float32
fCurrRegionWidth: float32
fCurrRegionHeight: float32
fCurrBlendCoef: float32
dwPrevImageWidth: uint32
dwPrevImageHeight: uint32
fPrevRegionX0: float32
fPrevRegionY0: float32
fPrevRegionWidth: float32
fPrevRegionHeight: float32
fPrevBlendCoef: float32
dwEffectType: uint32
dwNumEffectParas: uint32
fEffectPara0: float32
fEffectPara1: float32
fEffectPara2: float32
fEffectPara3: float32
fEffectPara4: float32
bKeepPrevImage: int32struct WMT_VIDEOIMAGE_SAMPLE2
{
uint dwMagic;
uint dwStructSize;
uint dwControlFlags;
uint dwViewportWidth;
uint dwViewportHeight;
uint dwCurrImageWidth;
uint dwCurrImageHeight;
float fCurrRegionX0;
float fCurrRegionY0;
float fCurrRegionWidth;
float fCurrRegionHeight;
float fCurrBlendCoef;
uint dwPrevImageWidth;
uint dwPrevImageHeight;
float fPrevRegionX0;
float fPrevRegionY0;
float fPrevRegionWidth;
float fPrevRegionHeight;
float fPrevBlendCoef;
uint dwEffectType;
uint dwNumEffectParas;
float fEffectPara0;
float fEffectPara1;
float fEffectPara2;
float fEffectPara3;
float fEffectPara4;
int bKeepPrevImage;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WMT_VIDEOIMAGE_SAMPLE2 サイズ: 108 バイト(x64)
dim st, 27 ; 4byte整数×27(構造体サイズ 108 / 4 切り上げ)
; dwMagic : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwStructSize : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwControlFlags : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwViewportWidth : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwViewportHeight : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwCurrImageWidth : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwCurrImageHeight : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; fCurrRegionX0 : FLOAT (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; fCurrRegionY0 : FLOAT (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; fCurrRegionWidth : FLOAT (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; fCurrRegionHeight : FLOAT (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; fCurrBlendCoef : FLOAT (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwPrevImageWidth : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwPrevImageHeight : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; fPrevRegionX0 : FLOAT (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; fPrevRegionY0 : FLOAT (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; fPrevRegionWidth : FLOAT (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; fPrevRegionHeight : FLOAT (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; fPrevBlendCoef : FLOAT (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; dwEffectType : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; dwNumEffectParas : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; fEffectPara0 : FLOAT (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; fEffectPara1 : FLOAT (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; fEffectPara2 : FLOAT (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; fEffectPara3 : FLOAT (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; fEffectPara4 : FLOAT (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; bKeepPrevImage : BOOL (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WMT_VIDEOIMAGE_SAMPLE2
#field int dwMagic
#field int dwStructSize
#field int dwControlFlags
#field int dwViewportWidth
#field int dwViewportHeight
#field int dwCurrImageWidth
#field int dwCurrImageHeight
#field float fCurrRegionX0
#field float fCurrRegionY0
#field float fCurrRegionWidth
#field float fCurrRegionHeight
#field float fCurrBlendCoef
#field int dwPrevImageWidth
#field int dwPrevImageHeight
#field float fPrevRegionX0
#field float fPrevRegionY0
#field float fPrevRegionWidth
#field float fPrevRegionHeight
#field float fPrevBlendCoef
#field int dwEffectType
#field int dwNumEffectParas
#field float fEffectPara0
#field float fEffectPara1
#field float fEffectPara2
#field float fEffectPara3
#field float fEffectPara4
#field bool bKeepPrevImage
#endstruct
stdim st, WMT_VIDEOIMAGE_SAMPLE2 ; NSTRUCT 変数を確保
st->dwMagic = 100
mes "dwMagic=" + st->dwMagic