MEBufferingStarted イベント
メディア ソースがデータのバッファー処理を開始したことを通知します。
メディア セッションの実行中にソースがデータをバッファーする場合、メディア ソースはこのイベントを送信できます。 メディア セッションは、このイベントを受信すると、メディア ソースが MEBufferingStopped イベントを送信するまでプレゼンテーション クロックを一時停止します。 メディア セッションでは、MEBufferingStarted イベントもアプリケーションに転送されます。
IMFByteStreamBuffering インターフェイスを実装するバイト ストリームも、このイベントを送信します。
イベント値
IMFMediaEvent::GetValue から取得できる値は次のとおりです。
VARTYPE | 説明 |
---|---|
VT_EMPTY |
イベント データはありません。 |
解説
メディア ソースが MEBufferingStarted イベントを送信する場合は、データのバッファリングを停止したときに MEBufferingStopped イベントを送信する必要があります。 メディア ソースは、MEBufferingStarted イベントごとに一致する MEBufferingStopped イベントを送信する必要があります。 メディア ソースは、ソースの IMFMediaSource::Start メソッドが呼び出される前、またはソースの IMFMediaSource::Stop メソッドが呼び出された後に、これらのイベントを転送しないでください。
Media Foundation ネットワーク ソースからストリーミングする場合は、 MFNETSOURCE_BUFFERPROGRESS_ID 統計に対してクエリを実行することで、バッファリングの進行状況を取得できます。 詳細については、「 MFNETSOURCE_STATISTICS_IDS」を参照してください。
例
HRESULT GetBufferProgress(IMFMediaSession *pSession, DWORD *pProgress)
{
IPropertyStore *pProp = NULL;
PROPVARIANT var;
// Get the property store from the media session.
HRESULT hr = MFGetService(
pSession,
MFNETSOURCE_STATISTICS_SERVICE,
IID_PPV_ARGS(&pProp)
);
if (SUCCEEDED(hr))
{
PROPERTYKEY key;
key.fmtid = MFNETSOURCE_STATISTICS;
key.pid = MFNETSOURCE_BUFFERPROGRESS_ID;
hr = pProp->GetValue(key, &var);
}
if (SUCCEEDED(hr))
{
*pProgress = var.lVal;
}
PropVariantClear(&var);
SafeRelease(&pProp);
return hr;
}
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント |
Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー |
Windows Server 2008 [デスクトップ アプリのみ] |
ヘッダー |
|
関連項目