IWMStreamConfig2
COM公式ドキュメント
IWMStreamConfig2 インターフェイスは、ストリームに関連付けられたデータユニット拡張を管理します。IWMStreamConfig2 は IWMStreamConfig を継承します。IWMStreamConfig2 へのポインターを取得するには、IWMStreamConfig インターフェイスの QueryInterface メソッドを呼び出します。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
GetTransportType メソッドは、ストリームに使用されるデータ通信プロトコルの種類(信頼性ありまたは信頼性なし)を取得します。
| pnTransportType | WMT_TRANSPORT_TYPE* | out | WMT_TRANSPORT_TYPE 列挙型のいずれかのメンバーを受け取る変数へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pnTransportType が NULL です。 |
SetTransportType メソッドは、ストリームに使用されるデータ通信プロトコルの種類(信頼性ありまたは信頼性なし)を設定します。
| nTransportType | WMT_TRANSPORT_TYPE | in | ストリームのトランスポートの種類を指定する WMT_TRANSPORT_TYPE 列挙型のいずれかのメンバー。 |
戻り値
このメソッドは常に S_OK を返します。
解説(Remarks)
新しい値は、IWMProfile::ReconfigStream を呼び出すまでプロファイルに反映されません。
AddDataUnitExtension メソッドは、ストリームにデータユニット拡張システムを追加します。データユニット拡張システムを使用すると、出力ファイル内のサンプルにカスタムデータを付加できます。
| guidExtensionSystemID | GUID | in | データユニット拡張システムを識別する GUID。これには、INSSBuffer3::SetProperty に列挙されている定義済みの GUID のいずれか、またはカスタムプレーヤーアプリケーションが値を解釈できる GUID を指定できます。 |
| cbExtensionDataSize | WORD | in | ストリーム内のパケットに付加されるデータユニット拡張のサイズ(バイト単位)。可変サイズのデータユニット拡張を指定するには 0xFFFF を設定します。その場合、個々のデータユニット拡張は 0 から 65534 までの任意のサイズに設定できます。 |
| pbExtensionSystemInfo | BYTE* | in | データユニット拡張システムに関する情報を格納するバイトバッファーへのポインター。情報がない場合は NULL を渡すことができます。NULL を渡す場合、cbExtensionSystemInfo は 0 でなければなりません。 |
| cbExtensionSystemInfo | DWORD | in | pbExtensionSystemInfo のバッファー内のバイト数。データユニット拡張システムの情報がない場合は 0 を渡すことができます。0 を渡す場合、pbExtensionSystemInfo は NULL でなければなりません。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| cbExtensionSystemInfo が 0 以外の値を指定していますが、pbExtensionSystemInfo が NULL です。 | |
| 新しいデータユニット拡張を保持するためのメモリをメソッドが割り当てられません。 |
解説(Remarks)
既存のデータユニット拡張システムの GUID を渡してもエラーにはなりません。古いシステムは破棄され、新しいシステムに置き換えられます。
新しい値は、IWMProfile::ReconfigStream を呼び出すまでプロファイルに反映されません。
GetDataUnitExtensionCount メソッドは、ストリームに追加されたデータユニット拡張システムの総数を取得します。
| pcDataUnitExtensions | WORD* | out | データユニット拡張の数を受け取る WORD へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
| pcDataUnitExtensions が NULL です。 |
GetDataUnitExtension メソッドは、既存のデータユニット拡張システムに関する情報を取得します。
| wDataUnitExtensionNumber | WORD | in | データユニット拡張番号を格納する WORD。この番号は、データユニット拡張システムがストリームに追加されるときに割り当てられます。 |
| pguidExtensionSystemID | GUID* | out | データユニット拡張システムの識別子を受け取る GUID へのポインター。 |
| pcbExtensionDataSize | WORD* | out | ストリーム内のパケットに付加されるデータユニット拡張のサイズ(バイト単位)へのポインター。 この値が 0xFFFF の場合、システムは可変サイズのデータユニット拡張を使用します。その場合、個々のデータユニット拡張は 0 から 65534 までの任意のサイズに設定できます。 |
| pbExtensionSystemInfo | BYTE* | out | データユニット拡張システムに関する情報を受け取るバイトバッファーへのポインター。 |
| pcbExtensionSystemInfo | DWORD* | inout | pbExtensionSystemInfo に格納されるデータのサイズ(バイト単位)へのポインター。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には次の表に示すものが含まれますが、これらに限定されません。
| 戻り値のコード | 説明 |
|---|---|
| メソッドは成功しました。 | |
|
pguidExtensionSystemID または pcbExtensionDataSize が NULL です。
または wDataUnitExtensionNumber が無効なデータユニット拡張番号を指定しています。 |
解説(Remarks)
ストリームに関連付けられたデータユニット拡張システムの総数を取得するには、GetDataUnitExtensionCount を呼び出します。
RemoveAllDataUnitExtensions メソッドは、ストリームに関連付けられているすべてのデータユニット拡張システムを削除します。
戻り値
このメソッドは常に S_OK を返します。
解説(Remarks)
変更は、IWMProfile::ReconfigStream を呼び出すまでプロファイルに反映されません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IWMStreamConfig2 "{7688D8CB-FC0D-43BD-9459-5A8DEC200CFA}" #usecom global IWMStreamConfig2 IID_IWMStreamConfig2 "{}" #comfunc global IWMStreamConfig2_GetTransportType 14 var #comfunc global IWMStreamConfig2_SetTransportType 15 int #comfunc global IWMStreamConfig2_AddDataUnitExtension 16 int,int,var,int #comfunc global IWMStreamConfig2_GetDataUnitExtensionCount 17 var #comfunc global IWMStreamConfig2_GetDataUnitExtension 18 int,var,var,var,var #comfunc global IWMStreamConfig2_RemoveAllDataUnitExtensions 19 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IWMStreamConfig2 "{7688D8CB-FC0D-43BD-9459-5A8DEC200CFA}" #usecom global IWMStreamConfig2 IID_IWMStreamConfig2 "{}" #comfunc global IWMStreamConfig2_GetTransportType 14 sptr #comfunc global IWMStreamConfig2_SetTransportType 15 int #comfunc global IWMStreamConfig2_AddDataUnitExtension 16 int,int,sptr,int #comfunc global IWMStreamConfig2_GetDataUnitExtensionCount 17 sptr #comfunc global IWMStreamConfig2_GetDataUnitExtension 18 int,sptr,sptr,sptr,sptr #comfunc global IWMStreamConfig2_RemoveAllDataUnitExtensions 19 ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。