ホーム › Media.MediaFoundation › D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Flags | D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS | 4 | +0 | +0 | ピクチャ制御の各種オプションを示すD3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS。 |
| FrameType | D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE | 4 | +4 | +4 | 符号化するフレームの種別を示すD3D12_VIDEO_ENCODER_AV1_FRAME_TYPE。 |
| CompoundPredictionType | D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE | 4 | +8 | +8 | 複合予測の種別を示すD3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE。 |
| InterpolationFilter | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS | 4 | +12 | +12 | 動き補償の補間フィルタを示すD3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS。 |
| FrameRestorationConfig | D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG | 24 | +16 | +16 | フレーム復元フィルタ設定を示すD3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG。 |
| TxMode | D3D12_VIDEO_ENCODER_AV1_TX_MODE | 4 | +40 | +40 | 変換モードを示すD3D12_VIDEO_ENCODER_AV1_TX_MODE。 |
| SuperResDenominator | DWORD | 4 | +44 | +44 | スーパー解像度のスケーリング分母。解像度復元の倍率を表す。 |
| OrderHint | DWORD | 4 | +48 | +48 | このフレームの順序ヒント値。 |
| PictureIndex | DWORD | 4 | +52 | +52 | このフレームの識別インデックス。 |
| TemporalLayerIndexPlus1 | DWORD | 4 | +56 | +56 | 時間レイヤーインデックスに1を加えた値。0は未指定。 |
| SpatialLayerIndexPlus1 | DWORD | 4 | +60 | +60 | 空間レイヤーインデックスに1を加えた値。0は未指定。 |
| ReferenceFramesReconPictureDescriptors | D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR | 512 | +64 | +64 | 参照フレームの再構成ピクチャ記述子配列の先頭。 |
| ReferenceIndices | DWORD | 28 | +576 | +576 | 各参照スロットに割り当てる参照ピクチャのインデックス配列の先頭。 |
| PrimaryRefFrame | DWORD | 4 | +604 | +604 | コンテキスト継承元となる主参照フレームのインデックス。 |
| RefreshFrameFlags | DWORD | 4 | +608 | +608 | 符号化後に更新する参照スロットをビットで示す値。 |
| LoopFilter | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG | 144 | +616 | +616 | ループフィルタ設定を示すD3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG。 |
| LoopFilterDelta | D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG | 24 | +760 | +760 | ループフィルタデルタ設定を示すD3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG。 |
| Quantization | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG | 80 | +784 | +784 | 量子化設定を示すD3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG。 |
| QuantizationDelta | D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG | 16 | +864 | +864 | 量子化デルタ設定を示すD3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG。 |
| CDEF | D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG | 272 | +880 | +880 | CDEFフィルタ設定を示すD3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG。 |
| QPMapValuesCount | DWORD | 4 | +1152 | +1152 | pRateControlQPMapが指すQPマップ値の個数。 |
| pRateControlQPMap | SHORT* | 8/4 | +1160 | +1156 | ブロック単位のQP指定マップへのポインタ(SHORT配列)。NULL可。 |
| CustomSegmentation | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG | 608 | +1168 | +1160 | カスタムセグメンテーション設定を示すD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG。 |
| CustomSegmentsMap | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP | 16/8 | +1776 | +1768 | カスタムセグメントマップを示すD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP。 |
各言語での定義
#include <windows.h>
// D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG (x64 24 / x86 24 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
D3D12_VIDEO_ENCODER_AV1_RESTORATION_TYPE FrameRestorationType[3];
D3D12_VIDEO_ENCODER_AV1_RESTORATION_TILESIZE LoopRestorationPixelSize[3];
} D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
// D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO (x64 40 / x86 40 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO {
D3D12_VIDEO_ENCODER_AV1_REFERENCE_WARPED_MOTION_TRANSFORMATION TransformationType;
INT TransformationMatrix[8];
BOOL InvalidAffineSet;
} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
// D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR (x64 64 / x86 64 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR {
DWORD ReconstructedPictureResourceIndex;
DWORD TemporalLayerIndexPlus1;
DWORD SpatialLayerIndexPlus1;
D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
DWORD OrderHint;
DWORD PictureIndex;
} D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
// 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_SEGMENTATION_MAP (x64 16 / x86 8 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP {
DWORD SegmentsMapByteSize;
BYTE* pSegmentsMap;
} D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
// D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA (x64 1792 / x86 1776 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA {
D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS Flags;
D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE FrameType;
D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE CompoundPredictionType;
D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS InterpolationFilter;
D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
D3D12_VIDEO_ENCODER_AV1_TX_MODE TxMode;
DWORD SuperResDenominator;
DWORD OrderHint;
DWORD PictureIndex;
DWORD TemporalLayerIndexPlus1;
DWORD SpatialLayerIndexPlus1;
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors[8];
DWORD ReferenceIndices[7];
DWORD PrimaryRefFrame;
DWORD RefreshFrameFlags;
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;
DWORD QPMapValuesCount;
SHORT* pRateControlQPMap;
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
} D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public int[] FrameRestorationType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)] public int[] LoopRestorationPixelSize;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
{
public int TransformationType;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public int[] TransformationMatrix;
[MarshalAs(UnmanagedType.Bool)] public bool InvalidAffineSet;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
{
public uint ReconstructedPictureResourceIndex;
public uint TemporalLayerIndexPlus1;
public uint SpatialLayerIndexPlus1;
public int FrameType;
public D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
public uint OrderHint;
public uint PictureIndex;
}
[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_SEGMENTATION_MAP
{
public uint SegmentsMapByteSize;
public IntPtr pSegmentsMap;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
{
public int Flags;
public int FrameType;
public int CompoundPredictionType;
public int InterpolationFilter;
public D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
public int TxMode;
public uint SuperResDenominator;
public uint OrderHint;
public uint PictureIndex;
public uint TemporalLayerIndexPlus1;
public uint SpatialLayerIndexPlus1;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR[] ReferenceFramesReconPictureDescriptors;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 7)] public uint[] ReferenceIndices;
public uint PrimaryRefFrame;
public uint RefreshFrameFlags;
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 uint QPMapValuesCount;
public IntPtr pRateControlQPMap;
public D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
public D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public FrameRestorationType() As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=3)> Public LoopRestorationPixelSize() As Integer
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
Public TransformationType As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public TransformationMatrix() As Integer
<MarshalAs(UnmanagedType.Bool)> Public InvalidAffineSet As Boolean
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
Public ReconstructedPictureResourceIndex As UInteger
Public TemporalLayerIndexPlus1 As UInteger
Public SpatialLayerIndexPlus1 As UInteger
Public FrameType As Integer
Public WarpedMotionInfo As D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
Public OrderHint As UInteger
Public PictureIndex As UInteger
End Structure
<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_SEGMENTATION_MAP
Public SegmentsMapByteSize As UInteger
Public pSegmentsMap As IntPtr
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
Public Flags As Integer
Public FrameType As Integer
Public CompoundPredictionType As Integer
Public InterpolationFilter As Integer
Public FrameRestorationConfig As D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
Public TxMode As Integer
Public SuperResDenominator As UInteger
Public OrderHint As UInteger
Public PictureIndex As UInteger
Public TemporalLayerIndexPlus1 As UInteger
Public SpatialLayerIndexPlus1 As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public ReferenceFramesReconPictureDescriptors() As D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=7)> Public ReferenceIndices() As UInteger
Public PrimaryRefFrame As UInteger
Public RefreshFrameFlags As UInteger
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 QPMapValuesCount As UInteger
Public pRateControlQPMap As IntPtr
Public CustomSegmentation As D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
Public CustomSegmentsMap As D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
End Structureimport ctypes
from ctypes import wintypes
class D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG(ctypes.Structure):
_fields_ = [
("FrameRestorationType", ctypes.c_int * 3),
("LoopRestorationPixelSize", ctypes.c_int * 3),
]
class D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO(ctypes.Structure):
_fields_ = [
("TransformationType", ctypes.c_int),
("TransformationMatrix", ctypes.c_int * 8),
("InvalidAffineSet", wintypes.BOOL),
]
class D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR(ctypes.Structure):
_fields_ = [
("ReconstructedPictureResourceIndex", wintypes.DWORD),
("TemporalLayerIndexPlus1", wintypes.DWORD),
("SpatialLayerIndexPlus1", wintypes.DWORD),
("FrameType", ctypes.c_int),
("WarpedMotionInfo", D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO),
("OrderHint", wintypes.DWORD),
("PictureIndex", wintypes.DWORD),
]
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_SEGMENTATION_MAP(ctypes.Structure):
_fields_ = [
("SegmentsMapByteSize", wintypes.DWORD),
("pSegmentsMap", ctypes.c_void_p),
]
class D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA(ctypes.Structure):
_fields_ = [
("Flags", ctypes.c_int),
("FrameType", ctypes.c_int),
("CompoundPredictionType", ctypes.c_int),
("InterpolationFilter", ctypes.c_int),
("FrameRestorationConfig", D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG),
("TxMode", ctypes.c_int),
("SuperResDenominator", wintypes.DWORD),
("OrderHint", wintypes.DWORD),
("PictureIndex", wintypes.DWORD),
("TemporalLayerIndexPlus1", wintypes.DWORD),
("SpatialLayerIndexPlus1", wintypes.DWORD),
("ReferenceFramesReconPictureDescriptors", D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR * 8),
("ReferenceIndices", wintypes.DWORD * 7),
("PrimaryRefFrame", wintypes.DWORD),
("RefreshFrameFlags", wintypes.DWORD),
("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),
("QPMapValuesCount", wintypes.DWORD),
("pRateControlQPMap", ctypes.c_void_p),
("CustomSegmentation", D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG),
("CustomSegmentsMap", D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP),
]#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {
pub FrameRestorationType: [i32; 3],
pub LoopRestorationPixelSize: [i32; 3],
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO {
pub TransformationType: i32,
pub TransformationMatrix: [i32; 8],
pub InvalidAffineSet: i32,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR {
pub ReconstructedPictureResourceIndex: u32,
pub TemporalLayerIndexPlus1: u32,
pub SpatialLayerIndexPlus1: u32,
pub FrameType: i32,
pub WarpedMotionInfo: D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO,
pub OrderHint: u32,
pub PictureIndex: u32,
}
#[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_SEGMENTATION_MAP {
pub SegmentsMapByteSize: u32,
pub pSegmentsMap: *mut core::ffi::c_void,
}
#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA {
pub Flags: i32,
pub FrameType: i32,
pub CompoundPredictionType: i32,
pub InterpolationFilter: i32,
pub FrameRestorationConfig: D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG,
pub TxMode: i32,
pub SuperResDenominator: u32,
pub OrderHint: u32,
pub PictureIndex: u32,
pub TemporalLayerIndexPlus1: u32,
pub SpatialLayerIndexPlus1: u32,
pub ReferenceFramesReconPictureDescriptors: [D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR; 8],
pub ReferenceIndices: [u32; 7],
pub PrimaryRefFrame: u32,
pub RefreshFrameFlags: u32,
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 QPMapValuesCount: u32,
pub pRateControlQPMap: *mut core::ffi::c_void,
pub CustomSegmentation: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG,
pub CustomSegmentsMap: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP,
}import "golang.org/x/sys/windows"
type D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG struct {
FrameRestorationType [3]int32
LoopRestorationPixelSize [3]int32
}
type D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO struct {
TransformationType int32
TransformationMatrix [8]int32
InvalidAffineSet int32
}
type D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR struct {
ReconstructedPictureResourceIndex uint32
TemporalLayerIndexPlus1 uint32
SpatialLayerIndexPlus1 uint32
FrameType int32
WarpedMotionInfo D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
OrderHint uint32
PictureIndex uint32
}
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_SEGMENTATION_MAP struct {
SegmentsMapByteSize uint32
pSegmentsMap uintptr
}
type D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA struct {
Flags int32
FrameType int32
CompoundPredictionType int32
InterpolationFilter int32
FrameRestorationConfig D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
TxMode int32
SuperResDenominator uint32
OrderHint uint32
PictureIndex uint32
TemporalLayerIndexPlus1 uint32
SpatialLayerIndexPlus1 uint32
ReferenceFramesReconPictureDescriptors [8]D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
ReferenceIndices [7]uint32
PrimaryRefFrame uint32
RefreshFrameFlags uint32
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
QPMapValuesCount uint32
pRateControlQPMap uintptr
CustomSegmentation D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
CustomSegmentsMap D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP
}type
D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG = record
FrameRestorationType: array[0..2] of Integer;
LoopRestorationPixelSize: array[0..2] of Integer;
end;
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO = record
TransformationType: Integer;
TransformationMatrix: array[0..7] of Integer;
InvalidAffineSet: BOOL;
end;
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR = record
ReconstructedPictureResourceIndex: DWORD;
TemporalLayerIndexPlus1: DWORD;
SpatialLayerIndexPlus1: DWORD;
FrameType: Integer;
WarpedMotionInfo: D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO;
OrderHint: DWORD;
PictureIndex: DWORD;
end;
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_SEGMENTATION_MAP = record
SegmentsMapByteSize: DWORD;
pSegmentsMap: Pointer;
end;
D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA = record
Flags: Integer;
FrameType: Integer;
CompoundPredictionType: Integer;
InterpolationFilter: Integer;
FrameRestorationConfig: D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG;
TxMode: Integer;
SuperResDenominator: DWORD;
OrderHint: DWORD;
PictureIndex: DWORD;
TemporalLayerIndexPlus1: DWORD;
SpatialLayerIndexPlus1: DWORD;
ReferenceFramesReconPictureDescriptors: array[0..7] of D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR;
ReferenceIndices: array[0..6] of DWORD;
PrimaryRefFrame: DWORD;
RefreshFrameFlags: DWORD;
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;
QPMapValuesCount: DWORD;
pRateControlQPMap: Pointer;
CustomSegmentation: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG;
CustomSegmentsMap: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP;
end;const D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG = extern struct {
FrameRestorationType: [3]i32,
LoopRestorationPixelSize: [3]i32,
};
const D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO = extern struct {
TransformationType: i32,
TransformationMatrix: [8]i32,
InvalidAffineSet: i32,
};
const D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR = extern struct {
ReconstructedPictureResourceIndex: u32,
TemporalLayerIndexPlus1: u32,
SpatialLayerIndexPlus1: u32,
FrameType: i32,
WarpedMotionInfo: D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO,
OrderHint: u32,
PictureIndex: u32,
};
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_SEGMENTATION_MAP = extern struct {
SegmentsMapByteSize: u32,
pSegmentsMap: ?*anyopaque,
};
const D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA = extern struct {
Flags: i32,
FrameType: i32,
CompoundPredictionType: i32,
InterpolationFilter: i32,
FrameRestorationConfig: D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG,
TxMode: i32,
SuperResDenominator: u32,
OrderHint: u32,
PictureIndex: u32,
TemporalLayerIndexPlus1: u32,
SpatialLayerIndexPlus1: u32,
ReferenceFramesReconPictureDescriptors: [8]D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR,
ReferenceIndices: [7]u32,
PrimaryRefFrame: u32,
RefreshFrameFlags: u32,
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,
QPMapValuesCount: u32,
pRateControlQPMap: ?*anyopaque,
CustomSegmentation: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG,
CustomSegmentsMap: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP,
};type
D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG {.bycopy.} = object
FrameRestorationType: array[3, int32]
LoopRestorationPixelSize: array[3, int32]
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO {.bycopy.} = object
TransformationType: int32
TransformationMatrix: array[8, int32]
InvalidAffineSet: int32
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR {.bycopy.} = object
ReconstructedPictureResourceIndex: uint32
TemporalLayerIndexPlus1: uint32
SpatialLayerIndexPlus1: uint32
FrameType: int32
WarpedMotionInfo: D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
OrderHint: uint32
PictureIndex: uint32
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_SEGMENTATION_MAP {.bycopy.} = object
SegmentsMapByteSize: uint32
pSegmentsMap: pointer
D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA {.bycopy.} = object
Flags: int32
FrameType: int32
CompoundPredictionType: int32
InterpolationFilter: int32
FrameRestorationConfig: D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
TxMode: int32
SuperResDenominator: uint32
OrderHint: uint32
PictureIndex: uint32
TemporalLayerIndexPlus1: uint32
SpatialLayerIndexPlus1: uint32
ReferenceFramesReconPictureDescriptors: array[8, D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR]
ReferenceIndices: array[7, uint32]
PrimaryRefFrame: uint32
RefreshFrameFlags: uint32
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
QPMapValuesCount: uint32
pRateControlQPMap: pointer
CustomSegmentation: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG
CustomSegmentsMap: D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAPstruct D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
{
int[3] FrameRestorationType;
int[3] LoopRestorationPixelSize;
}
struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
{
int TransformationType;
int[8] TransformationMatrix;
int InvalidAffineSet;
}
struct D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
{
uint ReconstructedPictureResourceIndex;
uint TemporalLayerIndexPlus1;
uint SpatialLayerIndexPlus1;
int FrameType;
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo;
uint OrderHint;
uint PictureIndex;
}
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_SEGMENTATION_MAP
{
uint SegmentsMapByteSize;
void* pSegmentsMap;
}
struct D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
{
int Flags;
int FrameType;
int CompoundPredictionType;
int InterpolationFilter;
D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig;
int TxMode;
uint SuperResDenominator;
uint OrderHint;
uint PictureIndex;
uint TemporalLayerIndexPlus1;
uint SpatialLayerIndexPlus1;
D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR[8] ReferenceFramesReconPictureDescriptors;
uint[7] ReferenceIndices;
uint PrimaryRefFrame;
uint RefreshFrameFlags;
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;
uint QPMapValuesCount;
void* pRateControlQPMap;
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation;
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap;
}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_AV1_PICTURE_CONTROL_CODEC_DATA サイズ: 1776 バイト(x86)
dim st, 444 ; 4byte整数×444(構造体サイズ 1776 / 4 切り上げ)
; Flags : D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; FrameType : D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; CompoundPredictionType : D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; InterpolationFilter : D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; FrameRestorationConfig : D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG (+16, 24byte) varptr(st)+16 を基点に操作(24byte:入れ子/配列)
; TxMode : D3D12_VIDEO_ENCODER_AV1_TX_MODE (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; SuperResDenominator : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; OrderHint : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; PictureIndex : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; TemporalLayerIndexPlus1 : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; SpatialLayerIndexPlus1 : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ReferenceFramesReconPictureDescriptors : D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR (+64, 512byte) varptr(st)+64 を基点に操作(512byte:入れ子/配列)
; ReferenceIndices : DWORD (+576, 28byte) varptr(st)+576 を基点に操作(28byte:入れ子/配列)
; PrimaryRefFrame : DWORD (+604, 4byte) st.151 = 値 / 値 = st.151 (lpoke/lpeek も可)
; RefreshFrameFlags : DWORD (+608, 4byte) st.152 = 値 / 値 = st.152 (lpoke/lpeek も可)
; LoopFilter : D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG (+616, 144byte) varptr(st)+616 を基点に操作(144byte:入れ子/配列)
; LoopFilterDelta : D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG (+760, 24byte) varptr(st)+760 を基点に操作(24byte:入れ子/配列)
; Quantization : D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG (+784, 80byte) varptr(st)+784 を基点に操作(80byte:入れ子/配列)
; QuantizationDelta : D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG (+864, 16byte) varptr(st)+864 を基点に操作(16byte:入れ子/配列)
; CDEF : D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG (+880, 272byte) varptr(st)+880 を基点に操作(272byte:入れ子/配列)
; QPMapValuesCount : DWORD (+1152, 4byte) st.288 = 値 / 値 = st.288 (lpoke/lpeek も可)
; pRateControlQPMap : SHORT* (+1156, 4byte) st.289 = 値 / 値 = st.289 (lpoke/lpeek も可)
; CustomSegmentation : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG (+1160, 608byte) varptr(st)+1160 を基点に操作(608byte:入れ子/配列)
; CustomSegmentsMap : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP (+1768, 8byte) varptr(st)+1768 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA サイズ: 1792 バイト(x64)
dim st, 448 ; 4byte整数×448(構造体サイズ 1792 / 4 切り上げ)
; Flags : D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; FrameType : D3D12_VIDEO_ENCODER_AV1_FRAME_TYPE (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; CompoundPredictionType : D3D12_VIDEO_ENCODER_AV1_COMP_PREDICTION_TYPE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; InterpolationFilter : D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; FrameRestorationConfig : D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG (+16, 24byte) varptr(st)+16 を基点に操作(24byte:入れ子/配列)
; TxMode : D3D12_VIDEO_ENCODER_AV1_TX_MODE (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; SuperResDenominator : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; OrderHint : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; PictureIndex : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; TemporalLayerIndexPlus1 : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; SpatialLayerIndexPlus1 : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; ReferenceFramesReconPictureDescriptors : D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR (+64, 512byte) varptr(st)+64 を基点に操作(512byte:入れ子/配列)
; ReferenceIndices : DWORD (+576, 28byte) varptr(st)+576 を基点に操作(28byte:入れ子/配列)
; PrimaryRefFrame : DWORD (+604, 4byte) st.151 = 値 / 値 = st.151 (lpoke/lpeek も可)
; RefreshFrameFlags : DWORD (+608, 4byte) st.152 = 値 / 値 = st.152 (lpoke/lpeek も可)
; LoopFilter : D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_CONFIG (+616, 144byte) varptr(st)+616 を基点に操作(144byte:入れ子/配列)
; LoopFilterDelta : D3D12_VIDEO_ENCODER_CODEC_AV1_LOOP_FILTER_DELTA_CONFIG (+760, 24byte) varptr(st)+760 を基点に操作(24byte:入れ子/配列)
; Quantization : D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_CONFIG (+784, 80byte) varptr(st)+784 を基点に操作(80byte:入れ子/配列)
; QuantizationDelta : D3D12_VIDEO_ENCODER_CODEC_AV1_QUANTIZATION_DELTA_CONFIG (+864, 16byte) varptr(st)+864 を基点に操作(16byte:入れ子/配列)
; CDEF : D3D12_VIDEO_ENCODER_AV1_CDEF_CONFIG (+880, 272byte) varptr(st)+880 を基点に操作(272byte:入れ子/配列)
; QPMapValuesCount : DWORD (+1152, 4byte) st.288 = 値 / 値 = st.288 (lpoke/lpeek も可)
; pRateControlQPMap : SHORT* (+1160, 8byte) qpoke st,1160,値 / qpeek(st,1160) ※IronHSPのみ。3.7/3.8は lpoke st,1160,下位 : lpoke st,1164,上位
; CustomSegmentation : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG (+1168, 608byte) varptr(st)+1168 を基点に操作(608byte:入れ子/配列)
; CustomSegmentsMap : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP (+1776, 16byte) varptr(st)+1776 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG
#field int FrameRestorationType 3
#field int LoopRestorationPixelSize 3
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO
#field int TransformationType
#field int TransformationMatrix 8
#field bool InvalidAffineSet
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR
#field int ReconstructedPictureResourceIndex
#field int TemporalLayerIndexPlus1
#field int SpatialLayerIndexPlus1
#field int FrameType
#field D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_WARPED_MOTION_INFO WarpedMotionInfo
#field int OrderHint
#field int PictureIndex
#endstruct
#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_SEGMENTATION_MAP
#field int SegmentsMapByteSize
#field intptr pSegmentsMap
#endstruct
#defstruct global D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA
#field int Flags
#field int FrameType
#field int CompoundPredictionType
#field int InterpolationFilter
#field D3D12_VIDEO_ENCODER_AV1_RESTORATION_CONFIG FrameRestorationConfig
#field int TxMode
#field int SuperResDenominator
#field int OrderHint
#field int PictureIndex
#field int TemporalLayerIndexPlus1
#field int SpatialLayerIndexPlus1
#field D3D12_VIDEO_ENCODER_AV1_REFERENCE_PICTURE_DESCRIPTOR ReferenceFramesReconPictureDescriptors 8
#field int ReferenceIndices 7
#field int PrimaryRefFrame
#field int RefreshFrameFlags
#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 int QPMapValuesCount
#field intptr pRateControlQPMap
#field D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_CONFIG CustomSegmentation
#field D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MAP CustomSegmentsMap
#endstruct
stdim st, D3D12_VIDEO_ENCODER_AV1_PICTURE_CONTROL_CODEC_DATA ; NSTRUCT 変数を確保
st->Flags = 100
mes "Flags=" + st->Flags