DirectShow DirectShow 레퍼런스 인터페이스 IMemInputPin Receive   [목차열람] [주소복사] [슬롯비우기]
IMemInputPin::Receive
 
Microsoft DirectX 9.0

IMemInputPin::Receive

Receive 메서드는, 스트림내의 다음의 미디어 샘플을 받는다.

구문

HRESULT Receive(
  IMediaSample *pSample
);

파라미터

pSample

[in] 샘플의 IMediaSample 인터페이스의 포인터.

반환값

HRESULT 값을 돌려준다. 가능한 값은 다음의 일람대로이다.

설명
S_OK 성공.
S_FALSE 샘플은 거부되었다.
E_POINTER NULL 포인터 인수.
VFW_E_INVALIDMEDIATYPE 무효인 미디어 타입.
VFW_E_RUNTIME_ERROR 실행시 에러가 발생했다.
VFW_E_WRONG_STATE 핀은 정지하고 있다.

주의

이 메서드는 동기 하고 있어, 동작이 정지하고 있을 가능성이 있다. 핀은 이하의 1 개를 실시한다.

마지막 케이스에서는, 메서드는 무한하게 동작을 정지할 가능성이 있다. 이 경우,IMemInputPin::ReceiveCanBlock 메서드는 S_OK 를 돌려준다.

핀이 워커 thread를 사용해 샘플을 처리하는 경우, 그 핀은 샘플의 참조 카운트를 보관 유지한다. 어느 케이스에서도 출력 핀은 이 샘플을 직접재 사용할 수 없다. IMemAllocator::GetBuffer 메서드를 호출해 새로운 샘플을 취득해야 한다.

이 메서드가 S_FALSE 또는 에러 코드를 돌려주었을 때는, 업 스트림 필터는 그래프가 정지하는지, 플래시 처리가 완료할 때까지 샘플의 송신을 정지할 필요가 있다. 반환값이 S_FALSE 가 되는 일반적인 이유는 다음과 같다.

참조

↑TOP