Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1

D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1

構造体
サイズx64: 136 バイト / x86: 88 バイト

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

フィールド

フィールドサイズx64x86説明
FlagsD3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS4+0+0当該ピクチャのHEVC固有制御を示すフラグの組み合わせである。
FrameTypeD3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC4+4+4符号化するフレームの種別(I/P/B/IDR)を指定する。
slice_pic_parameter_set_idDWORD4+8+8当該スライスが参照するPPSのIDを指定する。
PictureOrderCountNumberDWORD4+12+12当該ピクチャのピクチャ順序カウント(POC)値を指定する。
TemporalLayerIndexDWORD4+16+16当該ピクチャが属する時間階層のインデックスを指定する。
List0ReferenceFramesCountDWORD4+20+20参照リストL0に含まれる参照フレーム数を指定する。
pList0ReferenceFramesDWORD*8/4+24+24参照リストL0の参照ピクチャ記述子インデックス配列へのポインタである。
List1ReferenceFramesCountDWORD4+32+28参照リストL1に含まれる参照フレーム数を指定する。
pList1ReferenceFramesDWORD*8/4+40+32参照リストL1の参照ピクチャ記述子インデックス配列へのポインタである。
ReferenceFramesReconPictureDescriptorsCountDWORD4+48+36参照フレーム再構成ピクチャ記述子配列の要素数を指定する。
pReferenceFramesReconPictureDescriptorsD3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC*8/4+56+40参照フレームの再構成ピクチャ記述子配列へのポインタである。
List0RefPicModificationsCountDWORD4+64+44L0参照ピクチャリスト並べ替え操作の数を指定する。
pList0RefPicModificationsDWORD*8/4+72+48L0参照ピクチャリスト並べ替えインデックス配列へのポインタである。
List1RefPicModificationsCountDWORD4+80+52L1参照ピクチャリスト並べ替え操作の数を指定する。
pList1RefPicModificationsDWORD*8/4+88+56L1参照ピクチャリスト並べ替えインデックス配列へのポインタである。
QPMapValuesCountDWORD4+96+60pRateControlQPMapが指すQPマップ値配列の要素数を指定する。
pRateControlQPMapCHAR*8/4+104+64ブロック単位のQP値を格納したマップ配列へのポインタである。
diff_cu_chroma_qp_offset_depthBYTE1+112+68色差QPオフセットを適用するCU深度差分を示すHEVC構文要素である。
log2_sao_offset_scale_lumaBYTE1+113+69輝度SAOオフセットスケールのlog2値を示すHEVC構文要素である。
log2_sao_offset_scale_chromaBYTE1+114+70色差SAOオフセットスケールのlog2値を示すHEVC構文要素である。
log2_max_transform_skip_block_size_minus2BYTE1+115+71変換スキップ適用可能な最大ブロックサイズのlog2値から2を引いた値である。
chroma_qp_offset_list_len_minus1BYTE1+116+72色差QPオフセットリストの長さから1を引いた値である。
cb_qp_offset_listCHAR6+117+73Cb成分に適用する色差QPオフセットリストの値を示す。
cr_qp_offset_listCHAR6+123+79Cr成分に適用する色差QPオフセットリストの値を示す。

各言語での定義

#include <windows.h>

// D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1  (x64 136 / x86 88 バイト)
typedef struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 {
    D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS Flags;
    D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC FrameType;
    DWORD slice_pic_parameter_set_id;
    DWORD PictureOrderCountNumber;
    DWORD TemporalLayerIndex;
    DWORD List0ReferenceFramesCount;
    DWORD* pList0ReferenceFrames;
    DWORD List1ReferenceFramesCount;
    DWORD* pList1ReferenceFrames;
    DWORD ReferenceFramesReconPictureDescriptorsCount;
    D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* pReferenceFramesReconPictureDescriptors;
    DWORD List0RefPicModificationsCount;
    DWORD* pList0RefPicModifications;
    DWORD List1RefPicModificationsCount;
    DWORD* pList1RefPicModifications;
    DWORD QPMapValuesCount;
    CHAR* pRateControlQPMap;
    BYTE diff_cu_chroma_qp_offset_depth;
    BYTE log2_sao_offset_scale_luma;
    BYTE log2_sao_offset_scale_chroma;
    BYTE log2_max_transform_skip_block_size_minus2;
    BYTE chroma_qp_offset_list_len_minus1;
    CHAR cb_qp_offset_list[6];
    CHAR cr_qp_offset_list[6];
} D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
{
    public int Flags;
    public int FrameType;
    public uint slice_pic_parameter_set_id;
    public uint PictureOrderCountNumber;
    public uint TemporalLayerIndex;
    public uint List0ReferenceFramesCount;
    public IntPtr pList0ReferenceFrames;
    public uint List1ReferenceFramesCount;
    public IntPtr pList1ReferenceFrames;
    public uint ReferenceFramesReconPictureDescriptorsCount;
    public IntPtr pReferenceFramesReconPictureDescriptors;
    public uint List0RefPicModificationsCount;
    public IntPtr pList0RefPicModifications;
    public uint List1RefPicModificationsCount;
    public IntPtr pList1RefPicModifications;
    public uint QPMapValuesCount;
    public IntPtr pRateControlQPMap;
    public byte diff_cu_chroma_qp_offset_depth;
    public byte log2_sao_offset_scale_luma;
    public byte log2_sao_offset_scale_chroma;
    public byte log2_max_transform_skip_block_size_minus2;
    public byte chroma_qp_offset_list_len_minus1;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public sbyte[] cb_qp_offset_list;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public sbyte[] cr_qp_offset_list;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
    Public Flags As Integer
    Public FrameType As Integer
    Public slice_pic_parameter_set_id As UInteger
    Public PictureOrderCountNumber 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 List0RefPicModificationsCount As UInteger
    Public pList0RefPicModifications As IntPtr
    Public List1RefPicModificationsCount As UInteger
    Public pList1RefPicModifications As IntPtr
    Public QPMapValuesCount As UInteger
    Public pRateControlQPMap As IntPtr
    Public diff_cu_chroma_qp_offset_depth As Byte
    Public log2_sao_offset_scale_luma As Byte
    Public log2_sao_offset_scale_chroma As Byte
    Public log2_max_transform_skip_block_size_minus2 As Byte
    Public chroma_qp_offset_list_len_minus1 As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public cb_qp_offset_list() As SByte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public cr_qp_offset_list() As SByte
End Structure
import ctypes
from ctypes import wintypes

class D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1(ctypes.Structure):
    _fields_ = [
        ("Flags", ctypes.c_int),
        ("FrameType", ctypes.c_int),
        ("slice_pic_parameter_set_id", wintypes.DWORD),
        ("PictureOrderCountNumber", 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),
        ("List0RefPicModificationsCount", wintypes.DWORD),
        ("pList0RefPicModifications", ctypes.c_void_p),
        ("List1RefPicModificationsCount", wintypes.DWORD),
        ("pList1RefPicModifications", ctypes.c_void_p),
        ("QPMapValuesCount", wintypes.DWORD),
        ("pRateControlQPMap", ctypes.c_void_p),
        ("diff_cu_chroma_qp_offset_depth", ctypes.c_ubyte),
        ("log2_sao_offset_scale_luma", ctypes.c_ubyte),
        ("log2_sao_offset_scale_chroma", ctypes.c_ubyte),
        ("log2_max_transform_skip_block_size_minus2", ctypes.c_ubyte),
        ("chroma_qp_offset_list_len_minus1", ctypes.c_ubyte),
        ("cb_qp_offset_list", ctypes.c_byte * 6),
        ("cr_qp_offset_list", ctypes.c_byte * 6),
    ]
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 {
    pub Flags: i32,
    pub FrameType: i32,
    pub slice_pic_parameter_set_id: u32,
    pub PictureOrderCountNumber: 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 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,
    pub diff_cu_chroma_qp_offset_depth: u8,
    pub log2_sao_offset_scale_luma: u8,
    pub log2_sao_offset_scale_chroma: u8,
    pub log2_max_transform_skip_block_size_minus2: u8,
    pub chroma_qp_offset_list_len_minus1: u8,
    pub cb_qp_offset_list: [i8; 6],
    pub cr_qp_offset_list: [i8; 6],
}
import "golang.org/x/sys/windows"

type D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 struct {
	Flags int32
	FrameType int32
	slice_pic_parameter_set_id uint32
	PictureOrderCountNumber uint32
	TemporalLayerIndex uint32
	List0ReferenceFramesCount uint32
	pList0ReferenceFrames uintptr
	List1ReferenceFramesCount uint32
	pList1ReferenceFrames uintptr
	ReferenceFramesReconPictureDescriptorsCount uint32
	pReferenceFramesReconPictureDescriptors uintptr
	List0RefPicModificationsCount uint32
	pList0RefPicModifications uintptr
	List1RefPicModificationsCount uint32
	pList1RefPicModifications uintptr
	QPMapValuesCount uint32
	pRateControlQPMap uintptr
	diff_cu_chroma_qp_offset_depth byte
	log2_sao_offset_scale_luma byte
	log2_sao_offset_scale_chroma byte
	log2_max_transform_skip_block_size_minus2 byte
	chroma_qp_offset_list_len_minus1 byte
	cb_qp_offset_list [6]int8
	cr_qp_offset_list [6]int8
}
type
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 = record
    Flags: Integer;
    FrameType: Integer;
    slice_pic_parameter_set_id: DWORD;
    PictureOrderCountNumber: DWORD;
    TemporalLayerIndex: DWORD;
    List0ReferenceFramesCount: DWORD;
    pList0ReferenceFrames: Pointer;
    List1ReferenceFramesCount: DWORD;
    pList1ReferenceFrames: Pointer;
    ReferenceFramesReconPictureDescriptorsCount: DWORD;
    pReferenceFramesReconPictureDescriptors: Pointer;
    List0RefPicModificationsCount: DWORD;
    pList0RefPicModifications: Pointer;
    List1RefPicModificationsCount: DWORD;
    pList1RefPicModifications: Pointer;
    QPMapValuesCount: DWORD;
    pRateControlQPMap: Pointer;
    diff_cu_chroma_qp_offset_depth: Byte;
    log2_sao_offset_scale_luma: Byte;
    log2_sao_offset_scale_chroma: Byte;
    log2_max_transform_skip_block_size_minus2: Byte;
    chroma_qp_offset_list_len_minus1: Byte;
    cb_qp_offset_list: array[0..5] of Shortint;
    cr_qp_offset_list: array[0..5] of Shortint;
  end;
const D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 = extern struct {
    Flags: i32,
    FrameType: i32,
    slice_pic_parameter_set_id: u32,
    PictureOrderCountNumber: u32,
    TemporalLayerIndex: u32,
    List0ReferenceFramesCount: u32,
    pList0ReferenceFrames: ?*anyopaque,
    List1ReferenceFramesCount: u32,
    pList1ReferenceFrames: ?*anyopaque,
    ReferenceFramesReconPictureDescriptorsCount: u32,
    pReferenceFramesReconPictureDescriptors: ?*anyopaque,
    List0RefPicModificationsCount: u32,
    pList0RefPicModifications: ?*anyopaque,
    List1RefPicModificationsCount: u32,
    pList1RefPicModifications: ?*anyopaque,
    QPMapValuesCount: u32,
    pRateControlQPMap: ?*anyopaque,
    diff_cu_chroma_qp_offset_depth: u8,
    log2_sao_offset_scale_luma: u8,
    log2_sao_offset_scale_chroma: u8,
    log2_max_transform_skip_block_size_minus2: u8,
    chroma_qp_offset_list_len_minus1: u8,
    cb_qp_offset_list: [6]i8,
    cr_qp_offset_list: [6]i8,
};
type
  D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 {.bycopy.} = object
    Flags: int32
    FrameType: int32
    slice_pic_parameter_set_id: uint32
    PictureOrderCountNumber: uint32
    TemporalLayerIndex: uint32
    List0ReferenceFramesCount: uint32
    pList0ReferenceFrames: pointer
    List1ReferenceFramesCount: uint32
    pList1ReferenceFrames: pointer
    ReferenceFramesReconPictureDescriptorsCount: uint32
    pReferenceFramesReconPictureDescriptors: pointer
    List0RefPicModificationsCount: uint32
    pList0RefPicModifications: pointer
    List1RefPicModificationsCount: uint32
    pList1RefPicModifications: pointer
    QPMapValuesCount: uint32
    pRateControlQPMap: pointer
    diff_cu_chroma_qp_offset_depth: uint8
    log2_sao_offset_scale_luma: uint8
    log2_sao_offset_scale_chroma: uint8
    log2_max_transform_skip_block_size_minus2: uint8
    chroma_qp_offset_list_len_minus1: uint8
    cb_qp_offset_list: array[6, int8]
    cr_qp_offset_list: array[6, int8]
struct D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
{
    int Flags;
    int FrameType;
    uint slice_pic_parameter_set_id;
    uint PictureOrderCountNumber;
    uint TemporalLayerIndex;
    uint List0ReferenceFramesCount;
    void* pList0ReferenceFrames;
    uint List1ReferenceFramesCount;
    void* pList1ReferenceFrames;
    uint ReferenceFramesReconPictureDescriptorsCount;
    void* pReferenceFramesReconPictureDescriptors;
    uint List0RefPicModificationsCount;
    void* pList0RefPicModifications;
    uint List1RefPicModificationsCount;
    void* pList1RefPicModifications;
    uint QPMapValuesCount;
    void* pRateControlQPMap;
    ubyte diff_cu_chroma_qp_offset_depth;
    ubyte log2_sao_offset_scale_luma;
    ubyte log2_sao_offset_scale_chroma;
    ubyte log2_max_transform_skip_block_size_minus2;
    ubyte chroma_qp_offset_list_len_minus1;
    byte[6] cb_qp_offset_list;
    byte[6] cr_qp_offset_list;
}

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_HEVC1 サイズ: 88 バイト(x86)
dim st, 22    ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; Flags : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; FrameType : D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; slice_pic_parameter_set_id : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; PictureOrderCountNumber : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; TemporalLayerIndex : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; List0ReferenceFramesCount : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; pList0ReferenceFrames : DWORD* (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; List1ReferenceFramesCount : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; pList1ReferenceFrames : DWORD* (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; ReferenceFramesReconPictureDescriptorsCount : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; pReferenceFramesReconPictureDescriptors : D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* (+40, 4byte)  varptr(st)+40 を基点に操作(4byte:入れ子/配列)
; List0RefPicModificationsCount : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; pList0RefPicModifications : DWORD* (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; List1RefPicModificationsCount : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; pList1RefPicModifications : DWORD* (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; QPMapValuesCount : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; pRateControlQPMap : CHAR* (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; diff_cu_chroma_qp_offset_depth : BYTE (+68, 1byte)  poke st,68,値  /  値 = peek(st,68)
; log2_sao_offset_scale_luma : BYTE (+69, 1byte)  poke st,69,値  /  値 = peek(st,69)
; log2_sao_offset_scale_chroma : BYTE (+70, 1byte)  poke st,70,値  /  値 = peek(st,70)
; log2_max_transform_skip_block_size_minus2 : BYTE (+71, 1byte)  poke st,71,値  /  値 = peek(st,71)
; chroma_qp_offset_list_len_minus1 : BYTE (+72, 1byte)  poke st,72,値  /  値 = peek(st,72)
; cb_qp_offset_list : CHAR (+73, 6byte)  varptr(st)+73 を基点に操作(6byte:入れ子/配列)
; cr_qp_offset_list : CHAR (+79, 6byte)  varptr(st)+79 を基点に操作(6byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1 サイズ: 136 バイト(x64)
dim st, 34    ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; Flags : D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC_FLAGS (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; FrameType : D3D12_VIDEO_ENCODER_FRAME_TYPE_HEVC (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; slice_pic_parameter_set_id : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; PictureOrderCountNumber : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; TemporalLayerIndex : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; List0ReferenceFramesCount : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; pList0ReferenceFrames : DWORD* (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; List1ReferenceFramesCount : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; pList1ReferenceFrames : DWORD* (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ReferenceFramesReconPictureDescriptorsCount : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; pReferenceFramesReconPictureDescriptors : D3D12_VIDEO_ENCODER_REFERENCE_PICTURE_DESCRIPTOR_HEVC* (+56, 8byte)  varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; List0RefPicModificationsCount : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; pList0RefPicModifications : DWORD* (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; List1RefPicModificationsCount : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; pList1RefPicModifications : DWORD* (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; QPMapValuesCount : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; pRateControlQPMap : CHAR* (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; diff_cu_chroma_qp_offset_depth : BYTE (+112, 1byte)  poke st,112,値  /  値 = peek(st,112)
; log2_sao_offset_scale_luma : BYTE (+113, 1byte)  poke st,113,値  /  値 = peek(st,113)
; log2_sao_offset_scale_chroma : BYTE (+114, 1byte)  poke st,114,値  /  値 = peek(st,114)
; log2_max_transform_skip_block_size_minus2 : BYTE (+115, 1byte)  poke st,115,値  /  値 = peek(st,115)
; chroma_qp_offset_list_len_minus1 : BYTE (+116, 1byte)  poke st,116,値  /  値 = peek(st,116)
; cb_qp_offset_list : CHAR (+117, 6byte)  varptr(st)+117 を基点に操作(6byte:入れ子/配列)
; cr_qp_offset_list : CHAR (+123, 6byte)  varptr(st)+123 を基点に操作(6byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1
    #field int Flags
    #field int FrameType
    #field int slice_pic_parameter_set_id
    #field int PictureOrderCountNumber
    #field int TemporalLayerIndex
    #field int List0ReferenceFramesCount
    #field intptr pList0ReferenceFrames
    #field int List1ReferenceFramesCount
    #field intptr pList1ReferenceFrames
    #field int ReferenceFramesReconPictureDescriptorsCount
    #field intptr pReferenceFramesReconPictureDescriptors
    #field int List0RefPicModificationsCount
    #field intptr pList0RefPicModifications
    #field int List1RefPicModificationsCount
    #field intptr pList1RefPicModifications
    #field int QPMapValuesCount
    #field intptr pRateControlQPMap
    #field byte diff_cu_chroma_qp_offset_depth
    #field byte log2_sao_offset_scale_luma
    #field byte log2_sao_offset_scale_chroma
    #field byte log2_max_transform_skip_block_size_minus2
    #field byte chroma_qp_offset_list_len_minus1
    #field byte cb_qp_offset_list 6
    #field byte cr_qp_offset_list 6
#endstruct

stdim st, D3D12_VIDEO_ENCODER_PICTURE_CONTROL_CODEC_DATA_HEVC1        ; NSTRUCT 変数を確保
st->Flags = 100
mes "Flags=" + st->Flags