IMFSpatialAudioObjectBuffer
COM公式ドキュメント
位置情報およびレンダリング用のメタデータを関連付けたオーディオデータの一区画を表します。空間オーディオオブジェクトは IMFSpatialAudioSample インスタンスに格納され、Media Foundation コンポーネント間で空間オーディオ情報を受け渡すことができます。
解説(Remarks)
空間オーディオオブジェクトに含まれるオーディオデータを取得するには、IMFMediaBuffer::Lock および IMFMediaBuffer::Unlock メソッドを使用します。
メソッド 5
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
バッファが表す空間オーディオオブジェクトの ID を設定します。
| u32ID | DWORD | in | オーディオオブジェクトの一意な 32 ビット符号なし ID。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
オブジェクト ID は各空間オーディオサンプルにおいて一意でなければなりません。後続のサンプルが同じ ID を持つ空間オーディオオブジェクトを含むことで、移動する動的オブジェクトや位置が変わらない静的オブジェクトを表現できます。
バッファが表す空間オーディオオブジェクトの一意な 32 ビット符号なし ID を返します。
| pu32ID | DWORD* | out | オブジェクト ID が格納される 32 ビット変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたポインターが無効です。 |
バッファが表す空間オーディオオブジェクトの種類を設定します。
| type | AudioObjectType | in | オーディオオブジェクトの種類を指定する AudioObjectType 列挙型の値。 |
戻り値
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
空間オーディオオブジェクトは AudioObjectType_Dynamic 型にすることができ、この場合は 3D 空間内で時間の経過とともに位置や向きが変化できます。あるいは、時間が経過しても位置が変わらない実在または仮想のスピーカーの静的な位置を表す AudioObjectType_FrontLeft のような値を持つこともできます。
バッファが表す空間オーディオオブジェクトの種類を取得します。SetType が事前に呼び出されていない場合、このメソッドは既定値 AudioObjectType_None を返します。
| pType | AudioObjectType* | out | オーディオオブジェクトの種類が格納される AudioObjectType 変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたポインターが無効です。 |
空間オーディオメタデータを含む可能性のあるバッファへのポインターを取得します。
| ppMetadataItems | ISpatialAudioMetadataItems** | out | メタデータ項目のコレクションが格納される ISpatialAudioMetadataItems オブジェクトへのポインター。 |
戻り値
このメソッドは HRESULT を返します。とり得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| 指定されたポインターが無効です。 |
解説(Remarks)
メタデータは、Media Foundation のトポロジー構築におけるメディアタイプネゴシエーションのフェーズで指定される MF_MT_SPATIAL_AUDIO_OBJECT_METADATA_FORMAT_ID メディアタイプ属性によって識別される形式で、ISpatialAudioMetadataItems コレクションに書き込まれます。
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 指定が可能。#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 sptr #comfunc global IMFSpatialAudioObjectBuffer_SetType 10 int #comfunc global IMFSpatialAudioObjectBuffer_GetType 11 sptr #comfunc global IMFSpatialAudioObjectBuffer_GetMetadataItems 12 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。