Поделиться через


Шаг 4. Создание сеанса мультимедиа

В этом разделе описано, как воспроизвести файлы мультимедиа с помощью Media Foundation. Полный код показан в разделе "Пример воспроизведения сеансов мультимедиа".

Создает CPlayer::CreateSession новый экземпляр сеанса мультимедиа.

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

Этот метод выполняет следующие действия.

  1. Вызовы CPlayer::CloseSession для закрытия любого предыдущего экземпляра сеанса мультимедиа.
  2. Вызывает MFCreateMediaSession , чтобы создать новый экземпляр сеанса мультимедиа.
  3. Вызывает метод IMFMediaEventGenerator::BeginGetEvent, чтобы запросить следующее событие из сеанса мультимедиа. Первый параметр BeginGetEvent — это указатель на сам объект CPlayer, который реализует интерфейс IMFAsyncCallback.

Обработка событий описана на шаге 5.

Далее: шаг 5. Обработка событий сеанса мультимедиа

Воспроизведение звука и видео

Воспроизведение файлов мультимедиа с помощью Media Foundation