ホーム › Media.MediaFoundation › D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| NodeIndex | DWORD | 4 | +0 | +0 | マルチGPUアダプタにおける対象ノードのインデックスを指定する。 |
| SessionInfo | D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO | 96/52 | +8 | +4 | 問い合わせ対象のエンコードセッション情報を指定する。 |
| MotionSearchMode | D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE | 4 | +104 | +56 | 動き探索モード(完全探索/外部ヒント利用等)を指定する。 |
| MapSource | D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE | 4 | +108 | +60 | 動きベクトルマップの供給元を指定する。 |
| BidirectionalRefFrameEnabled | BOOL | 4 | +112 | +64 | 双方向参照フレームを有効化するか否かを指定する。 |
| SupportFlags | D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS | 4 | +116 | +68 | 動き探索機能のサポート内容を示すフラグを返す。 |
| MaxMotionHints | DWORD | 4 | +120 | +72 | 1画素あたりに指定可能な動きヒントの最大数を返す。 |
| MinDeviation | DWORD | 4 | +124 | +76 | 動き探索で許容される探索偏差の最小値を返す。 |
| MaxDeviation | DWORD | 4 | +128 | +80 | 動き探索で許容される探索偏差の最大値を返す。 |
| MapSourcePreferenceRanking | DWORD | 4 | +132 | +84 | 複数のマップソース間での推奨順位を示す。値が小さいほど推奨。 |
| MotionUnitPrecisionSupport | D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS | 4 | +136 | +88 | サポートされる動きベクトル単位精度(整数/分数画素)を示すフラグである。 |
各言語での定義
#include <windows.h>
// D3D12_VIDEO_ENCODER_PROFILE_DESC (x64 16 / x86 8 バイト)
typedef struct D3D12_VIDEO_ENCODER_PROFILE_DESC {
DWORD DataSize;
_Anonymous_e__Union Anonymous;
} D3D12_VIDEO_ENCODER_PROFILE_DESC;
// D3D12_VIDEO_ENCODER_LEVEL_SETTING (x64 16 / x86 8 バイト)
typedef struct D3D12_VIDEO_ENCODER_LEVEL_SETTING {
DWORD DataSize;
_Anonymous_e__Union Anonymous;
} D3D12_VIDEO_ENCODER_LEVEL_SETTING;
// D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC (x64 8 / x86 8 バイト)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC {
DWORD Width;
DWORD Height;
} D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
// D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION (x64 16 / x86 8 バイト)
typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION {
DWORD DataSize;
_Anonymous_e__Union Anonymous;
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
// D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA (x64 16 / x86 8 バイト)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA {
DWORD DataSize;
_Anonymous_e__Union Anonymous;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
// D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO (x64 96 / x86 52 バイト)
typedef struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO {
D3D12_VIDEO_ENCODER_CODEC Codec;
D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
DXGI_FORMAT InputFormat;
D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
D3D12_VIDEO_ENCODER_FRAME_SUBREGION_LAYOUT_MODE SubregionFrameEncoding;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
} D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
// D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH (x64 144 / x86 92 バイト)
typedef struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH {
DWORD NodeIndex;
D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE MotionSearchMode;
D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE MapSource;
BOOL BidirectionalRefFrameEnabled;
D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS SupportFlags;
DWORD MaxMotionHints;
DWORD MinDeviation;
DWORD MaxDeviation;
DWORD MapSourcePreferenceRanking;
D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS MotionUnitPrecisionSupport;
} D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_PROFILE_DESC
{
public uint DataSize;
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
{
public uint DataSize;
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
{
public uint Width;
public uint Height;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
{
public uint DataSize;
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
{
public uint DataSize;
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
{
public int Codec;
public D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
public D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
public int InputFormat;
public D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
public D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
public int SubregionFrameEncoding;
public D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
{
public uint NodeIndex;
public D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
public int MotionSearchMode;
public int MapSource;
[MarshalAs(UnmanagedType.Bool)] public bool BidirectionalRefFrameEnabled;
public int SupportFlags;
public uint MaxMotionHints;
public uint MinDeviation;
public uint MaxDeviation;
public uint MapSourcePreferenceRanking;
public int MotionUnitPrecisionSupport;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_PROFILE_DESC
Public DataSize As UInteger
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_LEVEL_SETTING
Public DataSize As UInteger
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
Public Width As UInteger
Public Height As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
Public DataSize As UInteger
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
Public DataSize As UInteger
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
Public Codec As Integer
Public Profile As D3D12_VIDEO_ENCODER_PROFILE_DESC
Public Level As D3D12_VIDEO_ENCODER_LEVEL_SETTING
Public InputFormat As Integer
Public InputResolution As D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
Public CodecConfiguration As D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
Public SubregionFrameEncoding As Integer
Public SubregionFrameEncodingData As D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
Public NodeIndex As UInteger
Public SessionInfo As D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
Public MotionSearchMode As Integer
Public MapSource As Integer
<MarshalAs(UnmanagedType.Bool)> Public BidirectionalRefFrameEnabled As Boolean
Public SupportFlags As Integer
Public MaxMotionHints As UInteger
Public MinDeviation As UInteger
Public MaxDeviation As UInteger
Public MapSourcePreferenceRanking As UInteger
Public MotionUnitPrecisionSupport As Integer
End Structureimport ctypes
from ctypes import wintypes
class D3D12_VIDEO_ENCODER_PROFILE_DESC(ctypes.Structure):
_fields_ = [
("DataSize", wintypes.DWORD),
("Anonymous", _Anonymous_e__Union),
]
class D3D12_VIDEO_ENCODER_LEVEL_SETTING(ctypes.Structure):
_fields_ = [
("DataSize", wintypes.DWORD),
("Anonymous", _Anonymous_e__Union),
]
class D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC(ctypes.Structure):
_fields_ = [
("Width", wintypes.DWORD),
("Height", wintypes.DWORD),
]
class D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION(ctypes.Structure):
_fields_ = [
("DataSize", wintypes.DWORD),
("Anonymous", _Anonymous_e__Union),
]
class D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA(ctypes.Structure):
_fields_ = [
("DataSize", wintypes.DWORD),
("Anonymous", _Anonymous_e__Union),
]
class D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO(ctypes.Structure):
_fields_ = [
("Codec", ctypes.c_int),
("Profile", D3D12_VIDEO_ENCODER_PROFILE_DESC),
("Level", D3D12_VIDEO_ENCODER_LEVEL_SETTING),
("InputFormat", ctypes.c_int),
("InputResolution", D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC),
("CodecConfiguration", D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION),
("SubregionFrameEncoding", ctypes.c_int),
("SubregionFrameEncodingData", D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA),
]
class D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH(ctypes.Structure):
_fields_ = [
("NodeIndex", wintypes.DWORD),
("SessionInfo", D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO),
("MotionSearchMode", ctypes.c_int),
("MapSource", ctypes.c_int),
("BidirectionalRefFrameEnabled", wintypes.BOOL),
("SupportFlags", ctypes.c_int),
("MaxMotionHints", wintypes.DWORD),
("MinDeviation", wintypes.DWORD),
("MaxDeviation", wintypes.DWORD),
("MapSourcePreferenceRanking", wintypes.DWORD),
("MotionUnitPrecisionSupport", ctypes.c_int),
]#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_PROFILE_DESC {
pub DataSize: u32,
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_LEVEL_SETTING {
pub DataSize: u32,
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC {
pub Width: u32,
pub Height: u32,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION {
pub DataSize: u32,
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA {
pub DataSize: u32,
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO {
pub Codec: i32,
pub Profile: D3D12_VIDEO_ENCODER_PROFILE_DESC,
pub Level: D3D12_VIDEO_ENCODER_LEVEL_SETTING,
pub InputFormat: i32,
pub InputResolution: D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC,
pub CodecConfiguration: D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION,
pub SubregionFrameEncoding: i32,
pub SubregionFrameEncodingData: D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA,
}
#[repr(C)]
pub struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH {
pub NodeIndex: u32,
pub SessionInfo: D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO,
pub MotionSearchMode: i32,
pub MapSource: i32,
pub BidirectionalRefFrameEnabled: i32,
pub SupportFlags: i32,
pub MaxMotionHints: u32,
pub MinDeviation: u32,
pub MaxDeviation: u32,
pub MapSourcePreferenceRanking: u32,
pub MotionUnitPrecisionSupport: i32,
}import "golang.org/x/sys/windows"
type D3D12_VIDEO_ENCODER_PROFILE_DESC struct {
DataSize uint32
Anonymous _Anonymous_e__Union
}
type D3D12_VIDEO_ENCODER_LEVEL_SETTING struct {
DataSize uint32
Anonymous _Anonymous_e__Union
}
type D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC struct {
Width uint32
Height uint32
}
type D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION struct {
DataSize uint32
Anonymous _Anonymous_e__Union
}
type D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA struct {
DataSize uint32
Anonymous _Anonymous_e__Union
}
type D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO struct {
Codec int32
Profile D3D12_VIDEO_ENCODER_PROFILE_DESC
Level D3D12_VIDEO_ENCODER_LEVEL_SETTING
InputFormat int32
InputResolution D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
CodecConfiguration D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
SubregionFrameEncoding int32
SubregionFrameEncodingData D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
}
type D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH struct {
NodeIndex uint32
SessionInfo D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
MotionSearchMode int32
MapSource int32
BidirectionalRefFrameEnabled int32
SupportFlags int32
MaxMotionHints uint32
MinDeviation uint32
MaxDeviation uint32
MapSourcePreferenceRanking uint32
MotionUnitPrecisionSupport int32
}type
D3D12_VIDEO_ENCODER_PROFILE_DESC = record
DataSize: DWORD;
Anonymous: _Anonymous_e__Union;
end;
D3D12_VIDEO_ENCODER_LEVEL_SETTING = record
DataSize: DWORD;
Anonymous: _Anonymous_e__Union;
end;
D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC = record
Width: DWORD;
Height: DWORD;
end;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION = record
DataSize: DWORD;
Anonymous: _Anonymous_e__Union;
end;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA = record
DataSize: DWORD;
Anonymous: _Anonymous_e__Union;
end;
D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO = record
Codec: Integer;
Profile: D3D12_VIDEO_ENCODER_PROFILE_DESC;
Level: D3D12_VIDEO_ENCODER_LEVEL_SETTING;
InputFormat: Integer;
InputResolution: D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC;
CodecConfiguration: D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION;
SubregionFrameEncoding: Integer;
SubregionFrameEncodingData: D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA;
end;
D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH = record
NodeIndex: DWORD;
SessionInfo: D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO;
MotionSearchMode: Integer;
MapSource: Integer;
BidirectionalRefFrameEnabled: BOOL;
SupportFlags: Integer;
MaxMotionHints: DWORD;
MinDeviation: DWORD;
MaxDeviation: DWORD;
MapSourcePreferenceRanking: DWORD;
MotionUnitPrecisionSupport: Integer;
end;const D3D12_VIDEO_ENCODER_PROFILE_DESC = extern struct {
DataSize: u32,
Anonymous: _Anonymous_e__Union,
};
const D3D12_VIDEO_ENCODER_LEVEL_SETTING = extern struct {
DataSize: u32,
Anonymous: _Anonymous_e__Union,
};
const D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC = extern struct {
Width: u32,
Height: u32,
};
const D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION = extern struct {
DataSize: u32,
Anonymous: _Anonymous_e__Union,
};
const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA = extern struct {
DataSize: u32,
Anonymous: _Anonymous_e__Union,
};
const D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO = extern struct {
Codec: i32,
Profile: D3D12_VIDEO_ENCODER_PROFILE_DESC,
Level: D3D12_VIDEO_ENCODER_LEVEL_SETTING,
InputFormat: i32,
InputResolution: D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC,
CodecConfiguration: D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION,
SubregionFrameEncoding: i32,
SubregionFrameEncodingData: D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA,
};
const D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH = extern struct {
NodeIndex: u32,
SessionInfo: D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO,
MotionSearchMode: i32,
MapSource: i32,
BidirectionalRefFrameEnabled: i32,
SupportFlags: i32,
MaxMotionHints: u32,
MinDeviation: u32,
MaxDeviation: u32,
MapSourcePreferenceRanking: u32,
MotionUnitPrecisionSupport: i32,
};type
D3D12_VIDEO_ENCODER_PROFILE_DESC {.bycopy.} = object
DataSize: uint32
Anonymous: _Anonymous_e__Union
D3D12_VIDEO_ENCODER_LEVEL_SETTING {.bycopy.} = object
DataSize: uint32
Anonymous: _Anonymous_e__Union
D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC {.bycopy.} = object
Width: uint32
Height: uint32
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION {.bycopy.} = object
DataSize: uint32
Anonymous: _Anonymous_e__Union
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA {.bycopy.} = object
DataSize: uint32
Anonymous: _Anonymous_e__Union
D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO {.bycopy.} = object
Codec: int32
Profile: D3D12_VIDEO_ENCODER_PROFILE_DESC
Level: D3D12_VIDEO_ENCODER_LEVEL_SETTING
InputFormat: int32
InputResolution: D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
CodecConfiguration: D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
SubregionFrameEncoding: int32
SubregionFrameEncodingData: D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH {.bycopy.} = object
NodeIndex: uint32
SessionInfo: D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
MotionSearchMode: int32
MapSource: int32
BidirectionalRefFrameEnabled: int32
SupportFlags: int32
MaxMotionHints: uint32
MinDeviation: uint32
MaxDeviation: uint32
MapSourcePreferenceRanking: uint32
MotionUnitPrecisionSupport: int32struct D3D12_VIDEO_ENCODER_PROFILE_DESC
{
uint DataSize;
_Anonymous_e__Union Anonymous;
}
struct D3D12_VIDEO_ENCODER_LEVEL_SETTING
{
uint DataSize;
_Anonymous_e__Union Anonymous;
}
struct D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
{
uint Width;
uint Height;
}
struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
{
uint DataSize;
_Anonymous_e__Union Anonymous;
}
struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
{
uint DataSize;
_Anonymous_e__Union Anonymous;
}
struct D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
{
int Codec;
D3D12_VIDEO_ENCODER_PROFILE_DESC Profile;
D3D12_VIDEO_ENCODER_LEVEL_SETTING Level;
int InputFormat;
D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration;
int SubregionFrameEncoding;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData;
}
struct D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
{
uint NodeIndex;
D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo;
int MotionSearchMode;
int MapSource;
int BidirectionalRefFrameEnabled;
int SupportFlags;
uint MaxMotionHints;
uint MinDeviation;
uint MaxDeviation;
uint MapSourcePreferenceRanking;
int MotionUnitPrecisionSupport;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH サイズ: 92 バイト(x86)
dim st, 23 ; 4byte整数×23(構造体サイズ 92 / 4 切り上げ)
; NodeIndex : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; SessionInfo : D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO (+4, 52byte) varptr(st)+4 を基点に操作(52byte:入れ子/配列)
; MotionSearchMode : D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; MapSource : D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; BidirectionalRefFrameEnabled : BOOL (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; SupportFlags : D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; MaxMotionHints : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; MinDeviation : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; MaxDeviation : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; MapSourcePreferenceRanking : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; MotionUnitPrecisionSupport : D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH サイズ: 144 バイト(x64)
dim st, 36 ; 4byte整数×36(構造体サイズ 144 / 4 切り上げ)
; NodeIndex : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; SessionInfo : D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO (+8, 96byte) varptr(st)+8 を基点に操作(96byte:入れ子/配列)
; MotionSearchMode : D3D12_VIDEO_ENCODER_FRAME_MOTION_SEARCH_MODE (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; MapSource : D3D12_VIDEO_ENCODER_INPUT_MAP_SOURCE (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; BidirectionalRefFrameEnabled : BOOL (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; SupportFlags : D3D12_VIDEO_ENCODER_MOTION_SEARCH_SUPPORT_FLAGS (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; MaxMotionHints : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; MinDeviation : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; MaxDeviation : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; MapSourcePreferenceRanking : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; MotionUnitPrecisionSupport : D3D12_VIDEO_ENCODER_FRAME_INPUT_MOTION_UNIT_PRECISION_SUPPORT_FLAGS (+136, 4byte) st.34 = 値 / 値 = st.34 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global D3D12_VIDEO_ENCODER_PROFILE_DESC
#field int DataSize
#field byte Anonymous 8
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_LEVEL_SETTING
#field int DataSize
#field byte Anonymous 8
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC
#field int Width
#field int Height
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION
#field int DataSize
#field byte Anonymous 8
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA
#field int DataSize
#field byte Anonymous 8
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO
#field int Codec
#field D3D12_VIDEO_ENCODER_PROFILE_DESC Profile
#field D3D12_VIDEO_ENCODER_LEVEL_SETTING Level
#field int InputFormat
#field D3D12_VIDEO_ENCODER_PICTURE_RESOLUTION_DESC InputResolution
#field D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION CodecConfiguration
#field int SubregionFrameEncoding
#field D3D12_VIDEO_ENCODER_PICTURE_CONTROL_SUBREGIONS_LAYOUT_DATA SubregionFrameEncodingData
#endstruct
#defstruct global D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH
#field int NodeIndex
#field D3D12_VIDEO_ENCODER_INPUT_MAP_SESSION_INFO SessionInfo
#field int MotionSearchMode
#field int MapSource
#field bool BidirectionalRefFrameEnabled
#field int SupportFlags
#field int MaxMotionHints
#field int MinDeviation
#field int MaxDeviation
#field int MapSourcePreferenceRanking
#field int MotionUnitPrecisionSupport
#endstruct
stdim st, D3D12_FEATURE_DATA_VIDEO_ENCODER_MOTION_SEARCH ; NSTRUCT 変数を確保
st->NodeIndex = 100
mes "NodeIndex=" + st->NodeIndex