CBaseOutputPin class

cbaseoutputpin class hierarchy

The CBaseOutputPin class is an abstract base class that implements an output pin.

This class derives from CBasePin. It differs from CBasePin in the following respects:

  • It connects only to input pins that support the IMemInputPin interface.
  • It supports local memory transport through the IMemAllocator interface.
  • It rejects end-of-stream, flush, and new-segment notifications. (These should not be sent to an output pin.)
  • It provides methods for delivering samples downstream.

When the pin connects, it requests a memory allocator from the input pin. Failing that, it creates a new allocator object. The output pin is responsible for setting the allocator properties. It does this through the pure virtual method CBaseOutputPin::DecideBufferSize. Override this method in your derived class. If the input pin has any buffer requirements, they are passed to the DecideBufferSize method.

Call the CBaseOutputPin::GetDeliveryBuffer method to obtain an empty media sample. Call the CBaseOutputPin::Deliver method to deliver samples downstream.

Your derived class must override the pure virtual CBasePin::CheckMediaType method to validate the media type during pin connections.

Protected Member Variables Description
m_pAllocator Pointer to the memory allocator.
m_pInputPin Pointer to the input pin connected to this pin.
Public Methods Description
CBaseOutputPin Constructor method.
CompleteConnect Completes a connection to an input pin. Virtual.
DecideAllocator Selects a memory allocator. Virtual.
GetDeliveryBuffer Retrieves a media sample that contains an empty buffer. Virtual.
Deliver Delivers a media sample to the connected input pin. Virtual.
InitAllocator Creates a memory allocator. Virtual.
CheckConnect Determines whether a pin connection is suitable.
BreakConnect Releases the pin from a connection.
Active Notifies the pin that the filter is now active.
Inactive Notifies the pin that the filter is no longer active.
DeliverEndOfStream Delivers an end-of-stream notification to the connected input pin.Virtual.
DeliverBeginFlush Requests the connected input pin to begin a flush operation. Virtual.
DeliverEndFlush Requests the connected input pin to end a flush operation. Virtual.
DeliverNewSegment Delivers a new-segment notification to the connected input pin. Virtual.
Pure Virtual Methods Description
DecideBufferSize Sets the buffer requirements.
IPin Methods Description
BeginFlush Begins a flush operation.
EndFlush Ends a flush operation.
EndOfStream Notifies the pin that no additional data is expected.


Requirement Value
Amfilter.h (include Streams.h)
Strmbase.lib (retail builds);
Strmbasd.lib (debug builds)