ホーム › 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 | オーディオサンプルであることを示すために MEDIATYPE_Audio が設定されます。 |
| MinimumChannels | DWORD | 4 | +16 | +16 | チャンネル数の最小値です。 |
| MaximumChannels | DWORD | 4 | +20 | +20 | チャンネル数の最大値です。 |
| ChannelsGranularity | DWORD | 4 | +24 | +24 | チャンネル数の粒度です。たとえば、フィルターはチャンネル数を 2 から 4 まで 2 刻みで指定することがあります。 |
| MinimumBitsPerSample | DWORD | 4 | +28 | +28 | 1 サンプルあたりのビット数の最小値です。 |
| MaximumBitsPerSample | DWORD | 4 | +32 | +32 | 1 サンプルあたりのビット数の最大値です。 |
| BitsPerSampleGranularity | DWORD | 4 | +36 | +36 | 1 サンプルあたりのビット数の粒度です。たとえば、フィルターは 1 サンプルあたり 8 ビットから 32 ビットまでを 8 刻みで指定することがあります。 |
| MinimumSampleFrequency | DWORD | 4 | +40 | +40 | サンプリング周波数の最小値です。 |
| MaximumSampleFrequency | DWORD | 4 | +44 | +44 | サンプリング周波数の最大値です。 |
| SampleFrequencyGranularity | DWORD | 4 | +48 | +48 | 周波数の粒度です。たとえば、フィルターは 11025 Hz から 44100 Hz までを 11025 Hz 刻みで指定することがあります。 |
公式ドキュメント
[このページに関連する機能である DirectShow はレガシー機能です。この機能は MediaPlayer、IMFMediaEngine、および Media Foundation でのオーディオ/ビデオキャプチャ に置き換えられています。これらの機能は Windows 10 および Windows 11 向けに最適化されています。Microsoft は、新しいコードでは可能な限り DirectShow ではなく MediaPlayer、IMFMediaEngine、Media Foundation でのオーディオ/ビデオキャプチャ を使用することを強く推奨します。レガシー API を使用している既存のコードについても、可能であれば新しい API を使用するように書き換えることを推奨します。]
AUDIO_STREAM_CONFIG_CAPS 構造体は、オーディオ形式の範囲を記述します。オーディオの圧縮フィルターおよびキャプチャフィルターは、この構造体を使用して自身が生成できる形式を記述します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#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