프레젠테이션 상태를 제어하는 방법

미디어 세션은 프레젠테이션 상태 변경(재생 목록 스타일의 재생 시나리오에서 재생, 일시 중지 및 중지)과 같은 전송 제어를 제공합니다. 이 항목에서는 애플리케이션이 재생 상태를 변경하기 위해 호출해야 하는 미디어 세션 메서드에 대해 설명합니다.

다음 표에서는 유효한 프레젠테이션 상태 전환을 보여 줍니다.

상태 전환 Description
재생 -> 일시 중지 프레젠테이션 시계가 중지됩니다.
재생 -> 중지 프레젠테이션 시계가 다시 설정됩니다.
일시 중지 -> 재생 프레젠테이션 시계는 재생에서 일시 중지로 전환하는 동안 중지된 시간부터 다시 시작됩니다.
일시 중지 -> 중지 프레젠테이션 시계가 다시 설정됩니다.
중지 -> 재생 프레젠테이션 시계는 프레젠테이션 시작부터 시작됩니다.
중지 -> 일시 중지 허용되지 않습니다.

 

프레젠테이션 상태를 변경하려면

  • IMFMediaSession::P ause 메서드를 호출하여 재생을 일시 중지합니다.

    hr = pMediaSession->Pause();
    

    이 메서드를 호출하기 전에 애플리케이션은 IMFMediaSession::GetSessionCapabilities 메서드를 호출하여 미디어 원본이 일시 중지 상태를 지원하는지 여부를 검색해야 합니다. 이 경우 이 메서드는 pdwCaps 매개 변수의 MFSESSIONCAP_PAUSE 반환합니다.

    일시 중지하면 미디어 세션, 프레젠테이션 시계 및 현재 프레젠테이션의 스트림 싱크가 일시적으로 중지됩니다. 호출이 성공적으로 완료되면 애플리케이션은 MESessionPaused 이벤트를 받습니다.

  • IMFMediaSession::Stop 메서드를 호출하여 재생을 중지합니다.

    hr = pMediaSession->Stop();
    

    이 메서드는 미디어 원본, 해당 클록 및 스트림 싱크를 중지하여 미디어 세션을 중지합니다. 미디어 세션이 Sequencer 원본을 제어하는 경우 기본 네이티브 원본은 시퀀서 원본에 의해 중지됩니다. 미디어 세션이 중지된 후 애플리케이션은 MESessionStopped 이벤트를 받습니다.

  • IMFMediaSession::Start 메서드를 호출하여 재생을 시작하거나 새 위치를 찾습니다.

    hr = pMediaSession->Start(NULL, &var);
    

    이 메서드는 일시 중지 및 중지 상태에서 미디어 세션을 시작합니다. 미디어 세션은 파이프라인에서 데이터 흐름을 설정하는 역할을 담당합니다. 이 메서드는 미디어 세션에 프레젠테이션 시계를 시작하도록 지시합니다. 이 호출 후 미디어 세션은 MESessionStarted 이벤트를 애플리케이션에 보냅니다.

미디어 세션