MEBufferingStarted event
Signals that a media source has started to buffer data.
A media source can send this event if the source buffers data while the Media Session is running. When the Media Session receives this event, it pauses the presentation clock until the media source sends the MEBufferingStopped event. The Media Session also forwards the MEBufferingStarted event to the application.
Byte streams that implement the IMFByteStreamBuffering interface also send this event.
Event values
Possible values retrieved from IMFMediaEvent::GetValue include the following.
VARTYPE | Description |
---|---|
VT_EMPTY |
No event data. |
Remarks
If a media source sends the MEBufferingStarted event, it must send the MEBufferingStopped event when it stops buffering data. The media source must send a matching MEBufferingStopped event for every MEBufferingStarted event. The media source should not forward these events before the source's IMFMediaSource::Start method is called, or after the source's IMFMediaSource::Stop method is called.
If you are streaming from the Media Foundation network source, you can get the buffering progress by querying the MFNETSOURCE_BUFFERPROGRESS_ID statistic. For more information, see MFNETSOURCE_STATISTICS_IDS.
Examples
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;
}
Requirements
Requirement | Value |
---|---|
Minimum supported client |
Windows Vista [desktop apps only] |
Minimum supported server |
Windows Server 2008 [desktop apps only] |
Header |
|
See also