ホーム › Media.MediaFoundation › D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Flags | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS | 4 | +0 | +0 | 当該ピクチャのH264固有制御を示すフラグの組み合わせである。 |
| FrameType | D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 | 4 | +4 | +4 | 符号化するフレームの種別(I/P/B/IDR)を指定する。 |
| pic_parameter_set_id | DWORD | 4 | +8 | +8 | 当該ピクチャが参照するピクチャパラメータセット(PPS)のIDを指定する。 |
| idr_pic_id | DWORD | 4 | +12 | +12 | IDRピクチャを識別するIDを指定する。IDRフレーム時に使用。 |
| PictureOrderCountNumber | DWORD | 4 | +16 | +16 | 当該ピクチャのピクチャ順序カウント(POC)値を指定する。 |
| FrameDecodingOrderNumber | DWORD | 4 | +20 | +20 | 当該ピクチャのデコード順序番号(frame_num)を指定する。 |
| TemporalLayerIndex | DWORD | 4 | +24 | +24 | 当該ピクチャが属する時間階層のインデックスを指定する。 |
| List0ReferenceFramesCount | DWORD | 4 | +28 | +28 | 参照リストL0に含まれる参照フレーム数を指定する。 |
| pList0ReferenceFrames | DWORD* | 8/4 | +32 | +32 | 参照リストL0の参照ピクチャ記述子インデックス配列へのポインタである。 |
| List1ReferenceFramesCount | DWORD | 4 | +40 | +36 | 参照リストL1に含まれる参照フレーム数を指定する。 |
| pList1ReferenceFrames | DWORD* | 8/4 | +48 | +40 | 参照リストL1の参照ピクチャ記述子インデックス配列へのポインタである。 |
| ReferenceFramesReconPictureDescriptorsCount | DWORD | 4 | +56 | +44 | 参照フレーム再構成ピクチャ記述子配列の要素数を指定する。 |
| pReferenceFramesReconPictureDescriptors | D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* | 8/4 | +64 | +48 | 参照フレームの再構成ピクチャ記述子配列へのポインタである。 |
| adaptive_ref_pic_marking_mode_flag | BYTE | 1 | +72 | +52 | 適応的参照ピクチャマーキング(MMCO使用)を有効化するフラグである。 |
| RefPicMarkingOperationsCommandsCount | DWORD | 4 | +76 | +56 | 参照ピクチャマーキング操作コマンドの数を指定する。 |
| pRefPicMarkingOperationsCommands | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* | 8/4 | +80 | +60 | 参照ピクチャマーキング操作(MMCO)コマンド配列へのポインタである。 |
| List0RefPicModificationsCount | DWORD | 4 | +88 | +64 | L0参照ピクチャリスト並べ替え操作の数を指定する。 |
| pList0RefPicModifications | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* | 8/4 | +96 | +68 | L0参照ピクチャリスト並べ替え操作配列へのポインタである。 |
| List1RefPicModificationsCount | DWORD | 4 | +104 | +72 | L1参照ピクチャリスト並べ替え操作の数を指定する。 |
| pList1RefPicModifications | D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* | 8/4 | +112 | +76 | L1参照ピクチャリスト並べ替え操作配列へのポインタである。 |
| QPMapValuesCount | DWORD | 4 | +120 | +80 | pRateControlQPMapが指すQPマップ値配列の要素数を指定する。 |
| pRateControlQPMap | CHAR* | 8/4 | +128 | +84 | ブロック単位のQP値を格納したマップ配列へのポインタである。 |
各言語での定義
#include <windows.h>
// D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 (x64 136 / x86 88 バイト)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS Flags;
D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 FrameType;
DWORD pic_parameter_set_id;
DWORD idr_pic_id;
DWORD PictureOrderCountNumber;
DWORD FrameDecodingOrderNumber;
DWORD TemporalLayerIndex;
DWORD List0ReferenceFramesCount;
DWORD* pList0ReferenceFrames;
DWORD List1ReferenceFramesCount;
DWORD* pList1ReferenceFrames;
DWORD ReferenceFramesReconPictureDescriptorsCount;
D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* pReferenceFramesReconPictureDescriptors;
BYTE adaptive_ref_pic_marking_mode_flag;
DWORD RefPicMarkingOperationsCommandsCount;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* pRefPicMarkingOperationsCommands;
DWORD List0RefPicModificationsCount;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList0RefPicModifications;
DWORD List1RefPicModificationsCount;
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* pList1RefPicModifications;
DWORD QPMapValuesCount;
CHAR* pRateControlQPMap;
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
{
public int Flags;
public int FrameType;
public uint pic_parameter_set_id;
public uint idr_pic_id;
public uint PictureOrderCountNumber;
public uint FrameDecodingOrderNumber;
public uint TemporalLayerIndex;
public uint List0ReferenceFramesCount;
public IntPtr pList0ReferenceFrames;
public uint List1ReferenceFramesCount;
public IntPtr pList1ReferenceFrames;
public uint ReferenceFramesReconPictureDescriptorsCount;
public IntPtr pReferenceFramesReconPictureDescriptors;
public byte adaptive_ref_pic_marking_mode_flag;
public uint RefPicMarkingOperationsCommandsCount;
public IntPtr pRefPicMarkingOperationsCommands;
public uint List0RefPicModificationsCount;
public IntPtr pList0RefPicModifications;
public uint List1RefPicModificationsCount;
public IntPtr pList1RefPicModifications;
public uint QPMapValuesCount;
public IntPtr pRateControlQPMap;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
Public Flags As Integer
Public FrameType As Integer
Public pic_parameter_set_id As UInteger
Public idr_pic_id As UInteger
Public PictureOrderCountNumber As UInteger
Public FrameDecodingOrderNumber As UInteger
Public TemporalLayerIndex As UInteger
Public List0ReferenceFramesCount As UInteger
Public pList0ReferenceFrames As IntPtr
Public List1ReferenceFramesCount As UInteger
Public pList1ReferenceFrames As IntPtr
Public ReferenceFramesReconPictureDescriptorsCount As UInteger
Public pReferenceFramesReconPictureDescriptors As IntPtr
Public adaptive_ref_pic_marking_mode_flag As Byte
Public RefPicMarkingOperationsCommandsCount As UInteger
Public pRefPicMarkingOperationsCommands As IntPtr
Public List0RefPicModificationsCount As UInteger
Public pList0RefPicModifications As IntPtr
Public List1RefPicModificationsCount As UInteger
Public pList1RefPicModifications As IntPtr
Public QPMapValuesCount As UInteger
Public pRateControlQPMap As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264(ctypes.Structure):
_fields_ = [
("Flags", ctypes.c_int),
("FrameType", ctypes.c_int),
("pic_parameter_set_id", wintypes.DWORD),
("idr_pic_id", wintypes.DWORD),
("PictureOrderCountNumber", wintypes.DWORD),
("FrameDecodingOrderNumber", wintypes.DWORD),
("TemporalLayerIndex", wintypes.DWORD),
("List0ReferenceFramesCount", wintypes.DWORD),
("pList0ReferenceFrames", ctypes.c_void_p),
("List1ReferenceFramesCount", wintypes.DWORD),
("pList1ReferenceFrames", ctypes.c_void_p),
("ReferenceFramesReconPictureDescriptorsCount", wintypes.DWORD),
("pReferenceFramesReconPictureDescriptors", ctypes.c_void_p),
("adaptive_ref_pic_marking_mode_flag", ctypes.c_ubyte),
("RefPicMarkingOperationsCommandsCount", wintypes.DWORD),
("pRefPicMarkingOperationsCommands", ctypes.c_void_p),
("List0RefPicModificationsCount", wintypes.DWORD),
("pList0RefPicModifications", ctypes.c_void_p),
("List1RefPicModificationsCount", wintypes.DWORD),
("pList1RefPicModifications", ctypes.c_void_p),
("QPMapValuesCount", wintypes.DWORD),
("pRateControlQPMap", ctypes.c_void_p),
]#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {
pub Flags: i32,
pub FrameType: i32,
pub pic_parameter_set_id: u32,
pub idr_pic_id: u32,
pub PictureOrderCountNumber: u32,
pub FrameDecodingOrderNumber: u32,
pub TemporalLayerIndex: u32,
pub List0ReferenceFramesCount: u32,
pub pList0ReferenceFrames: *mut core::ffi::c_void,
pub List1ReferenceFramesCount: u32,
pub pList1ReferenceFrames: *mut core::ffi::c_void,
pub ReferenceFramesReconPictureDescriptorsCount: u32,
pub pReferenceFramesReconPictureDescriptors: *mut core::ffi::c_void,
pub adaptive_ref_pic_marking_mode_flag: u8,
pub RefPicMarkingOperationsCommandsCount: u32,
pub pRefPicMarkingOperationsCommands: *mut core::ffi::c_void,
pub List0RefPicModificationsCount: u32,
pub pList0RefPicModifications: *mut core::ffi::c_void,
pub List1RefPicModificationsCount: u32,
pub pList1RefPicModifications: *mut core::ffi::c_void,
pub QPMapValuesCount: u32,
pub pRateControlQPMap: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 struct {
Flags int32
FrameType int32
pic_parameter_set_id uint32
idr_pic_id uint32
PictureOrderCountNumber uint32
FrameDecodingOrderNumber uint32
TemporalLayerIndex uint32
List0ReferenceFramesCount uint32
pList0ReferenceFrames uintptr
List1ReferenceFramesCount uint32
pList1ReferenceFrames uintptr
ReferenceFramesReconPictureDescriptorsCount uint32
pReferenceFramesReconPictureDescriptors uintptr
adaptive_ref_pic_marking_mode_flag byte
RefPicMarkingOperationsCommandsCount uint32
pRefPicMarkingOperationsCommands uintptr
List0RefPicModificationsCount uint32
pList0RefPicModifications uintptr
List1RefPicModificationsCount uint32
pList1RefPicModifications uintptr
QPMapValuesCount uint32
pRateControlQPMap uintptr
}type
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 = record
Flags: Integer;
FrameType: Integer;
pic_parameter_set_id: DWORD;
idr_pic_id: DWORD;
PictureOrderCountNumber: DWORD;
FrameDecodingOrderNumber: DWORD;
TemporalLayerIndex: DWORD;
List0ReferenceFramesCount: DWORD;
pList0ReferenceFrames: Pointer;
List1ReferenceFramesCount: DWORD;
pList1ReferenceFrames: Pointer;
ReferenceFramesReconPictureDescriptorsCount: DWORD;
pReferenceFramesReconPictureDescriptors: Pointer;
adaptive_ref_pic_marking_mode_flag: Byte;
RefPicMarkingOperationsCommandsCount: DWORD;
pRefPicMarkingOperationsCommands: Pointer;
List0RefPicModificationsCount: DWORD;
pList0RefPicModifications: Pointer;
List1RefPicModificationsCount: DWORD;
pList1RefPicModifications: Pointer;
QPMapValuesCount: DWORD;
pRateControlQPMap: Pointer;
end;const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 = extern struct {
Flags: i32,
FrameType: i32,
pic_parameter_set_id: u32,
idr_pic_id: u32,
PictureOrderCountNumber: u32,
FrameDecodingOrderNumber: u32,
TemporalLayerIndex: u32,
List0ReferenceFramesCount: u32,
pList0ReferenceFrames: ?*anyopaque,
List1ReferenceFramesCount: u32,
pList1ReferenceFrames: ?*anyopaque,
ReferenceFramesReconPictureDescriptorsCount: u32,
pReferenceFramesReconPictureDescriptors: ?*anyopaque,
adaptive_ref_pic_marking_mode_flag: u8,
RefPicMarkingOperationsCommandsCount: u32,
pRefPicMarkingOperationsCommands: ?*anyopaque,
List0RefPicModificationsCount: u32,
pList0RefPicModifications: ?*anyopaque,
List1RefPicModificationsCount: u32,
pList1RefPicModifications: ?*anyopaque,
QPMapValuesCount: u32,
pRateControlQPMap: ?*anyopaque,
};type
D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 {.bycopy.} = object
Flags: int32
FrameType: int32
pic_parameter_set_id: uint32
idr_pic_id: uint32
PictureOrderCountNumber: uint32
FrameDecodingOrderNumber: uint32
TemporalLayerIndex: uint32
List0ReferenceFramesCount: uint32
pList0ReferenceFrames: pointer
List1ReferenceFramesCount: uint32
pList1ReferenceFrames: pointer
ReferenceFramesReconPictureDescriptorsCount: uint32
pReferenceFramesReconPictureDescriptors: pointer
adaptive_ref_pic_marking_mode_flag: uint8
RefPicMarkingOperationsCommandsCount: uint32
pRefPicMarkingOperationsCommands: pointer
List0RefPicModificationsCount: uint32
pList0RefPicModifications: pointer
List1RefPicModificationsCount: uint32
pList1RefPicModifications: pointer
QPMapValuesCount: uint32
pRateControlQPMap: pointerstruct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
{
int Flags;
int FrameType;
uint pic_parameter_set_id;
uint idr_pic_id;
uint PictureOrderCountNumber;
uint FrameDecodingOrderNumber;
uint TemporalLayerIndex;
uint List0ReferenceFramesCount;
void* pList0ReferenceFrames;
uint List1ReferenceFramesCount;
void* pList1ReferenceFrames;
uint ReferenceFramesReconPictureDescriptorsCount;
void* pReferenceFramesReconPictureDescriptors;
ubyte adaptive_ref_pic_marking_mode_flag;
uint RefPicMarkingOperationsCommandsCount;
void* pRefPicMarkingOperationsCommands;
uint List0RefPicModificationsCount;
void* pList0RefPicModifications;
uint List1RefPicModificationsCount;
void* pList1RefPicModifications;
uint QPMapValuesCount;
void* pRateControlQPMap;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 サイズ: 88 バイト(x86)
dim st, 22 ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; Flags : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; FrameType : D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pic_parameter_set_id : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; idr_pic_id : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; PictureOrderCountNumber : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; FrameDecodingOrderNumber : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; TemporalLayerIndex : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; List0ReferenceFramesCount : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pList0ReferenceFrames : DWORD* (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; List1ReferenceFramesCount : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; pList1ReferenceFrames : DWORD* (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; ReferenceFramesReconPictureDescriptorsCount : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; pReferenceFramesReconPictureDescriptors : D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* (+48, 4byte) varptr(st)+48 を基点に操作(4byte:入れ子/配列)
; adaptive_ref_pic_marking_mode_flag : BYTE (+52, 1byte) poke st,52,値 / 値 = peek(st,52)
; RefPicMarkingOperationsCommandsCount : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; pRefPicMarkingOperationsCommands : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* (+60, 4byte) varptr(st)+60 を基点に操作(4byte:入れ子/配列)
; List0RefPicModificationsCount : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; pList0RefPicModifications : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* (+68, 4byte) varptr(st)+68 を基点に操作(4byte:入れ子/配列)
; List1RefPicModificationsCount : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; pList1RefPicModifications : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* (+76, 4byte) varptr(st)+76 を基点に操作(4byte:入れ子/配列)
; QPMapValuesCount : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; pRateControlQPMap : CHAR* (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 サイズ: 136 バイト(x64)
dim st, 34 ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; Flags : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; FrameType : D3D12_VIDEO_ENCODER_FRAME_TYPE_H264 (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; pic_parameter_set_id : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; idr_pic_id : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; PictureOrderCountNumber : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; FrameDecodingOrderNumber : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; TemporalLayerIndex : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; List0ReferenceFramesCount : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; pList0ReferenceFrames : DWORD* (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; List1ReferenceFramesCount : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; pList1ReferenceFrames : DWORD* (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ReferenceFramesReconPictureDescriptorsCount : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; pReferenceFramesReconPictureDescriptors : D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_H264* (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; adaptive_ref_pic_marking_mode_flag : BYTE (+72, 1byte) poke st,72,値 / 値 = peek(st,72)
; RefPicMarkingOperationsCommandsCount : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; pRefPicMarkingOperationsCommands : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_MARKING_OPERATION* (+80, 8byte) varptr(st)+80 を基点に操作(8byte:入れ子/配列)
; List0RefPicModificationsCount : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; pList0RefPicModifications : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* (+96, 8byte) varptr(st)+96 を基点に操作(8byte:入れ子/配列)
; List1RefPicModificationsCount : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; pList1RefPicModifications : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264_REFERENCE_PICTURE_LIST_MODIFICATION_OPERATION* (+112, 8byte) varptr(st)+112 を基点に操作(8byte:入れ子/配列)
; QPMapValuesCount : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; pRateControlQPMap : CHAR* (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264
#field int Flags
#field int FrameType
#field int pic_parameter_set_id
#field int idr_pic_id
#field int PictureOrderCountNumber
#field int FrameDecodingOrderNumber
#field int TemporalLayerIndex
#field int List0ReferenceFramesCount
#field intptr pList0ReferenceFrames
#field int List1ReferenceFramesCount
#field intptr pList1ReferenceFrames
#field int ReferenceFramesReconPictureDescriptorsCount
#field intptr pReferenceFramesReconPictureDescriptors
#field byte adaptive_ref_pic_marking_mode_flag
#field int RefPicMarkingOperationsCommandsCount
#field intptr pRefPicMarkingOperationsCommands
#field int List0RefPicModificationsCount
#field intptr pList0RefPicModifications
#field int List1RefPicModificationsCount
#field intptr pList1RefPicModifications
#field int QPMapValuesCount
#field intptr pRateControlQPMap
#endstruct
stdim st, D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_H264 ; NSTRUCT 変数を確保
st->Flags = 100
mes "Flags=" + st->Flags