DirectShow DirectShow 레퍼런스 인터페이스 IMemInputPin Receive [목차열람] [주소복사] [슬롯비우기] |
Microsoft DirectX 9.0 |
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 가 되는 일반적인 이유는 다음과 같다.
참조