Schritt 4: Erstellen der Mediensitzung

Dieses Thema ist Schritt 4 des Tutorials Wiedergeben von Mediendateien mit Media Foundation. Der vollständige Code wird im Thema Beispiel für die Mediensitzungswiedergabe gezeigt.

CPlayer::CreateSession erstellt eine neue Instanz der Mediensitzung.

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

Diese Methode führt die folgenden Schritte aus:

  1. Ruft CPlayer::CloseSession zum Schließen einer früheren Instanz der Mediensitzung an.
  2. Ruft MFCreateMediaSession an, um eine neue Instanz der Mediensitzung zu erstellen.
  3. Ruft die Methode IMFMediaEventGenerator::BeginGetEvent an, um das nächste Ereignis aus der Mediensitzung anzufordern. Der erste Parameter auf BeginGetEvent ist ein Zeiger auf das CPlayer-Objekt selbst, das die IMFAsyncCallback-Schnittstelle implementiert.

Die Ereignisverarbeitung wird in Schritt 5 beschrieben.

Nächstes: Schritt 5: Verarbeiten von Mediensitzungsereignissen

Audio-/Videowiedergabe

Wiedergeben von Mediendateien mit Media Foundation