Partager via


Événement MEBufferingStarted

Signale qu’une source multimédia a commencé à mettre en mémoire tampon les données.

Une source multimédia peut envoyer cet événement si la source met en mémoire tampon des données pendant l’exécution de la session multimédia. Lorsque la session multimédia reçoit cet événement, elle suspend l’horloge de présentation jusqu’à ce que la source multimédia envoie l’événement MEBufferingStopped . La session multimédia transfère également l’événement MEBufferingStarted à l’application.

Les flux d’octets qui implémentent l’interface IMFByteStreamBuffering envoient également cet événement.

Valeurs d’événement

Les valeurs possibles récupérées à partir d’IMFMediaEvent::GetValue sont les suivantes.

VARTYPE Description
VT_EMPTY
Aucune donnée d'événement.

Notes

Si une source multimédia envoie l’événement MEBufferingStarted, elle doit envoyer l’événement MEBufferingStopped lorsqu’elle arrête la mise en mémoire tampon des données. La source multimédia doit envoyer un événement MEBufferingStopped correspondant pour chaque événement MEBufferingStarted. La source multimédia ne doit pas transférer ces événements avant l’appel de la méthode IMFMediaSource::Start de la source ou après l’appel de la méthode IMFMediaSource::Stop de la source.

Si vous diffusez en continu à partir de la source réseau Media Foundation, vous pouvez obtenir la progression de la mise en mémoire tampon en interrogeant la statistique MFNETSOURCE_BUFFERPROGRESS_ID . Pour plus d’informations, consultez MFNETSOURCE_STATISTICS_IDS.

Exemples

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

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge
Windows Server 2008 [applications de bureau uniquement]
En-tête
Mfobjects.h (inclure Mfidl.h)

Voir aussi

Événements Media Foundation

Mise en réseau dans Media Foundation