ホーム › Media.DirectShow › AUDIO_STREAM_CONFIG_CAPS
AUDIO_STREAM_CONFIG_CAPS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| guid | GUID | 16 | +0 | +0 | メディア種別のフォーマットを識別するGUIDを示す。 |
| MinimumChannels | DWORD | 4 | +16 | +16 | サポートする最小チャンネル数を示す。 |
| MaximumChannels | DWORD | 4 | +20 | +20 | サポートする最大チャンネル数を示す。 |
| ChannelsGranularity | DWORD | 4 | +24 | +24 | チャンネル数の刻み幅を示す。 |
| MinimumBitsPerSample | DWORD | 4 | +28 | +28 | サポートする最小ビット深度を示す。 |
| MaximumBitsPerSample | DWORD | 4 | +32 | +32 | サポートする最大ビット深度を示す。 |
| BitsPerSampleGranularity | DWORD | 4 | +36 | +36 | ビット深度の刻み幅を示す。 |
| MinimumSampleFrequency | DWORD | 4 | +40 | +40 | サポートする最小サンプリング周波数をHzで示す。 |
| MaximumSampleFrequency | DWORD | 4 | +44 | +44 | サポートする最大サンプリング周波数をHzで示す。 |
| SampleFrequencyGranularity | DWORD | 4 | +48 | +48 | サンプリング周波数の刻み幅をHzで示す。 |
各言語での定義
#include <windows.h>
// AUDIO_STREAM_CONFIG_CAPS (x64 52 / x86 52 バイト)
typedef struct AUDIO_STREAM_CONFIG_CAPS {
GUID guid;
DWORD MinimumChannels;
DWORD MaximumChannels;
DWORD ChannelsGranularity;
DWORD MinimumBitsPerSample;
DWORD MaximumBitsPerSample;
DWORD BitsPerSampleGranularity;
DWORD MinimumSampleFrequency;
DWORD MaximumSampleFrequency;
DWORD SampleFrequencyGranularity;
} AUDIO_STREAM_CONFIG_CAPS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct AUDIO_STREAM_CONFIG_CAPS
{
public Guid guid;
public uint MinimumChannels;
public uint MaximumChannels;
public uint ChannelsGranularity;
public uint MinimumBitsPerSample;
public uint MaximumBitsPerSample;
public uint BitsPerSampleGranularity;
public uint MinimumSampleFrequency;
public uint MaximumSampleFrequency;
public uint SampleFrequencyGranularity;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure AUDIO_STREAM_CONFIG_CAPS
Public guid As Guid
Public MinimumChannels As UInteger
Public MaximumChannels As UInteger
Public ChannelsGranularity As UInteger
Public MinimumBitsPerSample As UInteger
Public MaximumBitsPerSample As UInteger
Public BitsPerSampleGranularity As UInteger
Public MinimumSampleFrequency As UInteger
Public MaximumSampleFrequency As UInteger
Public SampleFrequencyGranularity As UInteger
End Structureimport ctypes
from ctypes import wintypes
class AUDIO_STREAM_CONFIG_CAPS(ctypes.Structure):
_fields_ = [
("guid", GUID),
("MinimumChannels", wintypes.DWORD),
("MaximumChannels", wintypes.DWORD),
("ChannelsGranularity", wintypes.DWORD),
("MinimumBitsPerSample", wintypes.DWORD),
("MaximumBitsPerSample", wintypes.DWORD),
("BitsPerSampleGranularity", wintypes.DWORD),
("MinimumSampleFrequency", wintypes.DWORD),
("MaximumSampleFrequency", wintypes.DWORD),
("SampleFrequencyGranularity", wintypes.DWORD),
]#[repr(C)]
pub struct AUDIO_STREAM_CONFIG_CAPS {
pub guid: GUID,
pub MinimumChannels: u32,
pub MaximumChannels: u32,
pub ChannelsGranularity: u32,
pub MinimumBitsPerSample: u32,
pub MaximumBitsPerSample: u32,
pub BitsPerSampleGranularity: u32,
pub MinimumSampleFrequency: u32,
pub MaximumSampleFrequency: u32,
pub SampleFrequencyGranularity: u32,
}import "golang.org/x/sys/windows"
type AUDIO_STREAM_CONFIG_CAPS struct {
guid windows.GUID
MinimumChannels uint32
MaximumChannels uint32
ChannelsGranularity uint32
MinimumBitsPerSample uint32
MaximumBitsPerSample uint32
BitsPerSampleGranularity uint32
MinimumSampleFrequency uint32
MaximumSampleFrequency uint32
SampleFrequencyGranularity uint32
}type
AUDIO_STREAM_CONFIG_CAPS = record
guid: TGUID;
MinimumChannels: DWORD;
MaximumChannels: DWORD;
ChannelsGranularity: DWORD;
MinimumBitsPerSample: DWORD;
MaximumBitsPerSample: DWORD;
BitsPerSampleGranularity: DWORD;
MinimumSampleFrequency: DWORD;
MaximumSampleFrequency: DWORD;
SampleFrequencyGranularity: DWORD;
end;const AUDIO_STREAM_CONFIG_CAPS = extern struct {
guid: GUID,
MinimumChannels: u32,
MaximumChannels: u32,
ChannelsGranularity: u32,
MinimumBitsPerSample: u32,
MaximumBitsPerSample: u32,
BitsPerSampleGranularity: u32,
MinimumSampleFrequency: u32,
MaximumSampleFrequency: u32,
SampleFrequencyGranularity: u32,
};type
AUDIO_STREAM_CONFIG_CAPS {.bycopy.} = object
guid: GUID
MinimumChannels: uint32
MaximumChannels: uint32
ChannelsGranularity: uint32
MinimumBitsPerSample: uint32
MaximumBitsPerSample: uint32
BitsPerSampleGranularity: uint32
MinimumSampleFrequency: uint32
MaximumSampleFrequency: uint32
SampleFrequencyGranularity: uint32struct AUDIO_STREAM_CONFIG_CAPS
{
GUID guid;
uint MinimumChannels;
uint MaximumChannels;
uint ChannelsGranularity;
uint MinimumBitsPerSample;
uint MaximumBitsPerSample;
uint BitsPerSampleGranularity;
uint MinimumSampleFrequency;
uint MaximumSampleFrequency;
uint SampleFrequencyGranularity;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; AUDIO_STREAM_CONFIG_CAPS サイズ: 52 バイト(x64)
dim st, 13 ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; guid : GUID (+0, 16byte) varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; MinimumChannels : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; MaximumChannels : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; ChannelsGranularity : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; MinimumBitsPerSample : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; MaximumBitsPerSample : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; BitsPerSampleGranularity : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; MinimumSampleFrequency : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; MaximumSampleFrequency : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; SampleFrequencyGranularity : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (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 AUDIO_STREAM_CONFIG_CAPS
#field GUID guid
#field int MinimumChannels
#field int MaximumChannels
#field int ChannelsGranularity
#field int MinimumBitsPerSample
#field int MaximumBitsPerSample
#field int BitsPerSampleGranularity
#field int MinimumSampleFrequency
#field int MaximumSampleFrequency
#field int SampleFrequencyGranularity
#endstruct
stdim st, AUDIO_STREAM_CONFIG_CAPS ; NSTRUCT 変数を確保
st->MinimumChannels = 100
mes "MinimumChannels=" + st->MinimumChannels