ホーム › Media.MediaFoundation › D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| SupportFlags | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS | 4 | +0 | +0 | サポートされるHEVC構成機能を示すD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS。 |
| MinLumaCodingUnitSize | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE | 4 | +4 | +4 | 最小輝度コーディングユニットサイズを示すD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE。 |
| MaxLumaCodingUnitSize | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE | 4 | +8 | +8 | 最大輝度コーディングユニットサイズを示すD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE。 |
| MinLumaTransformUnitSize | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE | 4 | +12 | +12 | 最小輝度変換ユニットサイズを示すD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE。 |
| MaxLumaTransformUnitSize | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE | 4 | +16 | +16 | 最大輝度変換ユニットサイズを示すD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE。 |
| max_transform_hierarchy_depth_inter | BYTE | 1 | +20 | +20 | インター予測時の変換階層の最大深度。 |
| max_transform_hierarchy_depth_intra | BYTE | 1 | +21 | +21 | イントラ予測時の変換階層の最大深度。 |
| allowed_diff_cu_chroma_qp_offset_depth_values | DWORD | 4 | +24 | +24 | 許容されるcu_chroma_qp_offset深度値をビットで示す値。 |
| allowed_log2_sao_offset_scale_luma_values | DWORD | 4 | +28 | +28 | 輝度SAOオフセットスケールのlog2許容値をビットで示す値。 |
| allowed_log2_sao_offset_scale_chroma_values | DWORD | 4 | +32 | +32 | 色差SAOオフセットスケールのlog2許容値をビットで示す値。 |
| allowed_log2_max_transform_skip_block_size_minus2_values | DWORD | 4 | +36 | +36 | 変換スキップ最大ブロックサイズのlog2(マイナス2)許容値をビットで示す値。 |
| allowed_chroma_qp_offset_list_len_minus1_values | DWORD | 4 | +40 | +40 | chroma_qp_offsetリスト長(マイナス1)の許容値をビットで示す値。 |
| allowed_cb_qp_offset_list_values | DWORD | 24 | +44 | +44 | Cb成分QPオフセットリストの許容値をビットで示す値。 |
| allowed_cr_qp_offset_list_values | DWORD | 24 | +68 | +68 | Cr成分QPオフセットリストの許容値をビットで示す値。 |
| SupportFlags1 | D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 | 4 | +92 | +92 | 追加のHEVC構成サポートを示すD3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1。 |
各言語での定義
#include <windows.h>
// D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 (x64 96 / x86 96 バイト)
typedef struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS SupportFlags;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MinLumaCodingUnitSize;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE MaxLumaCodingUnitSize;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MinLumaTransformUnitSize;
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE MaxLumaTransformUnitSize;
BYTE max_transform_hierarchy_depth_inter;
BYTE max_transform_hierarchy_depth_intra;
DWORD allowed_diff_cu_chroma_qp_offset_depth_values;
DWORD allowed_log2_sao_offset_scale_luma_values;
DWORD allowed_log2_sao_offset_scale_chroma_values;
DWORD allowed_log2_max_transform_skip_block_size_minus2_values;
DWORD allowed_chroma_qp_offset_list_len_minus1_values;
DWORD allowed_cb_qp_offset_list_values[6];
DWORD allowed_cr_qp_offset_list_values[6];
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 SupportFlags1;
} D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
{
public int SupportFlags;
public int MinLumaCodingUnitSize;
public int MaxLumaCodingUnitSize;
public int MinLumaTransformUnitSize;
public int MaxLumaTransformUnitSize;
public byte max_transform_hierarchy_depth_inter;
public byte max_transform_hierarchy_depth_intra;
public uint allowed_diff_cu_chroma_qp_offset_depth_values;
public uint allowed_log2_sao_offset_scale_luma_values;
public uint allowed_log2_sao_offset_scale_chroma_values;
public uint allowed_log2_max_transform_skip_block_size_minus2_values;
public uint allowed_chroma_qp_offset_list_len_minus1_values;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public uint[] allowed_cb_qp_offset_list_values;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public uint[] allowed_cr_qp_offset_list_values;
public int SupportFlags1;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
Public SupportFlags As Integer
Public MinLumaCodingUnitSize As Integer
Public MaxLumaCodingUnitSize As Integer
Public MinLumaTransformUnitSize As Integer
Public MaxLumaTransformUnitSize As Integer
Public max_transform_hierarchy_depth_inter As Byte
Public max_transform_hierarchy_depth_intra As Byte
Public allowed_diff_cu_chroma_qp_offset_depth_values As UInteger
Public allowed_log2_sao_offset_scale_luma_values As UInteger
Public allowed_log2_sao_offset_scale_chroma_values As UInteger
Public allowed_log2_max_transform_skip_block_size_minus2_values As UInteger
Public allowed_chroma_qp_offset_list_len_minus1_values As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public allowed_cb_qp_offset_list_values() As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public allowed_cr_qp_offset_list_values() As UInteger
Public SupportFlags1 As Integer
End Structureimport ctypes
from ctypes import wintypes
class D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1(ctypes.Structure):
_fields_ = [
("SupportFlags", ctypes.c_int),
("MinLumaCodingUnitSize", ctypes.c_int),
("MaxLumaCodingUnitSize", ctypes.c_int),
("MinLumaTransformUnitSize", ctypes.c_int),
("MaxLumaTransformUnitSize", ctypes.c_int),
("max_transform_hierarchy_depth_inter", ctypes.c_ubyte),
("max_transform_hierarchy_depth_intra", ctypes.c_ubyte),
("allowed_diff_cu_chroma_qp_offset_depth_values", wintypes.DWORD),
("allowed_log2_sao_offset_scale_luma_values", wintypes.DWORD),
("allowed_log2_sao_offset_scale_chroma_values", wintypes.DWORD),
("allowed_log2_max_transform_skip_block_size_minus2_values", wintypes.DWORD),
("allowed_chroma_qp_offset_list_len_minus1_values", wintypes.DWORD),
("allowed_cb_qp_offset_list_values", wintypes.DWORD * 6),
("allowed_cr_qp_offset_list_values", wintypes.DWORD * 6),
("SupportFlags1", ctypes.c_int),
]#[repr(C)]
pub struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {
pub SupportFlags: i32,
pub MinLumaCodingUnitSize: i32,
pub MaxLumaCodingUnitSize: i32,
pub MinLumaTransformUnitSize: i32,
pub MaxLumaTransformUnitSize: i32,
pub max_transform_hierarchy_depth_inter: u8,
pub max_transform_hierarchy_depth_intra: u8,
pub allowed_diff_cu_chroma_qp_offset_depth_values: u32,
pub allowed_log2_sao_offset_scale_luma_values: u32,
pub allowed_log2_sao_offset_scale_chroma_values: u32,
pub allowed_log2_max_transform_skip_block_size_minus2_values: u32,
pub allowed_chroma_qp_offset_list_len_minus1_values: u32,
pub allowed_cb_qp_offset_list_values: [u32; 6],
pub allowed_cr_qp_offset_list_values: [u32; 6],
pub SupportFlags1: i32,
}import "golang.org/x/sys/windows"
type D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 struct {
SupportFlags int32
MinLumaCodingUnitSize int32
MaxLumaCodingUnitSize int32
MinLumaTransformUnitSize int32
MaxLumaTransformUnitSize int32
max_transform_hierarchy_depth_inter byte
max_transform_hierarchy_depth_intra byte
allowed_diff_cu_chroma_qp_offset_depth_values uint32
allowed_log2_sao_offset_scale_luma_values uint32
allowed_log2_sao_offset_scale_chroma_values uint32
allowed_log2_max_transform_skip_block_size_minus2_values uint32
allowed_chroma_qp_offset_list_len_minus1_values uint32
allowed_cb_qp_offset_list_values [6]uint32
allowed_cr_qp_offset_list_values [6]uint32
SupportFlags1 int32
}type
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 = record
SupportFlags: Integer;
MinLumaCodingUnitSize: Integer;
MaxLumaCodingUnitSize: Integer;
MinLumaTransformUnitSize: Integer;
MaxLumaTransformUnitSize: Integer;
max_transform_hierarchy_depth_inter: Byte;
max_transform_hierarchy_depth_intra: Byte;
allowed_diff_cu_chroma_qp_offset_depth_values: DWORD;
allowed_log2_sao_offset_scale_luma_values: DWORD;
allowed_log2_sao_offset_scale_chroma_values: DWORD;
allowed_log2_max_transform_skip_block_size_minus2_values: DWORD;
allowed_chroma_qp_offset_list_len_minus1_values: DWORD;
allowed_cb_qp_offset_list_values: array[0..5] of DWORD;
allowed_cr_qp_offset_list_values: array[0..5] of DWORD;
SupportFlags1: Integer;
end;const D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 = extern struct {
SupportFlags: i32,
MinLumaCodingUnitSize: i32,
MaxLumaCodingUnitSize: i32,
MinLumaTransformUnitSize: i32,
MaxLumaTransformUnitSize: i32,
max_transform_hierarchy_depth_inter: u8,
max_transform_hierarchy_depth_intra: u8,
allowed_diff_cu_chroma_qp_offset_depth_values: u32,
allowed_log2_sao_offset_scale_luma_values: u32,
allowed_log2_sao_offset_scale_chroma_values: u32,
allowed_log2_max_transform_skip_block_size_minus2_values: u32,
allowed_chroma_qp_offset_list_len_minus1_values: u32,
allowed_cb_qp_offset_list_values: [6]u32,
allowed_cr_qp_offset_list_values: [6]u32,
SupportFlags1: i32,
};type
D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 {.bycopy.} = object
SupportFlags: int32
MinLumaCodingUnitSize: int32
MaxLumaCodingUnitSize: int32
MinLumaTransformUnitSize: int32
MaxLumaTransformUnitSize: int32
max_transform_hierarchy_depth_inter: uint8
max_transform_hierarchy_depth_intra: uint8
allowed_diff_cu_chroma_qp_offset_depth_values: uint32
allowed_log2_sao_offset_scale_luma_values: uint32
allowed_log2_sao_offset_scale_chroma_values: uint32
allowed_log2_max_transform_skip_block_size_minus2_values: uint32
allowed_chroma_qp_offset_list_len_minus1_values: uint32
allowed_cb_qp_offset_list_values: array[6, uint32]
allowed_cr_qp_offset_list_values: array[6, uint32]
SupportFlags1: int32struct D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
{
int SupportFlags;
int MinLumaCodingUnitSize;
int MaxLumaCodingUnitSize;
int MinLumaTransformUnitSize;
int MaxLumaTransformUnitSize;
ubyte max_transform_hierarchy_depth_inter;
ubyte max_transform_hierarchy_depth_intra;
uint allowed_diff_cu_chroma_qp_offset_depth_values;
uint allowed_log2_sao_offset_scale_luma_values;
uint allowed_log2_sao_offset_scale_chroma_values;
uint allowed_log2_max_transform_skip_block_size_minus2_values;
uint allowed_chroma_qp_offset_list_len_minus1_values;
uint[6] allowed_cb_qp_offset_list_values;
uint[6] allowed_cr_qp_offset_list_values;
int SupportFlags1;
}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_CODEC_CONFIGURATION_SUPPORT_HEVC1 サイズ: 96 バイト(x64)
dim st, 24 ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; SupportFlags : D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; MinLumaCodingUnitSize : D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; MaxLumaCodingUnitSize : D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_CUSIZE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; MinLumaTransformUnitSize : D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; MaxLumaTransformUnitSize : D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_HEVC_TUSIZE (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; max_transform_hierarchy_depth_inter : BYTE (+20, 1byte) poke st,20,値 / 値 = peek(st,20)
; max_transform_hierarchy_depth_intra : BYTE (+21, 1byte) poke st,21,値 / 値 = peek(st,21)
; allowed_diff_cu_chroma_qp_offset_depth_values : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; allowed_log2_sao_offset_scale_luma_values : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; allowed_log2_sao_offset_scale_chroma_values : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; allowed_log2_max_transform_skip_block_size_minus2_values : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; allowed_chroma_qp_offset_list_len_minus1_values : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; allowed_cb_qp_offset_list_values : DWORD (+44, 24byte) varptr(st)+44 を基点に操作(24byte:入れ子/配列)
; allowed_cr_qp_offset_list_values : DWORD (+68, 24byte) varptr(st)+68 を基点に操作(24byte:入れ子/配列)
; SupportFlags1 : D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC_FLAGS1 (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1
#field int SupportFlags
#field int MinLumaCodingUnitSize
#field int MaxLumaCodingUnitSize
#field int MinLumaTransformUnitSize
#field int MaxLumaTransformUnitSize
#field byte max_transform_hierarchy_depth_inter
#field byte max_transform_hierarchy_depth_intra
#field int allowed_diff_cu_chroma_qp_offset_depth_values
#field int allowed_log2_sao_offset_scale_luma_values
#field int allowed_log2_sao_offset_scale_chroma_values
#field int allowed_log2_max_transform_skip_block_size_minus2_values
#field int allowed_chroma_qp_offset_list_len_minus1_values
#field int allowed_cb_qp_offset_list_values 6
#field int allowed_cr_qp_offset_list_values 6
#field int SupportFlags1
#endstruct
stdim st, D3D12_VIDEO_ENCODER_CODEC_CONFIGURATION_SUPPORT_HEVC1 ; NSTRUCT 変数を確保
st->SupportFlags = 100
mes "SupportFlags=" + st->SupportFlags