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

D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES

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

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

フィールド

フィールドサイズx64x86説明
CompoundPredictionTypeULONGLONG8+0+0エンコード後に確定した複合予測種別を示す値。
LoopFilterD3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG144+8+8エンコード後のループフィルタ設定D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG。
LoopFilterDeltaD3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG24+152+152エンコード後のループフィルタデルタ設定。
QuantizationD3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG80+176+176エンコード後の量子化設定。
QuantizationDeltaD3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG16+256+256エンコード後の量子化デルタ設定。
CDEFD3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG272+272+272エンコード後のCDEFフィルタ設定。
SegmentationConfigD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG608+544+544エンコード後のセグメンテーション設定。
PrimaryRefFrameULONGLONG8+1152+1152エンコード後に確定した主参照フレームのインデックス。
ReferenceIndicesULONGLONG56+1160+1160エンコード後に確定した参照インデックス配列の先頭。

各言語での定義

#include <windows.h>

// D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG  (x64 144 / x86 144 バイト)
typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
    ULONGLONG LoopFilterLevel[2];
    ULONGLONG LoopFilterLevelU;
    ULONGLONG LoopFilterLevelV;
    ULONGLONG LoopFilterSharpnessLevel;
    ULONGLONG LoopFilterDeltaEnabled;
    ULONGLONG UpdateRefDelta;
    LONGLONG RefDeltas[8];
    ULONGLONG UpdateModeDelta;
    LONGLONG ModeDeltas[2];
} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;

// D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG  (x64 24 / x86 24 バイト)
typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
    ULONGLONG DeltaLFPresent;
    ULONGLONG DeltaLFMulti;
    ULONGLONG DeltaLFRes;
} D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;

// D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG  (x64 80 / x86 80 バイト)
typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
    ULONGLONG BaseQIndex;
    LONGLONG YDCDeltaQ;
    LONGLONG UDCDeltaQ;
    LONGLONG UACDeltaQ;
    LONGLONG VDCDeltaQ;
    LONGLONG VACDeltaQ;
    ULONGLONG UsingQMatrix;
    ULONGLONG QMY;
    ULONGLONG QMU;
    ULONGLONG QMV;
} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;

// D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG  (x64 16 / x86 16 バイト)
typedef struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
    ULONGLONG DeltaQPresent;
    ULONGLONG DeltaQRes;
} D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;

// D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG  (x64 272 / x86 272 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
    ULONGLONG CdefBits;
    ULONGLONG CdefDampingMinus3;
    ULONGLONG CdefYPriStrength[8];
    ULONGLONG CdefUVPriStrength[8];
    ULONGLONG CdefYSecStrength[8];
    ULONGLONG CdefUVSecStrength[8];
} D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;

// D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA  (x64 72 / x86 72 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
    ULONGLONG EnabledFeatures;
    LONGLONG FeatureValue[8];
} D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;

// D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG  (x64 608 / x86 608 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
    ULONGLONG UpdateMap;
    ULONGLONG TemporalUpdate;
    ULONGLONG UpdateData;
    ULONGLONG NumSegments;
    D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData[8];
} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;

// D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES  (x64 1216 / x86 1216 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES {
    ULONGLONG CompoundPredictionType;
    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
    D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
    ULONGLONG PrimaryRefFrame;
    ULONGLONG ReferenceIndices[7];
} D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public ulong[] LoopFilterLevel;
    public ulong LoopFilterLevelU;
    public ulong LoopFilterLevelV;
    public ulong LoopFilterSharpnessLevel;
    public ulong LoopFilterDeltaEnabled;
    public ulong UpdateRefDelta;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public long[] RefDeltas;
    public ulong UpdateModeDelta;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] public long[] ModeDeltas;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
{
    public ulong DeltaLFPresent;
    public ulong DeltaLFMulti;
    public ulong DeltaLFRes;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
{
    public ulong BaseQIndex;
    public long YDCDeltaQ;
    public long UDCDeltaQ;
    public long UACDeltaQ;
    public long VDCDeltaQ;
    public long VACDeltaQ;
    public ulong UsingQMatrix;
    public ulong QMY;
    public ulong QMU;
    public ulong QMV;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
{
    public ulong DeltaQPresent;
    public ulong DeltaQRes;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
{
    public ulong CdefBits;
    public ulong CdefDampingMinus3;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public ulong[] CdefYPriStrength;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public ulong[] CdefUVPriStrength;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public ulong[] CdefYSecStrength;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public ulong[] CdefUVSecStrength;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
{
    public ulong EnabledFeatures;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public long[] FeatureValue;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
{
    public ulong UpdateMap;
    public ulong TemporalUpdate;
    public ulong UpdateData;
    public ulong NumSegments;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA[] SegmentsData;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
{
    public ulong CompoundPredictionType;
    public D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
    public D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
    public D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
    public D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
    public D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
    public D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
    public ulong PrimaryRefFrame;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public ulong[] ReferenceIndices;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public LoopFilterLevel() As ULong
    Public LoopFilterLevelU As ULong
    Public LoopFilterLevelV As ULong
    Public LoopFilterSharpnessLevel As ULong
    Public LoopFilterDeltaEnabled As ULong
    Public UpdateRefDelta As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public RefDeltas() As Long
    Public UpdateModeDelta As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=2)> Public ModeDeltas() As Long
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
    Public DeltaLFPresent As ULong
    Public DeltaLFMulti As ULong
    Public DeltaLFRes As ULong
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
    Public BaseQIndex As ULong
    Public YDCDeltaQ As Long
    Public UDCDeltaQ As Long
    Public UACDeltaQ As Long
    Public VDCDeltaQ As Long
    Public VACDeltaQ As Long
    Public UsingQMatrix As ULong
    Public QMY As ULong
    Public QMU As ULong
    Public QMV As ULong
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
    Public DeltaQPresent As ULong
    Public DeltaQRes As ULong
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
    Public CdefBits As ULong
    Public CdefDampingMinus3 As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public CdefYPriStrength() As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public CdefUVPriStrength() As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public CdefYSecStrength() As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public CdefUVSecStrength() As ULong
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
    Public EnabledFeatures As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public FeatureValue() As Long
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
    Public UpdateMap As ULong
    Public TemporalUpdate As ULong
    Public UpdateData As ULong
    Public NumSegments As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public SegmentsData() As D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
    Public CompoundPredictionType As ULong
    Public LoopFilter As D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
    Public LoopFilterDelta As D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
    Public Quantization As D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
    Public QuantizationDelta As D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
    Public CDEF As D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
    Public SegmentationConfig As D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
    Public PrimaryRefFrame As ULong
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=7)> Public ReferenceIndices() As ULong
End Structure
import ctypes
from ctypes import wintypes

class D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG(ctypes.Structure):
    _fields_ = [
        ("LoopFilterLevel", ctypes.c_ulonglong * 2),
        ("LoopFilterLevelU", ctypes.c_ulonglong),
        ("LoopFilterLevelV", ctypes.c_ulonglong),
        ("LoopFilterSharpnessLevel", ctypes.c_ulonglong),
        ("LoopFilterDeltaEnabled", ctypes.c_ulonglong),
        ("UpdateRefDelta", ctypes.c_ulonglong),
        ("RefDeltas", ctypes.c_longlong * 8),
        ("UpdateModeDelta", ctypes.c_ulonglong),
        ("ModeDeltas", ctypes.c_longlong * 2),
    ]

class D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG(ctypes.Structure):
    _fields_ = [
        ("DeltaLFPresent", ctypes.c_ulonglong),
        ("DeltaLFMulti", ctypes.c_ulonglong),
        ("DeltaLFRes", ctypes.c_ulonglong),
    ]

class D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG(ctypes.Structure):
    _fields_ = [
        ("BaseQIndex", ctypes.c_ulonglong),
        ("YDCDeltaQ", ctypes.c_longlong),
        ("UDCDeltaQ", ctypes.c_longlong),
        ("UACDeltaQ", ctypes.c_longlong),
        ("VDCDeltaQ", ctypes.c_longlong),
        ("VACDeltaQ", ctypes.c_longlong),
        ("UsingQMatrix", ctypes.c_ulonglong),
        ("QMY", ctypes.c_ulonglong),
        ("QMU", ctypes.c_ulonglong),
        ("QMV", ctypes.c_ulonglong),
    ]

class D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG(ctypes.Structure):
    _fields_ = [
        ("DeltaQPresent", ctypes.c_ulonglong),
        ("DeltaQRes", ctypes.c_ulonglong),
    ]

class D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG(ctypes.Structure):
    _fields_ = [
        ("CdefBits", ctypes.c_ulonglong),
        ("CdefDampingMinus3", ctypes.c_ulonglong),
        ("CdefYPriStrength", ctypes.c_ulonglong * 8),
        ("CdefUVPriStrength", ctypes.c_ulonglong * 8),
        ("CdefYSecStrength", ctypes.c_ulonglong * 8),
        ("CdefUVSecStrength", ctypes.c_ulonglong * 8),
    ]

class D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA(ctypes.Structure):
    _fields_ = [
        ("EnabledFeatures", ctypes.c_ulonglong),
        ("FeatureValue", ctypes.c_longlong * 8),
    ]

class D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG(ctypes.Structure):
    _fields_ = [
        ("UpdateMap", ctypes.c_ulonglong),
        ("TemporalUpdate", ctypes.c_ulonglong),
        ("UpdateData", ctypes.c_ulonglong),
        ("NumSegments", ctypes.c_ulonglong),
        ("SegmentsData", D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA * 8),
    ]

class D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES(ctypes.Structure):
    _fields_ = [
        ("CompoundPredictionType", ctypes.c_ulonglong),
        ("LoopFilter", D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG),
        ("LoopFilterDelta", D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG),
        ("Quantization", D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG),
        ("QuantizationDelta", D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG),
        ("CDEF", D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG),
        ("SegmentationConfig", D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG),
        ("PrimaryRefFrame", ctypes.c_ulonglong),
        ("ReferenceIndices", ctypes.c_ulonglong * 7),
    ]
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {
    pub LoopFilterLevel: [u64; 2],
    pub LoopFilterLevelU: u64,
    pub LoopFilterLevelV: u64,
    pub LoopFilterSharpnessLevel: u64,
    pub LoopFilterDeltaEnabled: u64,
    pub UpdateRefDelta: u64,
    pub RefDeltas: [i64; 8],
    pub UpdateModeDelta: u64,
    pub ModeDeltas: [i64; 2],
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {
    pub DeltaLFPresent: u64,
    pub DeltaLFMulti: u64,
    pub DeltaLFRes: u64,
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {
    pub BaseQIndex: u64,
    pub YDCDeltaQ: i64,
    pub UDCDeltaQ: i64,
    pub UACDeltaQ: i64,
    pub VDCDeltaQ: i64,
    pub VACDeltaQ: i64,
    pub UsingQMatrix: u64,
    pub QMY: u64,
    pub QMU: u64,
    pub QMV: u64,
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {
    pub DeltaQPresent: u64,
    pub DeltaQRes: u64,
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {
    pub CdefBits: u64,
    pub CdefDampingMinus3: u64,
    pub CdefYPriStrength: [u64; 8],
    pub CdefUVPriStrength: [u64; 8],
    pub CdefYSecStrength: [u64; 8],
    pub CdefUVSecStrength: [u64; 8],
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {
    pub EnabledFeatures: u64,
    pub FeatureValue: [i64; 8],
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {
    pub UpdateMap: u64,
    pub TemporalUpdate: u64,
    pub UpdateData: u64,
    pub NumSegments: u64,
    pub SegmentsData: [D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA; 8],
}

#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES {
    pub CompoundPredictionType: u64,
    pub LoopFilter: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG,
    pub LoopFilterDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG,
    pub Quantization: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG,
    pub QuantizationDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG,
    pub CDEF: D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG,
    pub SegmentationConfig: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG,
    pub PrimaryRefFrame: u64,
    pub ReferenceIndices: [u64; 7],
}
import "golang.org/x/sys/windows"

type D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG struct {
	LoopFilterLevel [2]uint64
	LoopFilterLevelU uint64
	LoopFilterLevelV uint64
	LoopFilterSharpnessLevel uint64
	LoopFilterDeltaEnabled uint64
	UpdateRefDelta uint64
	RefDeltas [8]int64
	UpdateModeDelta uint64
	ModeDeltas [2]int64
}

type D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG struct {
	DeltaLFPresent uint64
	DeltaLFMulti uint64
	DeltaLFRes uint64
}

type D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG struct {
	BaseQIndex uint64
	YDCDeltaQ int64
	UDCDeltaQ int64
	UACDeltaQ int64
	VDCDeltaQ int64
	VACDeltaQ int64
	UsingQMatrix uint64
	QMY uint64
	QMU uint64
	QMV uint64
}

type D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG struct {
	DeltaQPresent uint64
	DeltaQRes uint64
}

type D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG struct {
	CdefBits uint64
	CdefDampingMinus3 uint64
	CdefYPriStrength [8]uint64
	CdefUVPriStrength [8]uint64
	CdefYSecStrength [8]uint64
	CdefUVSecStrength [8]uint64
}

type D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA struct {
	EnabledFeatures uint64
	FeatureValue [8]int64
}

type D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG struct {
	UpdateMap uint64
	TemporalUpdate uint64
	UpdateData uint64
	NumSegments uint64
	SegmentsData [8]D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
}

type D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES struct {
	CompoundPredictionType uint64
	LoopFilter D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
	LoopFilterDelta D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
	Quantization D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
	QuantizationDelta D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
	CDEF D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
	SegmentationConfig D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
	PrimaryRefFrame uint64
	ReferenceIndices [7]uint64
}
type
  D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG = record
    LoopFilterLevel: array[0..1] of UInt64;
    LoopFilterLevelU: UInt64;
    LoopFilterLevelV: UInt64;
    LoopFilterSharpnessLevel: UInt64;
    LoopFilterDeltaEnabled: UInt64;
    UpdateRefDelta: UInt64;
    RefDeltas: array[0..7] of Int64;
    UpdateModeDelta: UInt64;
    ModeDeltas: array[0..1] of Int64;
  end;

  D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG = record
    DeltaLFPresent: UInt64;
    DeltaLFMulti: UInt64;
    DeltaLFRes: UInt64;
  end;

  D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG = record
    BaseQIndex: UInt64;
    YDCDeltaQ: Int64;
    UDCDeltaQ: Int64;
    UACDeltaQ: Int64;
    VDCDeltaQ: Int64;
    VACDeltaQ: Int64;
    UsingQMatrix: UInt64;
    QMY: UInt64;
    QMU: UInt64;
    QMV: UInt64;
  end;

  D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG = record
    DeltaQPresent: UInt64;
    DeltaQRes: UInt64;
  end;

  D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG = record
    CdefBits: UInt64;
    CdefDampingMinus3: UInt64;
    CdefYPriStrength: array[0..7] of UInt64;
    CdefUVPriStrength: array[0..7] of UInt64;
    CdefYSecStrength: array[0..7] of UInt64;
    CdefUVSecStrength: array[0..7] of UInt64;
  end;

  D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA = record
    EnabledFeatures: UInt64;
    FeatureValue: array[0..7] of Int64;
  end;

  D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG = record
    UpdateMap: UInt64;
    TemporalUpdate: UInt64;
    UpdateData: UInt64;
    NumSegments: UInt64;
    SegmentsData: array[0..7] of D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA;
  end;

  D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES = record
    CompoundPredictionType: UInt64;
    LoopFilter: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG;
    LoopFilterDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG;
    Quantization: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG;
    QuantizationDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG;
    CDEF: D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG;
    SegmentationConfig: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
    PrimaryRefFrame: UInt64;
    ReferenceIndices: array[0..6] of UInt64;
  end;
const D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG = extern struct {
    LoopFilterLevel: [2]u64,
    LoopFilterLevelU: u64,
    LoopFilterLevelV: u64,
    LoopFilterSharpnessLevel: u64,
    LoopFilterDeltaEnabled: u64,
    UpdateRefDelta: u64,
    RefDeltas: [8]i64,
    UpdateModeDelta: u64,
    ModeDeltas: [2]i64,
};

const D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG = extern struct {
    DeltaLFPresent: u64,
    DeltaLFMulti: u64,
    DeltaLFRes: u64,
};

const D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG = extern struct {
    BaseQIndex: u64,
    YDCDeltaQ: i64,
    UDCDeltaQ: i64,
    UACDeltaQ: i64,
    VDCDeltaQ: i64,
    VACDeltaQ: i64,
    UsingQMatrix: u64,
    QMY: u64,
    QMU: u64,
    QMV: u64,
};

const D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG = extern struct {
    DeltaQPresent: u64,
    DeltaQRes: u64,
};

const D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG = extern struct {
    CdefBits: u64,
    CdefDampingMinus3: u64,
    CdefYPriStrength: [8]u64,
    CdefUVPriStrength: [8]u64,
    CdefYSecStrength: [8]u64,
    CdefUVSecStrength: [8]u64,
};

const D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA = extern struct {
    EnabledFeatures: u64,
    FeatureValue: [8]i64,
};

const D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG = extern struct {
    UpdateMap: u64,
    TemporalUpdate: u64,
    UpdateData: u64,
    NumSegments: u64,
    SegmentsData: [8]D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA,
};

const D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES = extern struct {
    CompoundPredictionType: u64,
    LoopFilter: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG,
    LoopFilterDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG,
    Quantization: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG,
    QuantizationDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG,
    CDEF: D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG,
    SegmentationConfig: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG,
    PrimaryRefFrame: u64,
    ReferenceIndices: [7]u64,
};
type
  D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG {.bycopy.} = object
    LoopFilterLevel: array[2, uint64]
    LoopFilterLevelU: uint64
    LoopFilterLevelV: uint64
    LoopFilterSharpnessLevel: uint64
    LoopFilterDeltaEnabled: uint64
    UpdateRefDelta: uint64
    RefDeltas: array[8, int64]
    UpdateModeDelta: uint64
    ModeDeltas: array[2, int64]

  D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG {.bycopy.} = object
    DeltaLFPresent: uint64
    DeltaLFMulti: uint64
    DeltaLFRes: uint64

  D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG {.bycopy.} = object
    BaseQIndex: uint64
    YDCDeltaQ: int64
    UDCDeltaQ: int64
    UACDeltaQ: int64
    VDCDeltaQ: int64
    VACDeltaQ: int64
    UsingQMatrix: uint64
    QMY: uint64
    QMU: uint64
    QMV: uint64

  D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG {.bycopy.} = object
    DeltaQPresent: uint64
    DeltaQRes: uint64

  D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG {.bycopy.} = object
    CdefBits: uint64
    CdefDampingMinus3: uint64
    CdefYPriStrength: array[8, uint64]
    CdefUVPriStrength: array[8, uint64]
    CdefYSecStrength: array[8, uint64]
    CdefUVSecStrength: array[8, uint64]

  D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA {.bycopy.} = object
    EnabledFeatures: uint64
    FeatureValue: array[8, int64]

  D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG {.bycopy.} = object
    UpdateMap: uint64
    TemporalUpdate: uint64
    UpdateData: uint64
    NumSegments: uint64
    SegmentsData: array[8, D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA]

  D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES {.bycopy.} = object
    CompoundPredictionType: uint64
    LoopFilter: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
    LoopFilterDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
    Quantization: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
    QuantizationDelta: D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
    CDEF: D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
    SegmentationConfig: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
    PrimaryRefFrame: uint64
    ReferenceIndices: array[7, uint64]
struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
{
    ulong[2] LoopFilterLevel;
    ulong LoopFilterLevelU;
    ulong LoopFilterLevelV;
    ulong LoopFilterSharpnessLevel;
    ulong LoopFilterDeltaEnabled;
    ulong UpdateRefDelta;
    long[8] RefDeltas;
    ulong UpdateModeDelta;
    long[2] ModeDeltas;
}

struct D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
{
    ulong DeltaLFPresent;
    ulong DeltaLFMulti;
    ulong DeltaLFRes;
}

struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
{
    ulong BaseQIndex;
    long YDCDeltaQ;
    long UDCDeltaQ;
    long UACDeltaQ;
    long VDCDeltaQ;
    long VACDeltaQ;
    ulong UsingQMatrix;
    ulong QMY;
    ulong QMU;
    ulong QMV;
}

struct D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
{
    ulong DeltaQPresent;
    ulong DeltaQRes;
}

struct D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
{
    ulong CdefBits;
    ulong CdefDampingMinus3;
    ulong[8] CdefYPriStrength;
    ulong[8] CdefUVPriStrength;
    ulong[8] CdefYSecStrength;
    ulong[8] CdefUVSecStrength;
}

struct D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
{
    ulong EnabledFeatures;
    long[8] FeatureValue;
}

struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
{
    ulong UpdateMap;
    ulong TemporalUpdate;
    ulong UpdateData;
    ulong NumSegments;
    D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA[8] SegmentsData;
}

struct D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
{
    ulong CompoundPredictionType;
    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter;
    D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta;
    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization;
    D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta;
    D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF;
    D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig;
    ulong PrimaryRefFrame;
    ulong[7] ReferenceIndices;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES サイズ: 1216 バイト(x64)
dim st, 304    ; 4byte整数×304(構造体サイズ 1216 / 4 切り上げ)
; CompoundPredictionType : ULONGLONG (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; LoopFilter : D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG (+8, 144byte)  varptr(st)+8 を基点に操作(144byte:入れ子/配列)
; LoopFilterDelta : D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG (+152, 24byte)  varptr(st)+152 を基点に操作(24byte:入れ子/配列)
; Quantization : D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG (+176, 80byte)  varptr(st)+176 を基点に操作(80byte:入れ子/配列)
; QuantizationDelta : D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG (+256, 16byte)  varptr(st)+256 を基点に操作(16byte:入れ子/配列)
; CDEF : D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG (+272, 272byte)  varptr(st)+272 を基点に操作(272byte:入れ子/配列)
; SegmentationConfig : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG (+544, 608byte)  varptr(st)+544 を基点に操作(608byte:入れ子/配列)
; PrimaryRefFrame : ULONGLONG (+1152, 8byte)  qpoke st,1152,値 / qpeek(st,1152)  ※IronHSPのみ。3.7/3.8は lpoke st,1152,下位 : lpoke st,1156,上位
; ReferenceIndices : ULONGLONG (+1160, 56byte)  varptr(st)+1160 を基点に操作(56byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG
    #field int64 LoopFilterLevel 2
    #field int64 LoopFilterLevelU
    #field int64 LoopFilterLevelV
    #field int64 LoopFilterSharpnessLevel
    #field int64 LoopFilterDeltaEnabled
    #field int64 UpdateRefDelta
    #field int64 RefDeltas 8
    #field int64 UpdateModeDelta
    #field int64 ModeDeltas 2
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG
    #field int64 DeltaLFPresent
    #field int64 DeltaLFMulti
    #field int64 DeltaLFRes
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG
    #field int64 BaseQIndex
    #field int64 YDCDeltaQ
    #field int64 UDCDeltaQ
    #field int64 UACDeltaQ
    #field int64 VDCDeltaQ
    #field int64 VACDeltaQ
    #field int64 UsingQMatrix
    #field int64 QMY
    #field int64 QMU
    #field int64 QMV
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG
    #field int64 DeltaQPresent
    #field int64 DeltaQRes
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG
    #field int64 CdefBits
    #field int64 CdefDampingMinus3
    #field int64 CdefYPriStrength 8
    #field int64 CdefUVPriStrength 8
    #field int64 CdefYSecStrength 8
    #field int64 CdefUVSecStrength 8
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA
    #field int64 EnabledFeatures
    #field int64 FeatureValue 8
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
    #field int64 UpdateMap
    #field int64 TemporalUpdate
    #field int64 UpdateData
    #field int64 NumSegments
    #field D3D12_VIDEO_ENCODER_AV1_SEGMENT_DATA SegmentsData 8
#endstruct

#defstruct global D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
    #field int64 CompoundPredictionType
    #field D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG LoopFilter
    #field D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG LoopFilterDelta
    #field D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG Quantization
    #field D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG QuantizationDelta
    #field D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG CDEF
    #field D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG SegmentationConfig
    #field int64 PrimaryRefFrame
    #field int64 ReferenceIndices 7
#endstruct

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