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

D3D12_VIDEO_ENCODER_AV1_CODEC_CONFIGURATION_SUPPORT

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

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

フィールド

フィールドサイズx64x86説明
SupportedFeatureFlagsD3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS4+0+0サポートされるAV1機能を示すD3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS。
RequiredFeatureFlagsD3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS4+4+4必須となるAV1機能を示すD3D12_VIDEO_ENCODER_AV1_FEATURE_FLAGS。
SupportedInterpolationFiltersD3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS4+8+8サポートされる補間フィルタを示すD3D12_VIDEO_ENCODER_AV1_INTERPOLATION_FILTERS_FLAGS。
SupportedRestorationParamsD3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS36+12+12サポートされる復元パラメータを示すD3D12_VIDEO_ENCODER_AV1_RESTORATION_SUPPORT_FLAGS。
SupportedSegmentationModesD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS4+48+48サポートされるセグメンテーションモードを示すD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_MODE_FLAGS。
SupportedTxModesD3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS16+52+52サポートされる変換モードを示すD3D12_VIDEO_ENCODER_AV1_TX_MODE_FLAGS。
SegmentationBlockSizeD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE4+68+68セグメンテーションのブロックサイズを示すD3D12_VIDEO_ENCODER_AV1_SEGMENTATION_BLOCK_SIZE。
PostEncodeValuesFlagsD3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS4+72+72エンコード後に取得可能な値を示すD3D12_VIDEO_ENCODER_AV1_POST_ENCODE_VALUES_FLAGS。
MaxTemporalLayersDWORD4+76+76サポートされる時間レイヤーの最大数。
MaxSpatialLayersDWORD4+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 Structure
import 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: uint32
struct 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