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:
- Chama
CPlayer::CloseSession
para fechar qualquer instância anterior da sessão de mídia. - Chama MFCreateMediaSession para criar uma nova instância da sessão de mídia.
- 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
Tópicos relacionados