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

IWMStreamConfig2

COM
IID7688d8cb-fc0d-43bd-9459-5a8dec200cfa継承元IWMStreamConfig自前メソッド開始 vtbl14

公式ドキュメント

IWMStreamConfig2 インターフェイスは、ストリームに関連付けられたデータユニット拡張を管理します。IWMStreamConfig2 は IWMStreamConfig を継承します。IWMStreamConfig2 へのポインターを取得するには、IWMStreamConfig インターフェイスの QueryInterface メソッドを呼び出します。

メソッド 6

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

vtbl 14 HRESULT GetTransportType(WMT_TRANSPORT_TYPE* pnTransportType)

GetTransportType メソッドは、ストリームに使用されるデータ通信プロトコルの種類(信頼性ありまたは信頼性なし)を取得します。

pnTransportTypeWMT_TRANSPORT_TYPE*outWMT_TRANSPORT_TYPE 列挙型のいずれかのメンバーを受け取る変数へのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_POINTER
pnTransportTypeNULL です。
vtbl 15 HRESULT SetTransportType(WMT_TRANSPORT_TYPE nTransportType)

SetTransportType メソッドは、ストリームに使用されるデータ通信プロトコルの種類(信頼性ありまたは信頼性なし)を設定します。

nTransportTypeWMT_TRANSPORT_TYPEinストリームのトランスポートの種類を指定する WMT_TRANSPORT_TYPE 列挙型のいずれかのメンバー。

戻り値

このメソッドは常に S_OK を返します。

解説(Remarks)

新しい値は、IWMProfile::ReconfigStream を呼び出すまでプロファイルに反映されません。

vtbl 16 HRESULT AddDataUnitExtension(GUID guidExtensionSystemID, WORD cbExtensionDataSize, BYTE* pbExtensionSystemInfo, DWORD cbExtensionSystemInfo)

AddDataUnitExtension メソッドは、ストリームにデータユニット拡張システムを追加します。データユニット拡張システムを使用すると、出力ファイル内のサンプルにカスタムデータを付加できます。

guidExtensionSystemIDGUIDinデータユニット拡張システムを識別する GUID。これには、INSSBuffer3::SetProperty に列挙されている定義済みの GUID のいずれか、またはカスタムプレーヤーアプリケーションが値を解釈できる GUID を指定できます。
cbExtensionDataSizeWORDinストリーム内のパケットに付加されるデータユニット拡張のサイズ(バイト単位)。可変サイズのデータユニット拡張を指定するには 0xFFFF を設定します。その場合、個々のデータユニット拡張は 0 から 65534 までの任意のサイズに設定できます。
pbExtensionSystemInfoBYTE*inデータユニット拡張システムに関する情報を格納するバイトバッファーへのポインター。情報がない場合は NULL を渡すことができます。NULL を渡す場合、cbExtensionSystemInfo は 0 でなければなりません。
cbExtensionSystemInfoDWORDinpbExtensionSystemInfo のバッファー内のバイト数。データユニット拡張システムの情報がない場合は 0 を渡すことができます。0 を渡す場合、pbExtensionSystemInfoNULL でなければなりません。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
cbExtensionSystemInfo が 0 以外の値を指定していますが、pbExtensionSystemInfoNULL です。
E_OUTOFMEMORY
新しいデータユニット拡張を保持するためのメモリをメソッドが割り当てられません。

解説(Remarks)

既存のデータユニット拡張システムの GUID を渡してもエラーにはなりません。古いシステムは破棄され、新しいシステムに置き換えられます。

新しい値は、IWMProfile::ReconfigStream を呼び出すまでプロファイルに反映されません。

vtbl 17 HRESULT GetDataUnitExtensionCount(WORD* pcDataUnitExtensions)

GetDataUnitExtensionCount メソッドは、ストリームに追加されたデータユニット拡張システムの総数を取得します。

pcDataUnitExtensionsWORD*outデータユニット拡張の数を受け取る WORD へのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pcDataUnitExtensionsNULL です。
vtbl 18 HRESULT GetDataUnitExtension(WORD wDataUnitExtensionNumber, GUID* pguidExtensionSystemID, WORD* pcbExtensionDataSize, BYTE* pbExtensionSystemInfo, DWORD* pcbExtensionSystemInfo)

GetDataUnitExtension メソッドは、既存のデータユニット拡張システムに関する情報を取得します。

wDataUnitExtensionNumberWORDinデータユニット拡張番号を格納する WORD。この番号は、データユニット拡張システムがストリームに追加されるときに割り当てられます。
pguidExtensionSystemIDGUID*outデータユニット拡張システムの識別子を受け取る GUID へのポインター。
pcbExtensionDataSizeWORD*out

ストリーム内のパケットに付加されるデータユニット拡張のサイズ(バイト単位)へのポインター。

この値が 0xFFFF の場合、システムは可変サイズのデータユニット拡張を使用します。その場合、個々のデータユニット拡張は 0 から 65534 までの任意のサイズに設定できます。

pbExtensionSystemInfoBYTE*outデータユニット拡張システムに関する情報を受け取るバイトバッファーへのポインター。
pcbExtensionSystemInfoDWORD*inoutpbExtensionSystemInfo に格納されるデータのサイズ(バイト単位)へのポインター。

戻り値

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

戻り値のコード 説明
S_OK
メソッドは成功しました。
E_INVALIDARG
pguidExtensionSystemID または pcbExtensionDataSizeNULL です。

または

wDataUnitExtensionNumber が無効なデータユニット拡張番号を指定しています。

解説(Remarks)

ストリームに関連付けられたデータユニット拡張システムの総数を取得するには、GetDataUnitExtensionCount を呼び出します。

vtbl 19 HRESULT RemoveAllDataUnitExtensions()

RemoveAllDataUnitExtensions メソッドは、ストリームに関連付けられているすべてのデータユニット拡張システムを削除します。

戻り値

このメソッドは常に S_OK を返します。

解説(Remarks)

変更は、IWMProfile::ReconfigStream を呼び出すまでプロファイルに反映されません。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_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 方式にも切替可。