Share via


MEBufferingStarted 事件

表示媒體來源已開始緩衝處理資料。

如果來源在媒體會話執行時緩衝資料,媒體來源可以傳送此事件。 當媒體會話收到此事件時,它會暫停簡報時鐘,直到媒體來源傳送 MEBufferingStopped 事件為止。 媒體會話也會將 MEBufferingStarted 事件轉送至應用程式。

實作 IMFByteStreamBuffering 介面的位元組資料流程也會傳送此事件。

事件值

IMFMediaEvent::GetValue 擷取的可能值包括下列專案。

VARTYPE 描述
VT_EMPTY
沒有事件資料。

備註

如果媒體來源傳送 MEBufferingStarted 事件,它必須在停止緩衝處理資料時傳送 MEBufferingStopped 事件。 媒體來源必須針對每個 MEBufferingStarted 事件傳送相符的 MEBufferingStopped 事件。 在呼叫來源 的 IMFMediaSource::Start 方法之前,或呼叫來源 的 IMFMediaSource::Stop 方法之後,媒體來源不應該轉送這些事件。

如果您要從媒體基礎網路來源進行串流,您可以查詢 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 [僅限傳統型應用程式]
標頭
Mfobjects.h (包含 Mfidl.h)

另請參閱

媒體基礎事件

媒體基礎中的網路功能