Шаг 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;
}
Этот метод выполняет следующие действия.
- Вызовы
CPlayer::CloseSession
для закрытия любого предыдущего экземпляра сеанса мультимедиа. - Вызывает MFCreateMediaSession , чтобы создать новый экземпляр сеанса мультимедиа.
- Вызывает метод IMFMediaEventGenerator::BeginGetEvent, чтобы запросить следующее событие из сеанса мультимедиа. Первый параметр BeginGetEvent — это указатель на сам объект CPlayer, который реализует интерфейс IMFAsyncCallback.
Обработка событий описана на шаге 5.
Далее: шаг 5. Обработка событий сеанса мультимедиа
См. также