Como controlar estados de apresentação

A Sessão de Mídia fornece controle de transporte, como alterar estados de apresentação (Reproduzir, Pausar e Parar em um cenário de reprodução no estilo playlist). Este tópico descreve os métodos de Sessão de Mídia que um aplicativo deve chamar para alterar o estado de reprodução.

A tabela a seguir mostra as transições de estado de apresentação válidas.

Transição de estado Descrição
Reproduzir –> Pausar O relógio de apresentação congela.
Reproduzir –> Parar O relógio de apresentação é redefinido.
Pausar –> Reproduzir O relógio de apresentação é retomado a partir do momento em que congelou durante a transição Reproduzir para Pausar.
Pausar –> Parar O relógio de apresentação é redefinido.
Parar –> Reproduzir O relógio de apresentação começa desde o início da apresentação.
Parar –> Pausar Não permitido.

 

Para alterar os estados da apresentação

  • Chame o método IMFMediaSession::P ause para pausar a reprodução.

    hr = pMediaSession->Pause();
    

    Antes de chamar esse método, o aplicativo deve chamar o método IMFMediaSession::GetSessionCapabilities para descobrir se a fonte de mídia dá suporte ao estado Pause. Se isso acontecer, esse método retornará MFSESSIONCAP_PAUSE no parâmetro pdwCaps .

    Pausar temporariamente interrompe a Sessão de Mídia, o relógio de apresentação e o coletor de fluxo para a apresentação atual. Depois que a chamada for concluída com êxito, o aplicativo receberá um evento MESessionPaused .

  • Chame o método IMFMediaSession::Stop para interromper a reprodução.

    hr = pMediaSession->Stop();
    

    Esse método interrompe a Sessão de Mídia parando a fonte de mídia, os relógios correspondentes e os coletores de fluxo. Se a Sessão de Mídia estiver controlando a Origem do Sequencer, as fontes nativas subjacentes serão interrompidas pela origem do sequenciador. Depois que a Sessão de Mídia é interrompida, o aplicativo recebe um evento MESessionStopped .

  • Chame o método IMFMediaSession::Start para iniciar a reprodução ou buscar uma nova posição.

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

    Esse método inicia a Sessão de Mídia dos estados Pausar e Parar. A Sessão de Mídia é responsável por configurar o fluxo de dados no pipeline. Esse método instrui a Sessão de Mídia a iniciar o relógio de apresentação. Após essa chamada, a Sessão de Mídia envia um evento MESessionStarted para o aplicativo.

Sessão de Mídia