Condividi tramite


MEBufferingStarted, evento

Segnala che un'origine multimediale ha iniziato a memorizzare nel buffer i dati.

Un'origine multimediale può inviare questo evento se i dati di origine vengono memorizzati nel buffer durante l'esecuzione della sessione multimediale. Quando la sessione multimediale riceve questo evento, sospende l'orologio della presentazione fino a quando l'origine multimediale invia l'evento MEBufferingStopped . La sessione multimediale inoltra anche l'evento MEBufferingStarted all'applicazione.

I flussi di byte che implementano l'interfaccia IMFByteStreamBuffering inviano anche questo evento.

Valori dell'evento

I valori possibili recuperati da IMFMediaEvent::GetValue includono quanto segue.

VARTYPE Descrizione
VT_EMPTY
Nessun dato dell'evento.

Commenti

Se un'origine multimediale invia l'evento MEBufferingStarted, deve inviare l'evento MEBufferingStopped quando arresta il buffer dei dati. L'origine multimediale deve inviare un evento MEBufferingStopped corrispondente per ogni evento MEBufferingStarted. L'origine multimediale non deve inoltrare questi eventi prima che venga chiamato il metodo IMFMediaSource::Start dell'origine o dopo la chiamata del metodo IMFMediaSource::Stop dell'origine.

Se si esegue lo streaming dall'origine di rete di Media Foundation, è possibile ottenere lo stato di avanzamento del buffer eseguendo una query sulla statistica MFNETSOURCE_BUFFERPROGRESS_ID . Per altre informazioni, vedere MFNETSOURCE_STATISTICS_IDS.

Esempio

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;
}

Requisiti

Requisito Valore
Client minimo supportato
Windows Vista [solo app desktop]
Server minimo supportato
Windows Server 2008 [solo app desktop]
Intestazione
Mfobjects.h (include Mfidl.h)

Vedi anche

Eventi di Media Foundation

Rete in Media Foundation