다음을 통해 공유


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 [데스크톱 앱만 해당]
헤더
Mfobjects.h(Mfidl.h 포함)

추가 정보

Media Foundation 이벤트

Media Foundation의 네트워킹