IMemInputPin::Receive method (strmif.h)

The Receive method receives the next media sample in the stream.


HRESULT Receive(
  [in] IMediaSample *pSample


[in] pSample

Pointer to the sample's IMediaSample interface.

Return value

Returns an HRESULT value. Possible values include those shown in the following table.

Return code Description
The sample was rejected.
NULL pointer argument.
Invalid media type.
A run-time error occurred.
The pin is stopped.


This method is synchronous and possibly blocking. The pin does one of the following:

  • Rejects the sample.
  • Returns immediately and processes the sample in a worker thread.
  • Processes the sample before returning.
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:

  • The downstream pin is flushing; that is, it received a BeginFlush call and has not yet received an EndFlush call.
  • The downstream filter detected the end of the stream. (See End-of-Stream Notifications.)


Minimum supported client Windows 2000 Professional [desktop apps only]
Minimum supported server Windows 2000 Server [desktop apps only]
Target Platform Windows
Header strmif.h (include Dshow.h)
Library Strmiids.lib

See also

Error and Success Codes

IMemInputPin Interface