Microsoft DirectX 8.0

IMediaStream インターフェイス

IMediaStream インターフェイスは、メディア ストリームの特性 (ストリームのメディア タイプ、目的 ID など) へのアクセスを提供する。また、データ サンプルを作成するメソッドも用意されている。

マルチメディア ストリーミング インターフェイスを実装するサンプル コードについては、「マルチメディア ストリーミングのサンプル コード」を参照すること。

メディア ストリームにメディア タイプ固有の機能を追加するには、このインターフェイスを実装する。このインターフェイスは、マルチメディア ストリーム オブジェクト上に実装される。IMediaStream には汎用のサンプル作成メソッドがあるが、通常は、メディア タイプの個々の特性を十分引き出すために、これらのメソッドをより強力に書き直す必要がある。

アプリケーションから、ストリームのメディア タイプ情報にアクセスし、データ サンプルを作成するには、このインターフェイスを使用する。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IMediaStream メソッド説明
GetMultiMediaStream 指定されたメディア ストリームが格納されたマルチメディア ストリームへのポインタを取得する。
GetInformation ストリームの目的 ID とメディア タイプを取得する。
SetSameFormat メディア ストリームを直前のストリームと同じフォーマットに設定する。
AllocateSample 現在のメディア ストリームに新しいストリーム サンプル オブジェクトを割り当てる。
CreateSharedSample 既存サンプルと同じバッキング オブジェクトを共有する新しいストリーム サンプルを作成する。
SendEndOfStream 現在のストリームを強制終了する。現在のストリームが書き込み可能でない場合、このメソッドは何も実行しない。

IMediaStream::AllocateSample

IMediaStream インターフェイス

現在のメディア ストリームに新しいストリーム サンプル オブジェクトを割り当てる。

構文

HRESULT AllocateSample(
  DWORD dwFlags,
  IStreamSample **ppSample
  );

パラメータ

dwFlags
[in] フラグ。ゼロでなくてはならない。
ppSample
[out] 新しく作成されたストリーム サンプルの IStreamSample インターフェイスへのポインタのアドレス。

戻り値

次のいずれかの値を返す。
E_OUTOFMEMORY メモリ不足のため、ストリーム サンプルを作成できない。
E_POINTER パラメータが無効。
S_OK 成功。

注意

このメソッドは、サンプルとそのバッキング オブジェクトまたはバッファを割り当てる。バッキング オブジェクトは、ビデオ用の DirectDraw サーフェスか、またはオーディオ用の IAudioData オブジェクトのどちらかである。

IMediaStream::CreateSharedSample

IMediaStream インターフェイス

既存サンプルと同じバッキング オブジェクトを共有する新しいストリーム サンプルを作成する。

構文

HRESULT CreateSharedSample(

  IStreamSample *pExistingSample,
  DWORD dwFlags ,
  IStreamSample **ppNewSample
  );

パラメータ

pExistingSample
[in] 既存のサンプルへのポインタ。
dwFlags
[in] フラグ データ用に予約されている。ゼロでなくてはならない。
ppNewSample
[out] IStreamSample インターフェイスへのポインタのアドレス。このポインタに、新しく作成された共有サンプルのアドレスを受け取る。

戻り値

次のいずれかの値を返す。
E_OUTOFMEMORY メモリ不足のため、サンプルを作成できない。
E_POINTER パラメータの 1 つが無効。
MS_E_INCOMPATIBLE 既存のサンプルが指定されたメディア ストリームと互換でない。
S_OK 成功。ppNewSample は新しく作成されたサンプルを指す。

注意

このメソッドは、既存のサンプル上の IUnknown::QueryInterface を呼び出してメディア タイプ固有の情報を取得し、その情報を使って共有サンプルを作成する。

IMediaStream::GetInformation

IMediaStream インターフェイス

ストリームの目的 ID とメディア タイプを取得する。

構文

HRESULT GetInformation(

  MSPID *pPurposeId,
  STREAM_TYPE *pType
  );

パラメータ

pPurposeId
[out] ストリームの目的 ID が格納される MSPID 値へのポインタ。このパラメータに NULL を渡した場合、メソッドは目的 ID を取得しない。
pType
[out] ストリームのメディア タイプが格納される STREAM_TYPE 列挙型値へのポインタ。このパラメータに NULL を渡した場合、メソッドはメディア タイプを取得しない。

戻り値

成功した場合は、S_OK を返す。パラメータの 1 つが無効な場合は、E_POINTER を返す。

注意

pPurposeId パラメータに取得される値は、通常、プライマリ ビデオ ストリームを識別する MSPID_PrimaryVideo か、またはプライマリ オーディオ ストリームを識別する MSPID_PrimaryAudio のどちらかである。ただし、必要に応じてほかの値を定義することもできる。

IMediaStream::GetMultiMediaStream

IMediaStream インターフェイス

指定されたメディア ストリームが格納されたマルチメディア ストリームへのポインタを取得する。

構文

HRESULT GetMultiMediaStream(

  IMultiMediaStream **ppMultiMediaStream
  );

パラメータ

ppMultiMediaStream
[out] IMultiMediaStream インターフェイス オブジェクトへのポインタのアドレス。このポインタに、現在のメディア ストリームを作成する際に基になったメディア ストリームのアドレスを受け取る。

戻り値

成功した場合は、S_OK を返す。ppMultiMediaStream が無効な場合は、E_POINTER を返す。

注意

このメソッドは、取得されたオブジェクト ポインタの参照カウントをインクリメントする。

IMediaStream::SendEndOfStream

IMediaStream インターフェイス

現在のストリームを強制終了する。現在のストリームが書き込み可能でない場合、このメソッドは何も実行しない。

構文

HRESULT SendEndOfStream(

  DWORD dwFlags
  );

パラメータ

dwFlags
[in] フラグ データ用に予約されている。ゼロでなくてはならない。

戻り値

成功した場合は、S_OK を返す。既存のサンプルが現在のメディア ストリームと互換でない場合は、MS_E_INCOMPATIBLE を返す。

注意

アプリケーションからこの内部メソッドを呼び出すことはない。

IMediaStream::SetSameFormat

IMediaStream インターフェイス

メディア ストリームを直前のストリームと同じフォーマットに設定する。

構文

HRESULT SetSameFormat(

  IMediaStream *pStreamThatHasDesiredFormat,
  DWORD dwFlags
  );

パラメータ

pStreamThatHasDesiredFormat
[in] 同じフォーマットを持つメディア ストリーム オブジェクトへのポインタ。
dwFlags
[in] フラグ データ用に予約されている。ゼロでなくてはならない。

戻り値

成功した場合は、S_OK を返す。パラメータの 1 つが無効な場合は、E_POINTER を返す。