Twitch SDK (Internal)
Public Types | Public Member Functions | Private Attributes | List of all members
ttv::broadcast::PassThroughVideoEncoder Class Reference

#include <passthroughvideoencoder.h>

Inheritance diagram for ttv::broadcast::PassThroughVideoEncoder:
ttv::broadcast::IVideoEncoder

Public Types

using AdjustTargetBitRateFunc = std::function< TTV_ErrorCode(uint32_t kbps)>
 

Public Member Functions

 PassThroughVideoEncoder ()
 
virtual ~PassThroughVideoEncoder ()
 
TTV_ErrorCode SetSps (const std::vector< uint8_t > &sps)
 
TTV_ErrorCode SetPps (const std::vector< uint8_t > &pps)
 
TTV_ErrorCode SetAdjustTargetBitRateFunc (AdjustTargetBitRateFunc &&func)
 
virtual std::string GetName () const override
 
virtual bool SupportsBitRateAdjustment () const override
 
virtual TTV_ErrorCode SetFrameWriter (const std::shared_ptr< IFrameWriter > &frameWriter) override
 
virtual TTV_ErrorCode ValidateVideoParams (const VideoParams &videoParams) const override
 
virtual TTV_ErrorCode Initialize () override
 
virtual TTV_ErrorCode Shutdown () override
 
virtual TTV_ErrorCode Start (uint32_t streamIndex, const VideoParams &videoParams) override
 
virtual TTV_ErrorCode SubmitFrame (const std::shared_ptr< VideoFrame > &videoFrame) override
 
virtual TTV_ErrorCode Stop () override
 
virtual TTV_ErrorCode GetSpsPps (std::vector< uint8_t > &sps, std::vector< uint8_t > &pps) override
 
virtual TTV_ErrorCode ValidateFrame (const std::shared_ptr< VideoFrame > &videoframe) override
 
virtual TTV_ErrorCode SetTargetBitRate (uint32_t kbps) override
 
virtual bool SupportsReceiverProtocol (IVideoFrameReceiver::ReceiverTypeId typeId) const override
 
virtual std::shared_ptr< IVideoFrameReceiverGetReceiverImplementation (IVideoFrameReceiver::ReceiverTypeId typeId) override
 
template<typename T >
bool SupportsReceiverProtocol () const
 

Private Attributes

std::shared_ptr< IFrameWritermFrameWriter
 
std::shared_ptr< IPreEncodedVideoFrameReceivermReceiver
 
AdjustTargetBitRateFunc mAdjustTargetBitRateFunc
 
std::vector< uint8_t > mSps
 
std::vector< uint8_t > mPps
 
uint32_t mStreamIndex
 
bool mStarted
 

Member Typedef Documentation

◆ AdjustTargetBitRateFunc

Constructor & Destructor Documentation

◆ PassThroughVideoEncoder()

ttv::broadcast::PassThroughVideoEncoder::PassThroughVideoEncoder ( )

◆ ~PassThroughVideoEncoder()

virtual ttv::broadcast::PassThroughVideoEncoder::~PassThroughVideoEncoder ( )
virtual

Member Function Documentation

◆ GetName()

virtual std::string ttv::broadcast::PassThroughVideoEncoder::GetName ( ) const
overridevirtual

Retrieves the name for logging purposes.

Implements ttv::broadcast::IVideoEncoder.

◆ GetReceiverImplementation()

virtual std::shared_ptr<IVideoFrameReceiver> ttv::broadcast::PassThroughVideoEncoder::GetReceiverImplementation ( IVideoFrameReceiver::ReceiverTypeId  typeId)
overridevirtual

Obtains the receiver for the given protocol. If not implemented, null will be returned.

Implements ttv::broadcast::IVideoEncoder.

◆ GetSpsPps()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::GetSpsPps ( std::vector< uint8_t > &  sps,
std::vector< uint8_t > &  pps 
)
overridevirtual

Called by the system to get the Sps/Pps data from the encoder.

Implements ttv::broadcast::IVideoEncoder.

◆ Initialize()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::Initialize ( )
overridevirtual

Initializes the encoder. The client is responsible for calling this before

Implements ttv::broadcast::IVideoEncoder.

◆ SetAdjustTargetBitRateFunc()

TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::SetAdjustTargetBitRateFunc ( AdjustTargetBitRateFunc &&  func)

◆ SetFrameWriter()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::SetFrameWriter ( const std::shared_ptr< IFrameWriter > &  frameWriter)
overridevirtual

Called by the system before encoding begins.

Implements ttv::broadcast::IVideoEncoder.

◆ SetPps()

TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::SetPps ( const std::vector< uint8_t > &  pps)

◆ SetSps()

TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::SetSps ( const std::vector< uint8_t > &  sps)

◆ SetTargetBitRate()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::SetTargetBitRate ( uint32_t  kbps)
overridevirtual

Sets the desired bitrate in 1000s of bits per second. This will only have an effect if SupportsBitrateAdjustment() returns true. TTV_EC_UNSUPPORTED will be returned if not supported.

Implements ttv::broadcast::IVideoEncoder.

◆ Shutdown()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::Shutdown ( )
overridevirtual

◆ Start()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::Start ( uint32_t  streamIndex,
const VideoParams videoParams 
)
overridevirtual

◆ Stop()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::Stop ( )
overridevirtual

Called by the system when the stream is stopping.

Implements ttv::broadcast::IVideoEncoder.

◆ SubmitFrame()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::SubmitFrame ( const std::shared_ptr< VideoFrame > &  videoFrame)
overridevirtual

This will be called periodically to kick off an encode of a frame. This should not block to encode the frame synchronously.

Implements ttv::broadcast::IVideoEncoder.

◆ SupportsBitRateAdjustment()

virtual bool ttv::broadcast::PassThroughVideoEncoder::SupportsBitRateAdjustment ( ) const
overridevirtual

Determines whether or not the encoder supports changing the target bitrate on the fly.

Implements ttv::broadcast::IVideoEncoder.

◆ SupportsReceiverProtocol() [1/2]

virtual bool ttv::broadcast::PassThroughVideoEncoder::SupportsReceiverProtocol ( IVideoFrameReceiver::ReceiverTypeId  typeId) const
overridevirtual

Determines if the concrete implementation supports the given protocol.

Implements ttv::broadcast::IVideoEncoder.

◆ SupportsReceiverProtocol() [2/2]

template<typename T >
bool ttv::broadcast::IVideoEncoder::SupportsReceiverProtocol ( ) const
inlineinherited

Determines if the concrete implementation supports the given protocol. The template parameter must be known to derive from IVideoFrameReceiver.

◆ ValidateFrame()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::ValidateFrame ( const std::shared_ptr< VideoFrame > &  videoframe)
overridevirtual

Called by the system to validate each frame as it is processed.

Implements ttv::broadcast::IVideoEncoder.

◆ ValidateVideoParams()

virtual TTV_ErrorCode ttv::broadcast::PassThroughVideoEncoder::ValidateVideoParams ( const VideoParams videoParams) const
overridevirtual

Member Data Documentation

◆ mAdjustTargetBitRateFunc

AdjustTargetBitRateFunc ttv::broadcast::PassThroughVideoEncoder::mAdjustTargetBitRateFunc
private

◆ mFrameWriter

std::shared_ptr<IFrameWriter> ttv::broadcast::PassThroughVideoEncoder::mFrameWriter
private

◆ mPps

std::vector<uint8_t> ttv::broadcast::PassThroughVideoEncoder::mPps
private

◆ mReceiver

std::shared_ptr<IPreEncodedVideoFrameReceiver> ttv::broadcast::PassThroughVideoEncoder::mReceiver
private

◆ mSps

std::vector<uint8_t> ttv::broadcast::PassThroughVideoEncoder::mSps
private

◆ mStarted

bool ttv::broadcast::PassThroughVideoEncoder::mStarted
private

◆ mStreamIndex

uint32_t ttv::broadcast::PassThroughVideoEncoder::mStreamIndex
private

The documentation for this class was generated from the following file: