Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFSpatialAudioObjectBuffer

IMFSpatialAudioObjectBuffer

COM
IIDd396ec8c-605e-4249-978d-72ad1c312872継承元IMFMediaBuffer自前メソッド開始 vtbl8

公式ドキュメント

位置情報およびレンダリング用のメタデータを関連付けたオーディオデータの一区画を表します。空間オーディオオブジェクトは IMFSpatialAudioSample インスタンスに格納され、Media Foundation コンポーネント間で空間オーディオ情報を受け渡すことができます。

解説(Remarks)

空間オーディオオブジェクトに含まれるオーディオデータを取得するには、IMFMediaBuffer::Lock および IMFMediaBuffer::Unlock メソッドを使用します。

メソッド 5

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

vtbl 8 HRESULT SetID(DWORD u32ID)

バッファが表す空間オーディオオブジェクトの ID を設定します。

u32IDDWORDinオーディオオブジェクトの一意な 32 ビット符号なし ID。

戻り値

このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。

解説(Remarks)

オブジェクト ID は各空間オーディオサンプルにおいて一意でなければなりません。後続のサンプルが同じ ID を持つ空間オーディオオブジェクトを含むことで、移動する動的オブジェクトや位置が変わらない静的オブジェクトを表現できます。

vtbl 9 HRESULT GetID(DWORD* pu32ID)

バッファが表す空間オーディオオブジェクトの一意な 32 ビット符号なし ID を返します。

pu32IDDWORD*outオブジェクト ID が格納される 32 ビット変数へのポインター。

戻り値

このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_POINTER
指定されたポインターが無効です。
vtbl 10 HRESULT SetType(AudioObjectType type)

バッファが表す空間オーディオオブジェクトの種類を設定します。

typeAudioObjectTypeinオーディオオブジェクトの種類を指定する AudioObjectType 列挙型の値。

戻り値

このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

空間オーディオオブジェクトは AudioObjectType_Dynamic 型にすることができ、この場合は 3D 空間内で時間の経過とともに位置や向きが変化できます。あるいは、時間が経過しても位置が変わらない実在または仮想のスピーカーの静的な位置を表す AudioObjectType_FrontLeft のような値を持つこともできます。

vtbl 11 HRESULT GetType(AudioObjectType* pType)

バッファが表す空間オーディオオブジェクトの種類を取得します。SetType が事前に呼び出されていない場合、このメソッドは既定値 AudioObjectType_None を返します。

pTypeAudioObjectType*outオーディオオブジェクトの種類が格納される AudioObjectType 変数へのポインター。

戻り値

このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_POINTER
指定されたポインターが無効です。
vtbl 12 HRESULT GetMetadataItems(ISpatialAudioMetadataItems** ppMetadataItems)

空間オーディオメタデータを含む可能性のあるバッファへのポインターを取得します。

ppMetadataItemsISpatialAudioMetadataItems**outメタデータ項目のコレクションが格納される ISpatialAudioMetadataItems オブジェクトへのポインター。

戻り値

このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。

戻り値コード 説明
S_OK
メソッドは成功しました。
E_POINTER
指定されたポインターが無効です。

解説(Remarks)

メタデータは、Media Foundation のトポロジー構築におけるメディアタイプネゴシエーションのフェーズで指定される MF_MT_SPATIAL_AUDIO_OBJECT_METADATA_FORMAT_ID メディアタイプ属性によって識別される形式で、ISpatialAudioMetadataItems コレクションに書き込まれます。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IMFSpatialAudioObjectBuffer "{D396EC8C-605E-4249-978D-72AD1C312872}"
#usecom global IMFSpatialAudioObjectBuffer IID_IMFSpatialAudioObjectBuffer "{}"
#comfunc global IMFSpatialAudioObjectBuffer_SetID             8 int
#comfunc global IMFSpatialAudioObjectBuffer_GetID             9 var
#comfunc global IMFSpatialAudioObjectBuffer_SetType           10 int
#comfunc global IMFSpatialAudioObjectBuffer_GetType           11 var
#comfunc global IMFSpatialAudioObjectBuffer_GetMetadataItems  12 sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。