IMFMediaStream::RequestSample 메서드(mfidl.h)

미디어 원본에서 샘플을 요청합니다.

구문

HRESULT RequestSample(
  [in] IUnknown *pToken
);

매개 변수

[in] pToken

요청에 대한 토큰으로 사용되는 개체에 대한 IUnknown 인터페이스에 대한 포인터입니다. 호출자는 이 개체를 구현해야 합니다. 이 매개 변수는 NULL일 수 있습니다. 설명 부분을 참조하세요.

반환 값

이 메서드는 HRESULT를 반환합니다. 가능한 값에는 다음 표에 있는 값이 포함되지만, 이에 국한되는 것은 아닙니다.

반환 코드 Description
S_OK
메서드가 성공했습니다.
MF_E_END_OF_STREAM
스트림의 끝에 도달했습니다.
MF_E_MEDIA_SOURCE_WRONGSTATE
미디어 원본이 중지되었습니다.
MF_E_SHUTDOWN
원본의 Shutdown 메서드가 호출되었습니다.

설명

pTokenNULL이 아닌 경우 미디어 스트림은 pToken에서 AddRef를 호출하고 토큰을 첫 번째 선점 큐에 배치합니다.

다음 샘플을 사용할 수 있는 경우 미디어 스트림 스트림은 다음을 수행합니다.

  1. 큐에서 첫 번째 토큰을 가져옵니다.
  2. 미디어 샘플에서 MFSampleExtension_Token 특성을 설정합니다. 특성 데이터는 토큰 개체에 대한 포인터입니다.
  3. MEMediaSample 이벤트를 보냅니다. 이벤트 데이터는 미디어 샘플의 IMFSample 인터페이스에 대한 포인터입니다.
  4. 토큰에서 Release 를 호출합니다.
미디어 스트림이 샘플에 대한 호출자의 요청을 처리할 수 없는 경우 토큰 개체를 해제하고 2단계와 3단계를 건너뜁니다.

호출자는 요청 토큰에 대한 참조 수를 모니터링해야 합니다. 미디어 스트림이 MEMediaSample 이벤트를 보내는 경우 샘플에서 MFSampleExtension_Token 특성을 가져와서 특성 값을 토큰과 일치합니다. 토큰의 참조 수가 0으로 떨어지고 MEMediaSample 이벤트를 받지 못한 경우 요청이 삭제되었음을 의미합니다.

Media Foundation 파이프라인이 다중 스레드되므로 원본이 중지된 후 원본의 RequestSample 메서드가 호출될 수 있습니다. 미디어 원본이 중지된 경우 메서드는 MF_E_MEDIA_SOURCE_WRONGSTATE 반환해야 합니다. 파이프라인은 이 반환 코드를 오류 조건으로 처리하지 않습니다. 원본이 다른 오류 코드를 반환하는 경우 파이프라인은 심각한 오류로 처리하고 세션을 중지합니다.

참고 이전 버전의 설명서에는 이 사례에 대한 잘못된 오류 코드가 나열되어 있습니다.

 

미디어 원본이 일시 중지되면 메서드가 성공하지만 원본이 다시 시작될 때까지 스트림이 샘플을 배달하지 않습니다.

데이터를 처리하는 동안 미디어 원본에서 오류가 비동기적으로 발생하는 경우 다음 방법 중 하나로 오류를 신호해야 합니다(둘 다 아님).

  • 다음 RequestSample 호출에서 오류 코드를 반환합니다.
  • MEError 이벤트를 보냅니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista [데스크톱 앱 | UWP 앱]
지원되는 최소 서버 Windows Server 2008 [데스크톱 앱 | UWP 앱]
대상 플랫폼 Windows
헤더 mfidl.h
라이브러리 Mfuuid.lib

추가 정보

IMFMediaStream

미디어 원본