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

IAudioMediaType

COM
IID4e997f73-b71f-4798-873b-ed7dfcf15b4d継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IAudioMediaType インターフェイスは、sAPO が適切なオーディオデータ形式についてオーディオエンジンとネゴシエートするために使用する情報を取得できるようにするメソッドを公開します。

メソッド 4

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT IsCompressedFormat(BOOL* pfCompressed)

IsCompressedFormat メソッドは、オーディオデータ形式が圧縮形式かどうかを判定します。

pfCompressedBOOL*outBoolean 値を受け取ります。形式が圧縮されている場合は TRUE、圧縮されていない場合は FALSE になります。

戻り値

IsCompressedFormat メソッドは、オーディオデータ形式が圧縮されている場合は S_OK を返し、それ以外の場合はエラーコードを返します。

解説(Remarks)

なし。

vtbl 4 HRESULT IsEqual(IAudioMediaType* pIAudioType, DWORD* pdwFlags)

IsEqual メソッドは、2 つのメディアタイプを比較し、それらが同一かどうかを判定します。

pIAudioTypeIAudioMediaType*in比較するメディアタイプの IAudioMediaType インターフェイスへのポインターを指定します。
pdwFlagsDWORD*out

0 個以上のフラグをビット単位の OR で結合した結果を格納する DWORD 変数へのポインターを指定します。これらのフラグは、2 つのメディアタイプ間の類似度を示します。次の表に、サポートされるフラグを示します。

フラグ 意味
AUDIOMEDIATYPE_EQUAL_FORMAT_TYPES オーディオ形式の種類が同じです。
AUDIOMEDIATYPE_EQUAL_FORMAT_DATA 基本の WAVEFORMATEX 構造体を超える追加データを除き、形式情報が一致します。
AUDIOMEDIATYPE_EQUAL_FORMAT_USER_DATA 追加データが同一であるか、どちらのメディアタイプにも追加データが含まれていません。

戻り値

IsEqual メソッドは、成功した場合は S_OK を返し、それ以外の場合は次の表に示す HRESULT 値のいずれかを返します。

戻り値 説明
E_INVALIDARG
一方のメディアタイプが無効であるか、両方のメディアタイプが無効です。
S_FALSE
メディアタイプが等しくありません。メディアタイプがどのように異なるかを判断するには、pdwFlags パラメーターを調べてください。

解説(Remarks)

両方のメディアタイプにメジャータイプが設定されている必要があり、そうでない場合、メソッドは E_INVALIDARG を返します。メディアタイプの詳細については、「Media Types」を参照してください。

MF_MEDIATYPE_EQUAL_FORMAT_DATA フラグは、両方のメディアタイプに互換性のある属性があることを示しますが、一方が他方のスーパーセットである場合があります。この比較方法により、部分的にしか指定されていないメディアタイプを、完全なメディアタイプと比較できます。たとえば、同じ形式を記述する 2 つのビデオタイプがあり、一方のタイプには拡張された色情報(クロマサイティング、公称範囲など)の属性が含まれている、といった場合です。

メソッドが成功し、すべての比較フラグが pdwFlags に設定されている場合、戻り値は S_OK になります。メソッドが成功しても一部の比較フラグが設定されていない場合、メソッドは S_FALSE を返します。

vtbl 5 WAVEFORMATEX* GetAudioFormat()

GetAudioFormat メソッドは、オーディオデータ形式の WAVEFORMATEX 構造体を返します。

戻り値

GetAudioFormat メソッドは、WAVEFORMATEX 構造体へのポインターを返します。

解説(Remarks)

返されるポインターは、IAudioMediaType インターフェイスが参照されている間のみ有効です。

vtbl 6 HRESULT GetUncompressedAudioFormat(UNCOMPRESSEDAUDIOFORMAT* pUncompressedAudioFormat)

IAudioMediaType::GetUncompressedAudioFormat は、オーディオデータ形式に関する情報を返します。

pUncompressedAudioFormatUNCOMPRESSEDAUDIOFORMAT*outUNCOMPRESSEDAUDIOFORMAT 構造体へのポインターを指定します。

戻り値

GetUncompressedAudioFormat メソッドは、成功した場合は S_OK を返します。それ以外の場合は、エラーコードを返します。

解説(Remarks)

返される情報は、非圧縮形式に対して有用です。ただし、このメソッド呼び出しは圧縮形式に対しても成功します。圧縮オーディオデータ形式に対してこの関数を呼び出す場合は、返された情報が対象の圧縮形式に適用できるかどうかを判断する必要があります。

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

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IAudioMediaType "{4E997F73-B71F-4798-873B-ED7DFCF15B4D}"
#usecom global IAudioMediaType IID_IAudioMediaType "{}"
#comfunc global IAudioMediaType_IsCompressedFormat          3 var
#comfunc global IAudioMediaType_IsEqual                     4 sptr,var
#comfunc global IAudioMediaType_GetAudioFormat              5
#comfunc global IAudioMediaType_GetUncompressedAudioFormat  6 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。