4단계: 미디어 세션 만들기
이 항목은 Media Foundation을 사용하여 미디어 파일을 재생하는 방법 자습서의 4단계입니다. 전체 코드는 미디어 세션 재생 예제 항목에 표시됩니다.
미디어 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의 첫 번째 매개 변수는 IMFAsyncCallback 인터페이스를 구현하는 CPlayer 개체 자체에 대한 포인터입니다.
이벤트 처리는 5단계에서 설명합니다.
관련 항목