ホーム › Media.MediaFoundation › D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| CompoundPredictionType | ULONGLONG | 8 | +0 | +0 | エンコード後に確定した複合予測種別を示す値。 |
| LoopFilter | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG | 144 | +8 | +8 | エンコード後のループフィルタ設定D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG。 |
| LoopFilterDelta | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG | 24 | +152 | +152 | エンコード後のループフィルタデルタ設定。 |
| Quantization | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG | 80 | +176 | +176 | エンコード後の量子化設定。 |
| QuantizationDelta | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG | 16 | +256 | +256 | エンコード後の量子化デルタ設定。 |
| CDEF | D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG | 272 | +272 | +272 | エンコード後のCDEFフィルタ設定。 |
| SegmentationConfig | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG | 608 | +544 | +544 | エンコード後のセグメンテーション設定。 |
| PrimaryRefFrame | ULONGLONG | 8 | +1152 | +1152 | エンコード後に確定した主参照フレームのインデックス。 |
| ReferenceIndices | ULONGLONG | 56 | +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 Structureimport 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