Win32 API 日本語リファレンス
ホームMedia.Audio.XAudio2 › XAPO_REGISTRATION_PROPERTIES

XAPO_REGISTRATION_PROPERTIES

構造体
サイズx64: 1068 バイト / x86: 1068 バイトパッキング1

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

フィールド

フィールドサイズx64x86説明
clsidGUID16+0+0CoCreateInstance 関数で使用する COM クラス ID です。
FriendlyNameWCHAR512+16+16フレンドリ名です (Unicode 文字列)。
CopyrightInfoWCHAR512+528+528著作権情報です (Unicode 文字列)。
MajorVersionDWORD4+1040+1040メジャーバージョン番号です。
MinorVersionDWORD4+1044+1044マイナーバージョン番号です。
FlagsDWORD4+1048+1048

処理動作の一般的な特性を表す XAPO プロパティフラグです。これらのフラグについては次の表で説明します。

フラグ 説明
XAPO_FLAG_INPLACE_SUPPORTED XAPO はインプレース処理をサポートします。入力に応じて、入力ストリームバッファーと出力ストリームバッファーを 同じバッファーにできます。

たとえば、ステレオから 5.1 へのモード、またはモノラルからモノラルへのモードで実行できるエフェクトを考えます。 ステレオから 5.1 に設定した場合、インプレースでは形式変換が許可されないため、 入力バッファーと出力バッファーを分けて実行されます。 一方、モノラルからモノラルで実行するように構成した場合は、同じ XAPO を インプレースで実行できます。このように、可能な場合はインプレース処理の利点を活用しながら、 同じ実装をさまざまな入出力構成に手軽に再利用できます。

XAPO_FLAG_INPLACE_REQUIRED XAPO はインプレース処理を必要とします。入力ストリームバッファーと出力ストリームバッファーは 同じバッファーでなければなりません。XAPO_FLAG_INPLACE_REQUIRED を使用する場合、XAPO は 形式変換を実行できません。
XAPO_FLAG_CHANNELS_MUST_MATCH 入力ストリームと出力ストリームのチャンネル数が一致していなければなりません。
XAPO_FLAG_FRAMERATE_MUST_MATCH 入力ストリームと出力ストリームのフレームレートが一致していなければなりません。
XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH 入力ストリームと出力ストリームのビット深度とコンテナーサイズが一致していなければなりません。
XAPO_FLAG_BUFFERCOUNT_MUST_MATCH 入力バッファーと出力バッファーの数が一致していなければなりません。 XAPO_LOCKFORPROCESS_BUFFER_PARAMETERS に適用されます。XAPO_FLAG_BUFFERCOUNT_MUST_MATCH フラグが設定されている場合、 XAPO_REGISTRATION_PROPERTIES.MinInputBufferCountXAPO_REGISTRATION_PROPERTIES.MinOutputBufferCount と等しく、 XAPO_REGISTRATION_PROPERTIES.MaxInputBufferCountXAPO_REGISTRATION_PROPERTIES.MaxOutputBufferCount と等しくなければなりません。
XAPOBASE_DEFAULT_FLAG XAPO_FLAG_CHANNELS_MUST_MATCH | XAPO_FLAG_FRAMERATE_MUST_MATCH | XAPO_FLAG_BITSPERSAMPLE_MUST_MATCH | XAPO_FLAG_BUFFERCOUNT_MUST_MATCH | XAPO_FLAG_INPLACE_SUPPORTED
MinInputBufferCountDWORD4+1052+1052処理に必要な入力ストリームの最小数です。
MaxInputBufferCountDWORD4+1056+1056

処理に必要な入力ストリームの最大数です。

メモ MaxInputBufferCount は現在、値 1 に制限されています。
MinOutputBufferCountDWORD4+1060+1060処理に必要な出力ストリームの最小数です。
MaxOutputBufferCountDWORD4+1064+1064

処理に必要な出力ストリームの最大数です。

メモ MaxOutputBufferCount は現在、値 1 に制限されています。

公式ドキュメント

XAPO の一般的な特性を記述します。 IXAPO::GetRegistrationPropertiesCXAPOParametersBase::CXAPOParametersBase、および CXAPOBase::CXAPOBase で使用されます。

解説(Remarks)

プラットフォーム要件

Windows 10 (XAudio2.9); Windows 8、Windows Phone 8 (XAudio 2.8); DirectX SDK (XAudio 2.7)
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// XAPO_REGISTRATION_PROPERTIES  (x64 1068 / x86 1068 バイト)
#pragma pack(push, 1)
typedef struct XAPO_REGISTRATION_PROPERTIES {
    GUID clsid;
    WCHAR FriendlyName[256];
    WCHAR CopyrightInfo[256];
    DWORD MajorVersion;
    DWORD MinorVersion;
    DWORD Flags;
    DWORD MinInputBufferCount;
    DWORD MaxInputBufferCount;
    DWORD MinOutputBufferCount;
    DWORD MaxOutputBufferCount;
} XAPO_REGISTRATION_PROPERTIES;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode)]
public struct XAPO_REGISTRATION_PROPERTIES
{
    public Guid clsid;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string FriendlyName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string CopyrightInfo;
    public uint MajorVersion;
    public uint MinorVersion;
    public uint Flags;
    public uint MinInputBufferCount;
    public uint MaxInputBufferCount;
    public uint MinOutputBufferCount;
    public uint MaxOutputBufferCount;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Unicode)>
Public Structure XAPO_REGISTRATION_PROPERTIES
    Public clsid As Guid
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public FriendlyName As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public CopyrightInfo As String
    Public MajorVersion As UInteger
    Public MinorVersion As UInteger
    Public Flags As UInteger
    Public MinInputBufferCount As UInteger
    Public MaxInputBufferCount As UInteger
    Public MinOutputBufferCount As UInteger
    Public MaxOutputBufferCount As UInteger
End Structure
import ctypes
from ctypes import wintypes

class XAPO_REGISTRATION_PROPERTIES(ctypes.Structure):
    _pack_ = 1
    _fields_ = [
        ("clsid", GUID),
        ("FriendlyName", ctypes.c_wchar * 256),
        ("CopyrightInfo", ctypes.c_wchar * 256),
        ("MajorVersion", wintypes.DWORD),
        ("MinorVersion", wintypes.DWORD),
        ("Flags", wintypes.DWORD),
        ("MinInputBufferCount", wintypes.DWORD),
        ("MaxInputBufferCount", wintypes.DWORD),
        ("MinOutputBufferCount", wintypes.DWORD),
        ("MaxOutputBufferCount", wintypes.DWORD),
    ]
#[repr(C, packed(1))]
pub struct XAPO_REGISTRATION_PROPERTIES {
    pub clsid: GUID,
    pub FriendlyName: [u16; 256],
    pub CopyrightInfo: [u16; 256],
    pub MajorVersion: u32,
    pub MinorVersion: u32,
    pub Flags: u32,
    pub MinInputBufferCount: u32,
    pub MaxInputBufferCount: u32,
    pub MinOutputBufferCount: u32,
    pub MaxOutputBufferCount: u32,
}
import "golang.org/x/sys/windows"

type XAPO_REGISTRATION_PROPERTIES struct {
	clsid windows.GUID
	FriendlyName [256]uint16
	CopyrightInfo [256]uint16
	MajorVersion uint32
	MinorVersion uint32
	Flags uint32
	MinInputBufferCount uint32
	MaxInputBufferCount uint32
	MinOutputBufferCount uint32
	MaxOutputBufferCount uint32
}
type
  XAPO_REGISTRATION_PROPERTIES = packed record
    clsid: TGUID;
    FriendlyName: array[0..255] of WideChar;
    CopyrightInfo: array[0..255] of WideChar;
    MajorVersion: DWORD;
    MinorVersion: DWORD;
    Flags: DWORD;
    MinInputBufferCount: DWORD;
    MaxInputBufferCount: DWORD;
    MinOutputBufferCount: DWORD;
    MaxOutputBufferCount: DWORD;
  end;
const XAPO_REGISTRATION_PROPERTIES = extern struct {
    clsid: GUID,
    FriendlyName: [256]u16,
    CopyrightInfo: [256]u16,
    MajorVersion: u32,
    MinorVersion: u32,
    Flags: u32,
    MinInputBufferCount: u32,
    MaxInputBufferCount: u32,
    MinOutputBufferCount: u32,
    MaxOutputBufferCount: u32,
};
type
  XAPO_REGISTRATION_PROPERTIES {.packed.} = object
    clsid: GUID
    FriendlyName: array[256, uint16]
    CopyrightInfo: array[256, uint16]
    MajorVersion: uint32
    MinorVersion: uint32
    Flags: uint32
    MinInputBufferCount: uint32
    MaxInputBufferCount: uint32
    MinOutputBufferCount: uint32
    MaxOutputBufferCount: uint32
align(1)
struct XAPO_REGISTRATION_PROPERTIES
{
    GUID clsid;
    wchar[256] FriendlyName;
    wchar[256] CopyrightInfo;
    uint MajorVersion;
    uint MinorVersion;
    uint Flags;
    uint MinInputBufferCount;
    uint MaxInputBufferCount;
    uint MinOutputBufferCount;
    uint MaxOutputBufferCount;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; XAPO_REGISTRATION_PROPERTIES サイズ: 1068 バイト(x64)
dim st, 267    ; 4byte整数×267(構造体サイズ 1068 / 4 切り上げ)
; clsid : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; FriendlyName : WCHAR (+16, 512byte)  varptr(st)+16 を基点に操作(512byte:入れ子/配列)
; CopyrightInfo : WCHAR (+528, 512byte)  varptr(st)+528 を基点に操作(512byte:入れ子/配列)
; MajorVersion : DWORD (+1040, 4byte)  st.260 = 値  /  値 = st.260   (lpoke/lpeek も可)
; MinorVersion : DWORD (+1044, 4byte)  st.261 = 値  /  値 = st.261   (lpoke/lpeek も可)
; Flags : DWORD (+1048, 4byte)  st.262 = 値  /  値 = st.262   (lpoke/lpeek も可)
; MinInputBufferCount : DWORD (+1052, 4byte)  st.263 = 値  /  値 = st.263   (lpoke/lpeek も可)
; MaxInputBufferCount : DWORD (+1056, 4byte)  st.264 = 値  /  値 = st.264   (lpoke/lpeek も可)
; MinOutputBufferCount : DWORD (+1060, 4byte)  st.265 = 値  /  値 = st.265   (lpoke/lpeek も可)
; MaxOutputBufferCount : DWORD (+1064, 4byte)  st.266 = 値  /  値 = st.266   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global XAPO_REGISTRATION_PROPERTIES, pack=1
    #field GUID clsid
    #field wchar FriendlyName 256
    #field wchar CopyrightInfo 256
    #field int MajorVersion
    #field int MinorVersion
    #field int Flags
    #field int MinInputBufferCount
    #field int MaxInputBufferCount
    #field int MinOutputBufferCount
    #field int MaxOutputBufferCount
#endstruct

stdim st, XAPO_REGISTRATION_PROPERTIES        ; NSTRUCT 変数を確保
st->MajorVersion = 100
mes "MajorVersion=" + st->MajorVersion