CBaseOutputPin class

[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.]

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.

Requirements

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