Condividi tramite


Passaggio 4: Creare la sessione multimediale

Questo argomento è il passaggio 4 dell'esercitazione Come riprodurre file multimediali con Media Foundation. Il codice completo è illustrato nell'argomento Esempio di riproduzione di sessioni multimediali.

Crea CPlayer::CreateSession una nuova istanza della sessione multimediale.

//  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;
}

Questo metodo esegue i passaggi seguenti:

  1. Chiama CPlayer::CloseSession per chiudere qualsiasi istanza precedente della sessione multimediale.
  2. Chiama MFCreateMediaSession per creare una nuova istanza della sessione multimediale.
  3. Chiama il metodo IMFMediaEventGenerator::BeginGetEvent per richiedere l'evento successivo dalla sessione multimediale. Il primo parametro di BeginGetEvent è un puntatore all'oggetto CPlayer stesso, che implementa l'interfaccia IMFAsyncCallback .

La gestione degli eventi è descritta nel passaggio 5.

Passaggio 5: Gestire gli eventi della sessione multimediale

Riproduzione audio/video

Come riprodurre file multimediali con Media Foundation