ISpatialAudioMetadataItemsBuffer
COM公式ドキュメント
データをインプレースで格納するために、SpatialAudioMetadataItems へバッファをアタッチするためのメソッドを提供します。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
ISpatialAudioMetadataItems オブジェクトを格納するために、呼び出し元が用意したメモリをアタッチします。
| buffer | BYTE* | out | 格納に使用するメモリへのポインター。 |
| bufferLength | DWORD | in | 指定するバッファの長さ。このサイズは、メタデータ形式と最大メタデータ項目数に必要な長さと一致している必要があります。 |
戻り値
メソッドが成功すると、S_OK を返します。失敗した場合に返される可能性のあるコードには、次の表に示す値が含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| ISpatialAudioMetadataItems が Open の呼び出しによってコピー用に開かれていないか、Close の呼び出しによって書き込み用に閉じられています。 | |
| ISpatialAudioMetadataItems はメディアパイプラインの内部バッファを使用するように作成されたため、外部バッファをアタッチできません。 | |
| 指定されたバッファは既にアタッチされています。 | |
|
指定されたポインターのいずれかが有効ではありません。
指定されたバッファは、最大数のメタデータ項目を保持するのに十分な大きさではありません。 |
ISpatialAudioMetadataItems オブジェクトを格納するために、既にデータが格納されているバッファをアタッチします。バッファ内に既にあるメタデータ項目は保持されます。
| buffer | BYTE* | out | 格納に使用するメモリへのポインター。 |
| bufferLength | DWORD | in | 指定するバッファの長さ。このサイズは、メタデータ形式と最大メタデータ項目数に必要な長さと一致している必要があります。 |
戻り値
メソッドが成功すると、S_OK を返します。失敗した場合に返される可能性のあるコードには、次の表に示す値が含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| ISpatialAudioMetadataItems が Open の呼び出しによってコピー用に開かれていないか、Close の呼び出しによって書き込み用に閉じられています。 | |
| 指定されたバッファは既にアタッチされています。 | |
| ISpatialAudioMetadataItems はメディアパイプラインの内部バッファを使用するように作成されたため、外部バッファをアタッチできません。 | |
| 指定された、データが格納されたバッファは、現在の形式とは異なる形式を使用しています。 | |
|
指定されたポインターのいずれかが有効ではありません。
指定されたバッファは、最大数のメタデータ項目を保持するのに十分な大きさではありません。必要なバッファサイズを確認するには、GetSpatialAudioMetadataItemsBufferLength を呼び出してください。 |
バッファをデタッチします。メモリは一度に 1 つのメタデータ項目にのみアタッチできます。
戻り値
メソッドが成功すると、S_OK を返します。失敗した場合に返される可能性のあるコードには、次の表に示す値が含まれますが、これらに限定されません。
| 戻り値コード | 説明 |
|---|---|
| ISpatialAudioMetadataItems が Open の呼び出しによってコピー用に開かれていないか、Close の呼び出しによって書き込み用に閉じられています。 | |
| ISpatialAudioMetadataItems はメディアパイプラインの内部バッファを使用するように作成されたため、デタッチできません。 | |
| 指定されたバッファはアタッチされていません。 | |
|
指定されたポインターのいずれかが有効ではありません。
指定されたバッファは、最大数のメタデータ項目を保持するのに十分な大きさではありません。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ISpatialAudioMetadataItemsBuffer "{42640A16-E1BD-42D9-9FF6-031AB71A2DBA}" #usecom global ISpatialAudioMetadataItemsBuffer IID_ISpatialAudioMetadataItemsBuffer "{}" #comfunc global ISpatialAudioMetadataItemsBuffer_AttachToBuffer 3 var,int #comfunc global ISpatialAudioMetadataItemsBuffer_AttachToPopulatedBuffer 4 var,int #comfunc global ISpatialAudioMetadataItemsBuffer_DetachBuffer 5 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_ISpatialAudioMetadataItemsBuffer "{42640A16-E1BD-42D9-9FF6-031AB71A2DBA}" #usecom global ISpatialAudioMetadataItemsBuffer IID_ISpatialAudioMetadataItemsBuffer "{}" #comfunc global ISpatialAudioMetadataItemsBuffer_AttachToBuffer 3 sptr,int #comfunc global ISpatialAudioMetadataItemsBuffer_AttachToPopulatedBuffer 4 sptr,int #comfunc global ISpatialAudioMetadataItemsBuffer_DetachBuffer 5 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。