IMediaStream
COM公式ドキュメント
メモ このインターフェースは非推奨です。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。指定されたメディアストリームを含むマルチメディアストリームへのポインターを取得します。
| ppMultiMediaStream | IMultiMediaStream** | out | 現在のメディアストリームの作成元となったマルチメディアストリームを指す IMultiMediaStream インターフェースオブジェクトへのポインターのアドレス。 |
戻り値
解説(Remarks)
このメソッドは、取得したオブジェクトポインターの参照カウントをインクリメントします。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。ストリームの目的 ID とメディアタイプを取得します。
| pPurposeId | GUID* | out | ストリームの目的 ID を格納する MSPID 値へのポインター(Multimedia Streaming Data Types を参照)。このパラメーターが入力時に NULL の場合、メソッドは目的 ID を取得しません。 |
| pType | STREAM_TYPE* | out | ストリームのメディアタイプを格納する STREAM_TYPE 列挙データ型の値へのポインター。このパラメーターが入力時に NULL の場合、メソッドはメディアタイプを取得しません。 |
戻り値
解説(Remarks)
pPurposeId パラメーターで取得される値は通常、プライマリビデオストリームを識別する MSPID_PrimaryVideo か、プライマリオーディオストリームを識別する MSPID_PrimaryAudio のいずれかになります。ただし、必要に応じて他の値を定義することもできます。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。メディアストリームを以前のストリームと同じ形式に設定します。
| pStreamThatHasDesiredFormat | IMediaStream* | in | 同じ形式を持つメディアストリームオブジェクトへのポインター。 |
| dwFlags | DWORD | in | フラグデータ用に予約されています。0 でなければなりません。 |
戻り値
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。現在のメディアストリーム用に新しいストリームサンプルオブジェクトを割り当てます。
| dwFlags | DWORD | in | フラグ。0 でなければなりません。 |
| ppSample | IStreamSample** | out | 新しく作成されたストリームサンプルの IStreamSample インターフェースへのポインターのアドレス。 |
戻り値
次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| ストリームサンプルを作成するのに十分なメモリがありません。 | |
| パラメーターが無効です。 | |
| 成功しました。 |
解説(Remarks)
このメソッドは、サンプルおよびそれに関連付けられたバッキングオブジェクトまたはバッファーを割り当てます。バッキングオブジェクトは、ビデオの場合は DirectDraw サーフェス、オーディオの場合は IAudioData オブジェクトのいずれかです。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。既存のサンプルと同じバッキングオブジェクトを共有する新しいストリームサンプルを作成します。
| pExistingSample | IStreamSample* | in | 既存のサンプルへのポインター。 |
| dwFlags | DWORD | in | フラグデータ用に予約されています。0 でなければなりません。 |
| ppNewSample | IStreamSample** | out | 新しく作成された共有サンプルを指す IStreamSample インターフェースへのポインターのアドレス。 |
戻り値
次のいずれかの値を返します。
| リターンコード | 説明 |
|---|---|
| サンプルを作成するのに十分なメモリがありません。 | |
| いずれかのパラメーターが無効です。 | |
|
既存のサンプルが指定されたメディアストリームと互換性がありません。 |
| 成功しました。ppNewSample は新しく作成されたサンプルを指します。 |
解説(Remarks)
このメソッドは、既存のサンプルに対して IUnknown::QueryInterface を呼び出してメディアタイプ固有の情報を取得し、それを使用して共有サンプルを作成します。
メモ このインターフェースは非推奨です。新しいアプリケーションでは使用しないでください。現在のストリームを強制的に終了させます。現在のストリームが書き込み可能でない場合、このメソッドは何も行いません。
| dwFlags | DWORD | in | フラグデータ用に予約されています。0 でなければなりません。 |
戻り値
成功した場合は S_OK を返します。既存のサンプルが現在のメディアストリームと互換性がない場合は MS_E_INCOMPATIBLE を返します。
解説(Remarks)
アプリケーションはこの内部メソッドを呼び出しません。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMediaStream "{B502D1BD-9A57-11D0-8FDE-00C04FD9189D}" #usecom global IMediaStream IID_IMediaStream "{}" #comfunc global IMediaStream_GetMultiMediaStream 3 sptr #comfunc global IMediaStream_GetInformation 4 var,var #comfunc global IMediaStream_SetSameFormat 5 sptr,int #comfunc global IMediaStream_AllocateSample 6 int,sptr #comfunc global IMediaStream_CreateSharedSample 7 sptr,int,sptr #comfunc global IMediaStream_SendEndOfStream 8 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IMediaStream "{B502D1BD-9A57-11D0-8FDE-00C04FD9189D}" #usecom global IMediaStream IID_IMediaStream "{}" #comfunc global IMediaStream_GetMultiMediaStream 3 sptr #comfunc global IMediaStream_GetInformation 4 sptr,sptr #comfunc global IMediaStream_SetSameFormat 5 sptr,int #comfunc global IMediaStream_AllocateSample 6 int,sptr #comfunc global IMediaStream_CreateSharedSample 7 sptr,int,sptr #comfunc global IMediaStream_SendEndOfStream 8 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。