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 [데스크톱 앱만 해당] |
헤더 |
|
추가 정보