Etapa 4: Criar a sessão de mídia

Este tópico é a etapa 4 do tutorial Como reproduzir arquivos de mídia com o Media Foundation. O código completo é mostrado no tópico Exemplo de reprodução de sessão de mídia.

O CPlayer::CreateSession cria uma nova instância da sessão de mídia.

//  Create a new instance of the media session.
HRESULT CPlayer::CreateSession()
{
    // Close the old session, if any.
    HRESULT hr = CloseSession();
    if (FAILED(hr))
    {
        goto done;
    }

    assert(m_state == Closed);

    // Create the media session.
    hr = MFCreateMediaSession(NULL, &m_pSession);
    if (FAILED(hr))
    {
        goto done;
    }

    // Start pulling events from the media session
    hr = m_pSession->BeginGetEvent((IMFAsyncCallback*)this, NULL);
    if (FAILED(hr))
    {
        goto done;
    }

    m_state = Ready;

done:
    return hr;
}

Esse método executa as seguintes etapas:

  1. Chama CPlayer::CloseSession para fechar qualquer instância anterior da sessão de mídia.
  2. Chama MFCreateMediaSession para criar uma nova instância da sessão de mídia.
  3. Chama o método IMFMediaEventGenerator::BeginGetEvent para solicitar o próximo evento da sessão de mídia. O primeiro parâmetro para BeginGetEvent é um ponteiro para o próprio objeto CPlayer, que implementa a interface IMFAsyncCallback.

A manipulação de eventos é descrita na etapa 5.

Próximo: Etapa 5: Manipular eventos de sessão de mídia

Reprodução de áudio/vídeo

Como reproduzir arquivos de mídia com o Media Foundation