StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
Public Member Functions | Friends | List of all members
StormByte::Multimedia::Pipeline::Remuxer Class Referencefinal

Forwards compressed packets of one origin track to the muxer. More...

#include <StormByte/multimedia/pipeline/remuxer.hxx>

Inheritance diagram for StormByte::Multimedia::Pipeline::Remuxer:
Inheritance graph
[legend]
Collaboration diagram for StormByte::Multimedia::Pipeline::Remuxer:
Collaboration graph
[legend]

Public Member Functions

int In () const noexcept
 Origin stream index.
 
std::size_t InputCeiling () const noexcept override
 Ceiling of the remuxer input hopper.
 
Lifecycle
 Remuxer (std::shared_ptr< StormByte::Logger::Log > log, int in) noexcept
 Remuxer for origin stream in.
 
 Remuxer (const Remuxer &other)=delete
 Copy constructor.
 
 Remuxer (Remuxer &&other) noexcept=delete
 Move constructor.
 
 ~Remuxer () noexcept override
 Destructor.
 
Remuxeroperator= (const Remuxer &other)=delete
 Copy assignment.
 
Remuxeroperator= (Remuxer &&other) noexcept=delete
 Move assignment.
 
- Public Member Functions inherited from StormByte::Multimedia::Pipeline::Step
 Step (const Step &other)=delete
 
 Step (Step &&other) noexcept=delete
 
virtual ~Step () noexcept
 Destructor.
 
Stepoperator= (const Step &other)=delete
 
Stepoperator= (Step &&other) noexcept=delete
 
std::condition_variable & Wake () noexcept
 Consumer condition variable.
 
const std::shared_ptr< class Plan > & Plan () const noexcept
 Bound job intention, if any.
 
const KindsReceives () const noexcept
 Kinds this step consumes.
 
const KindsProduces () const noexcept
 Kinds this step emits.
 
State Status () const noexcept
 Current lifecycle value.
 
virtual bool Ready () const noexcept
 Whether this step can take work.
 
void Stop () noexcept
 Asks the worker to leave and closes all hoppers.
 
bool Failed () const noexcept
 Whether this step has failed.
 
const std::optional< std::string > & Error () const noexcept
 Failure text.
 
void Fail (std::string reason) noexcept
 Marks Failed, closes all hoppers and wakes the worker.
 

Friends

class Backend::Pipeline::Detail::Worker::Remux
 
class Route
 
Remuxeroperator>> (Demuxer &demuxer, Remuxer &remuxer) noexcept
 Binds origin track remuxer.In() from demuxer onto remuxer.
 
Remuxeroperator>> (Remuxer &remuxer, Muxer &muxer) noexcept
 Reserves remuxer as an output track of muxer.
 

Additional Inherited Members

- Protected Member Functions inherited from StormByte::Multimedia::Pipeline::Step
Backend::Pipeline::Pipe & pipe () noexcept
 In / out hoppers of this stage.
 
const Backend::Pipeline::Pipe & pipe () const noexcept
 In / out hoppers of this stage.
 
 Step (std::shared_ptr< StormByte::Logger::Log > log, enum Producer name, Kinds receives, Kinds produces) noexcept
 Step in State::Created.
 
void Emit (Item::PointerType item) noexcept
 Write item to the Pipe (item >> pipe).
 
Item::PointerType CloneItem (const Item &item) const noexcept
 Deep-copies item through Item::Clone.
 
void Wait () noexcept
 Sleeps on Wake until hopper Ready, Failed or Stopping.
 
void Launch () noexcept
 Starts the pumper: Setup, Ready, Pump.
 
void Halt () noexcept
 Stop and join the pumper.
 
bool Stopping () const noexcept
 Worker must return (Stop, Halt or Fail).
 
void RecordWork (std::int64_t microseconds) noexcept
 Adds one Process duration to the step summary.
 
std::int64_t LastWork () const noexcept
 Duration of the last timed Process, or 0.
 
void DumpWork () noexcept
 Writes min/max Process time at Debug.
 
Backend::Pipeline::Host & Face () noexcept
 Owner surface for the Pumper and Worker.
 
void Mount (std::unique_ptr< Backend::Pipeline::Pumper > pumper, std::unique_ptr< Backend::Pipeline::Worker > worker) noexcept
 Takes ownership of pumper and binds worker.
 
- Protected Attributes inherited from StormByte::Multimedia::Pipeline::Step
std::shared_ptr< StormByte::Logger::Log > m_log
 
enum Producer m_name
 UseLog leaf / default Label.
 
Kinds m_receives
 Receives.
 
Kinds m_produces
 Produces.
 

Detailed Description

Forwards compressed packets of one origin track to the muxer.

Notice: origin index at Open. LowLevel forwards always; the shared logger throttles. The packet keeps the lineage born at the demuxer.

Dest-look is Backend::Pipeline::Pipe::CloneTo on the remux Pipe (Filters dest look). There is no side hopper.

Label is Remuxer(<origin codec>) when a Plan is bound and that stream exists, otherwise Remuxer(t=<origin index>).

Constructor & Destructor Documentation

◆ Remuxer() [1/3]

StormByte::Multimedia::Pipeline::Remuxer::Remuxer ( std::shared_ptr< StormByte::Logger::Log >  log,
int  in 
)
explicitnoexcept

Remuxer for origin stream in.

Parameters
logShared logger. Empty pointer means no log.
inOrigin stream index.

◆ Remuxer() [2/3]

StormByte::Multimedia::Pipeline::Remuxer::Remuxer ( const Remuxer other)
delete

Copy constructor.

Parameters
otherSource remuxer.

◆ Remuxer() [3/3]

StormByte::Multimedia::Pipeline::Remuxer::Remuxer ( Remuxer &&  other)
deletenoexcept

Move constructor.

Parameters
otherRemuxer to take.

◆ ~Remuxer()

StormByte::Multimedia::Pipeline::Remuxer::~Remuxer ( )
overridenoexcept

Destructor.

Step::Join Halt s before backends die.

Member Function Documentation

◆ In()

int StormByte::Multimedia::Pipeline::Remuxer::In ( ) const
inlinenoexcept

Origin stream index.

Returns
Index passed to the constructor.

◆ InputCeiling()

std::size_t StormByte::Multimedia::Pipeline::Remuxer::InputCeiling ( ) const
inlineoverridevirtualnoexcept

Ceiling of the remuxer input hopper.

Returns
Max queued packets. Never 0.

Reimplemented from StormByte::Multimedia::Pipeline::Step.

◆ operator=() [1/2]

Remuxer & StormByte::Multimedia::Pipeline::Remuxer::operator= ( const Remuxer other)
delete

Copy assignment.

Parameters
otherSource remuxer.
Returns
*this.

◆ operator=() [2/2]

Remuxer & StormByte::Multimedia::Pipeline::Remuxer::operator= ( Remuxer &&  other)
deletenoexcept

Move assignment.

Parameters
otherRemuxer to take.
Returns
*this.

Friends And Related Symbol Documentation

◆ Backend::Pipeline::Detail::Worker::Remux

friend class Backend::Pipeline::Detail::Worker::Remux
friend

◆ operator>> [1/2]

Remuxer & operator>> ( Demuxer demuxer,
Remuxer remuxer 
)
friend

Binds origin track remuxer.In() from demuxer onto remuxer.

Parameters
demuxerOrigin demuxer.
remuxerDestination remuxer.
Returns
remuxer.

◆ operator>> [2/2]

Remuxer & operator>> ( Remuxer remuxer,
Muxer muxer 
)
friend

Reserves remuxer as an output track of muxer.

Parameters
remuxerLive remuxer.
muxerDestination.
Returns
remuxer.

◆ Route

friend class Route
friend

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