CRenderedInputPin.EndOfStream method
[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]
The EndOfStream
method notifies the pin that no additional data is expected, until a new run command is issued to the filter. This method implements the IPin::EndOfStream method.
Syntax
HRESULT EndOfStream();
Parameters
This method has no parameters.
Return value
Returns S_OK if successful, or an error code otherwise.
Remarks
If the filter is running, this method sends an EC_COMPLETE event to the Filter Graph Manager. Otherwise, is sets a flag so that the EC_COMPLETE event is sent when the filter next runs. Flushing the filter clears the flag.
You should override this method to hold the pin's streaming lock:
class CMyInputPin : public CRenderedInputPin
{
private:
CCritSec * const m_pReceiveLock; // Streaming lock.
public:
STDMETHODIMP EndOfStream(void);
/* (Remainder of the class declaration not shown.) */
};
STDMETHODIMP CMyInputPin::EndOfStream(void)
{
CAutoLock lock(m_pReceiveLock);
return CRenderedInputPin::EndOfStream();
}
Also, if the filter processes Receive calls asynchronously, the pin should wait to send the EC_COMPLETE event until the filter has processed all pending samples.
Requirements
Requirement | Value |
---|---|
Header |
|
Library |
|