ホーム › Media.MediaFoundation › D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| SupportedFeatureFlags | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS | 4 | +0 | +0 | サポートされるAV1機能を示すD3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS。 |
| RequiredFeatureFlags | D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS | 4 | +4 | +4 | 必須となるAV1機能を示すD3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS。 |
| SupportedInterpolationFilters | D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS | 4 | +8 | +8 | サポートされる補間フィルタを示すD3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS。 |
| SupportedRestorationParams | D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS | 36 | +12 | +12 | サポートされる復元パラメータを示すD3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS。 |
| SupportedSegmentationModes | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS | 4 | +48 | +48 | サポートされるセグメンテーションモードを示すD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS。 |
| SupportedTxModes | D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS | 16 | +52 | +52 | サポートされる変換モードを示すD3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS。 |
| SegmentationBlockSize | D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE | 4 | +68 | +68 | セグメンテーションのブロックサイズを示すD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE。 |
| PostEncodeValuesFlags | D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS | 4 | +72 | +72 | エンコード後に取得可能な値を示すD3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS。 |
| MaxTemporalLayers | DWORD | 4 | +76 | +76 | サポートされる時間レイヤーの最大数。 |
| MaxSpatialLayers | DWORD | 4 | +80 | +80 | サポートされる空間レイヤーの最大数。 |
各言語での定義
#include <windows.h>
// D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT (x64 84 / x86 84 バイト)
typedef struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS SupportedFeatureFlags;
D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS RequiredFeatureFlags;
D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS SupportedInterpolationFilters;
D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS SupportedRestorationParams[9];
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS SupportedSegmentationModes;
D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS SupportedTxModes[4];
D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE SegmentationBlockSize;
D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS PostEncodeValuesFlags;
DWORD MaxTemporalLayers;
DWORD MaxSpatialLayers;
} D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
{
public int SupportedFeatureFlags;
public int RequiredFeatureFlags;
public int SupportedInterpolationFilters;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 9)] public int[] SupportedRestorationParams;
public int SupportedSegmentationModes;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public int[] SupportedTxModes;
public int SegmentationBlockSize;
public int PostEncodeValuesFlags;
public uint MaxTemporalLayers;
public uint MaxSpatialLayers;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
Public SupportedFeatureFlags As Integer
Public RequiredFeatureFlags As Integer
Public SupportedInterpolationFilters As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=9)> Public SupportedRestorationParams() As Integer
Public SupportedSegmentationModes As Integer
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public SupportedTxModes() As Integer
Public SegmentationBlockSize As Integer
Public PostEncodeValuesFlags As Integer
Public MaxTemporalLayers As UInteger
Public MaxSpatialLayers As UInteger
End Structureimport ctypes
from ctypes import wintypes
class D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT(ctypes.Structure):
_fields_ = [
("SupportedFeatureFlags", ctypes.c_int),
("RequiredFeatureFlags", ctypes.c_int),
("SupportedInterpolationFilters", ctypes.c_int),
("SupportedRestorationParams", ctypes.c_int * 9),
("SupportedSegmentationModes", ctypes.c_int),
("SupportedTxModes", ctypes.c_int * 4),
("SegmentationBlockSize", ctypes.c_int),
("PostEncodeValuesFlags", ctypes.c_int),
("MaxTemporalLayers", wintypes.DWORD),
("MaxSpatialLayers", wintypes.DWORD),
]#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {
pub SupportedFeatureFlags: i32,
pub RequiredFeatureFlags: i32,
pub SupportedInterpolationFilters: i32,
pub SupportedRestorationParams: [i32; 9],
pub SupportedSegmentationModes: i32,
pub SupportedTxModes: [i32; 4],
pub SegmentationBlockSize: i32,
pub PostEncodeValuesFlags: i32,
pub MaxTemporalLayers: u32,
pub MaxSpatialLayers: u32,
}import "golang.org/x/sys/windows"
type D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT struct {
SupportedFeatureFlags int32
RequiredFeatureFlags int32
SupportedInterpolationFilters int32
SupportedRestorationParams [9]int32
SupportedSegmentationModes int32
SupportedTxModes [4]int32
SegmentationBlockSize int32
PostEncodeValuesFlags int32
MaxTemporalLayers uint32
MaxSpatialLayers uint32
}type
D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT = record
SupportedFeatureFlags: Integer;
RequiredFeatureFlags: Integer;
SupportedInterpolationFilters: Integer;
SupportedRestorationParams: array[0..8] of Integer;
SupportedSegmentationModes: Integer;
SupportedTxModes: array[0..3] of Integer;
SegmentationBlockSize: Integer;
PostEncodeValuesFlags: Integer;
MaxTemporalLayers: DWORD;
MaxSpatialLayers: DWORD;
end;const D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT = extern struct {
SupportedFeatureFlags: i32,
RequiredFeatureFlags: i32,
SupportedInterpolationFilters: i32,
SupportedRestorationParams: [9]i32,
SupportedSegmentationModes: i32,
SupportedTxModes: [4]i32,
SegmentationBlockSize: i32,
PostEncodeValuesFlags: i32,
MaxTemporalLayers: u32,
MaxSpatialLayers: u32,
};type
D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT {.bycopy.} = object
SupportedFeatureFlags: int32
RequiredFeatureFlags: int32
SupportedInterpolationFilters: int32
SupportedRestorationParams: array[9, int32]
SupportedSegmentationModes: int32
SupportedTxModes: array[4, int32]
SegmentationBlockSize: int32
PostEncodeValuesFlags: int32
MaxTemporalLayers: uint32
MaxSpatialLayers: uint32struct D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
{
int SupportedFeatureFlags;
int RequiredFeatureFlags;
int SupportedInterpolationFilters;
int[9] SupportedRestorationParams;
int SupportedSegmentationModes;
int[4] SupportedTxModes;
int SegmentationBlockSize;
int PostEncodeValuesFlags;
uint MaxTemporalLayers;
uint MaxSpatialLayers;
}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_CODEC_CONFIGURATION_SUPPORT サイズ: 84 バイト(x64)
dim st, 21 ; 4byte整数×21(構造体サイズ 84 / 4 切り上げ)
; SupportedFeatureFlags : D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; RequiredFeatureFlags : D3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; SupportedInterpolationFilters : D3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; SupportedRestorationParams : D3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS (+12, 36byte) varptr(st)+12 を基点に操作(36byte:入れ子/配列)
; SupportedSegmentationModes : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; SupportedTxModes : D3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS (+52, 16byte) varptr(st)+52 を基点に操作(16byte:入れ子/配列)
; SegmentationBlockSize : D3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; PostEncodeValuesFlags : D3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; MaxTemporalLayers : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; MaxSpatialLayers : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT
#field int SupportedFeatureFlags
#field int RequiredFeatureFlags
#field int SupportedInterpolationFilters
#field int SupportedRestorationParams 9
#field int SupportedSegmentationModes
#field int SupportedTxModes 4
#field int SegmentationBlockSize
#field int PostEncodeValuesFlags
#field int MaxTemporalLayers
#field int MaxSpatialLayers
#endstruct
stdim st, D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT ; NSTRUCT 変数を確保
st->SupportedFeatureFlags = 100
mes "SupportedFeatureFlags=" + st->SupportedFeatureFlags