ホーム › Media.WindowsMediaFormat › WMT_VIDEOIMAGE_SAMPLE2
WMT_VIDEOIMAGE_SAMPLE2
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwMagic | DWORD | 4 | +0 | +0 | 構造体識別用のマジック値。 |
| dwStructSize | DWORD | 4 | +4 | +4 | この構造体のサイズをバイトで示す。 |
| dwControlFlags | DWORD | 4 | +8 | +8 | 画像変換・効果の制御フラグ。 |
| 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 | 現フレームのブレンド係数(浮動小数点)。 |
| 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 | 前フレームのブレンド係数(浮動小数点)。 |
| dwEffectType | DWORD | 4 | +76 | +76 | 適用する遷移効果の種類を示す値。 |
| dwNumEffectParas | DWORD | 4 | +80 | +80 | 有効な効果パラメータの数。 |
| fEffectPara0 | FLOAT | 4 | +84 | +84 | 効果パラメータ0(浮動小数点)。 |
| fEffectPara1 | FLOAT | 4 | +88 | +88 | 効果パラメータ1(浮動小数点)。 |
| fEffectPara2 | FLOAT | 4 | +92 | +92 | 効果パラメータ2(浮動小数点)。 |
| fEffectPara3 | FLOAT | 4 | +96 | +96 | 効果パラメータ3(浮動小数点)。 |
| fEffectPara4 | FLOAT | 4 | +100 | +100 | 効果パラメータ4(浮動小数点)。 |
| bKeepPrevImage | BOOL | 4 | +104 | +104 | 前フレーム画像を保持し再利用するならTRUE。 |
各言語での定義
#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