|Microsoft DirectX 9.0|
The Receive method receives the next media sample in the stream.
HRESULT Receive( IMediaSample *pSample );
[in] Pointer to the sample's IMediaSample interface.
Returns an HRESULT value. Possible values include those shown in the following table.
|S_FALSE||The sample was rejected.|
|E_POINTER||NULL pointer argument.|
|VFW_E_INVALIDMEDIATYPE||Invalid media type.|
|VFW_E_RUNTIME_ERROR||A run-time error occurred.|
|VFW_E_WRONG_STATE||The pin is stopped.|
This method is synchronous and possibly blocking. The pin does one of the following:
In the last case, the method might block indefinitely. If this might happen, the IMemInputPin::ReceiveCanBlock method returns S_OK.
If the pin uses a worker thread to process the sample, it holds a reference count on the sample. In any case, the output pin cannot directly re-use this sample. It must call the IMemAllocator::GetBuffer method to obtain a new sample.
If this method returns S_FALSE or an error code, the upstream filter should stop sending samples until the graph stops or completes a flush operation. Typical reasons for an S_FALSE return value include: