ITSubStream
COMIDispatch (デュアル)comobj 経由でメソッド名による遅延バインド呼び出しができます(vtableインデックス不要)。公式ドキュメント
ITSubStream は ITStream の構成要素であり、アプリケーションにメディアストリーミングをより細かく制御する手段を提供します。
メソッド 8
vtbl = vtable インデックス(0始まり)。IDispatch 実装のため HSP ではメソッド名でも呼べます(上記)。低レベルの index 呼び出し用に vtbl も掲載。0〜2 は IUnknown。
StartSubStream メソッドはサブストリームを開始します。詳細については ITStream::StartStream の「解説」セクションを参照してください。
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| サブストリームにターミナルが選択されていないため、開始できません。 | |
| サブストリームは既に開始されています。 | |
| この操作はサポートされていません。 |
PauseSubStream メソッドはサブストリームを一時停止します。
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| この操作はサポートされていません。 |
解説(Remarks)
ストリームの一時停止と停止の違いは、トランスポートの種類によって異なります。
サブストリームが正常に一時停止すると、アプリケーションは値が CME_STREAM_INACTIVE の CALL_MEDIA_EVENT と、CMC_LOCAL_REQUEST に等しい CALL_MEDIA_EVENT_CAUSE を受け取ります。
サブストリームの一時停止に失敗した場合、イベントは原因が CMC_LOCAL_REQUEST の CME_STREAM_FAIL になります。
StartSubStream を呼び出すと、サブストリームが再開されます。
StopSubStream メソッドはサブストリームを停止します。詳細については ITStream::StopStream を参照してください。
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| プロバイダーはこの操作をサポートしていません。 |
SelectTerminal メソッドは ITTerminal オブジェクトをサブストリームに選択します。詳細については ITStream::SelectTerminal の「解説」セクションを参照してください。
| pTerminal | ITTerminal* | in | 選択されたターミナルの ITTerminal インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pTerminal パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| サブストリームに複数のターミナルが選択されていますが、メディアのミキシングまたは分割ができません。 | |
| 選択されたターミナルが有効ではありません。 |
UnselectTerminal メソッドはサブストリームからターミナルの選択を解除します。
| pTerminal | ITTerminal* | in | ストリームから削除するターミナルの ITTerminal インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pTerminal パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 | |
| pTerminal パラメーターが有効なターミナルを指していません。 | |
| プロバイダーはこの操作をサポートしていません。 |
解説(Remarks)
送信の遅延により、ストリーミングが停止された後に一部のストリームイベントを受け取ることがあります。
サブストリームから最後のターミナルの選択を正常に解除すると、この特定のサブストリームに対する既存のストリーミングが実質的に停止します。その後、同じターミナルまたは別のターミナルを選択すると、中断されたストリーミングが再開されます。
EnumerateTerminals メソッドは、サブストリームに選択されているターミナルを列挙します。C および C++ アプリケーション向けに提供されています。Visual Basic などのオートメーションクライアントアプリケーションでは get_Terminals メソッドを使用する必要があります。
| ppEnumTerminal | IEnumTerminal** | out | IEnumTerminal ターミナル列挙子へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| ppEnumTerminal パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
このメソッドは、サブストリームに選択されているターミナルのみを返します。ストリームや、ストリーム内の他のサブストリームに選択されている他のターミナルは返されません。
TAPI は、ITSubStream::EnumerateTerminals が返す IEnumTerminal インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 IEnumTerminal インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。
get_Terminals メソッドは、現在のサブストリームに関連付けられたターミナルのコレクションを作成します。Visual Basic などで記述されたオートメーションクライアントアプリケーション向けに提供されています。C および C++ アプリケーションでは EnumerateTerminals メソッドを使用する必要があります。
| pTerminals | VARIANT* | out | ITTerminal インターフェイスポインター(ターミナルオブジェクト)の ITCollection を格納する VARIANT へのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| pTerminals パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
このメソッドは、サブストリームに選択されているターミナルのみを返します。ストリームや、ストリーム内の他のサブストリームに選択されている他のターミナルは返されません。
TAPI は、ITSubStream::get_Terminals が返す ITTerminal インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 ITTerminal インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。
get_Stream メソッドは、現在のサブストリームの ITStream インターフェイスへのポインターを取得します。
| ppITStream | ITStream** | out | 現在の ITStream インターフェイスへのポインター。 |
戻り値
このメソッドは次のいずれかの値を返します。
| 値 | 意味 |
|---|---|
| メソッドは成功しました。 | |
| ppITStream パラメーターが有効なポインターではありません。 | |
| 操作を実行するのに十分なメモリがありません。 |
解説(Remarks)
TAPI は、ITSubStream::get_Stream が返す ITStream インターフェイスに対して AddRef メソッドを呼び出します。アプリケーションは、 ITStream インターフェイスに関連付けられたリソースを解放するために、そのインターフェイスに対して Release を呼び出す必要があります。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_ITSubStream "{EE3BD608-3868-11D2-A045-00C04FB6809F}" #usecom global ITSubStream IID_ITSubStream "{}" #comfunc global ITSubStream_StartSubStream 7 #comfunc global ITSubStream_PauseSubStream 8 #comfunc global ITSubStream_StopSubStream 9 #comfunc global ITSubStream_SelectTerminal 10 sptr #comfunc global ITSubStream_UnselectTerminal 11 sptr #comfunc global ITSubStream_EnumerateTerminals 12 sptr #comfunc global ITSubStream_get_Terminals 13 var #comfunc global ITSubStream_get_Stream 14 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。#define global IID_ITSubStream "{EE3BD608-3868-11D2-A045-00C04FB6809F}" #usecom global ITSubStream IID_ITSubStream "{}" #comfunc global ITSubStream_StartSubStream 7 #comfunc global ITSubStream_PauseSubStream 8 #comfunc global ITSubStream_StopSubStream 9 #comfunc global ITSubStream_SelectTerminal 10 sptr #comfunc global ITSubStream_UnselectTerminal 11 sptr #comfunc global ITSubStream_EnumerateTerminals 12 sptr #comfunc global ITSubStream_get_Terminals 13 sptr #comfunc global ITSubStream_get_Stream 14 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。 ; ※IDispatch 実装。HSP では comobj 経由でメソッド名による呼び出しも可能(vtbl 不要)。