StormByte C++ Library: Multimedia module 0.0.9999
StormByte-Multimedia is a StormByte library module for parsing configuration files
Loading...
Searching...
No Matches
StormByte::Multimedia::Pipeline::Progress Class Reference

Job clock for one tube. More...

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

Public Types

using Pointer = std::shared_ptr<const Progress>
 User-facing handle.

Public Member Functions

 Progress () noexcept=default
 Empty clock.
 Progress (const Progress &other)=delete
 Copy constructor.
 Progress (Progress &&other) noexcept=delete
 Move constructor.
 ~Progress () noexcept=default
 Destructor.
Progress & operator= (const Progress &other)=delete
 Copy assignment.
Progress & operator= (Progress &&other) noexcept=delete
 Move assignment.
std::optional< double > Measure () const noexcept
 First-pass percent, if the tube mounted 2-pass.
std::optional< double > Analytics () const noexcept
 Dest-look percent, if analytics taps exist.
bool HasMeasure () const noexcept
 Whether this tube mounted a measure pass.
bool HasAnalytics () const noexcept
 Whether this tube mounted analytics taps.
bool MeasureComplete () const noexcept
 Whether the measure pass is finished.
bool AnalyticsComplete () const noexcept
 Whether analytics is finished.
double All () const noexcept
 Combined job percent.
 operator std::string () const noexcept
 One CR-safe line: live axes plus All.

Friends

class Demuxer
class Filters
class Muxer

Detailed Description

Job clock for one tube.

The Demuxer creates one instance and shares it. Filters write analytics, the Muxer writes that the container finished. Transcoder::Progress and Demuxer::Progress return Pointer (shared, const). The user may keep that pointer after the tube dies. There are no public setters.

Public axes are measure (optional 2-pass) and analytics (optional taps). Ordinary Process has no public name; its score only enters All.

All is a weighted sum of the mounted axes. Measure, when present, is 5 percent. Analytics, when present, is 10 percent and runs in parallel with Process. Process/mux takes the rest (100, 95, 90 or 85 percent). Missing axes are not in the mix. 100.00 only when the Muxer finished and every mounted phase is closed. Measure pts come from frames that already ran Measure, not from demux emission.

Member Typedef Documentation

◆ Pointer

User-facing handle.

Const, shared. Not a raw pointer.

Constructor & Destructor Documentation

◆ Progress() [1/3]

StormByte::Multimedia::Pipeline::Progress::Progress ( )
defaultnoexcept

Empty clock.

No measure, no analytics.

◆ Progress() [2/3]

StormByte::Multimedia::Pipeline::Progress::Progress ( const Progress & other)
delete

Copy constructor.

Parameters
otherSource clock.

◆ Progress() [3/3]

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

Move constructor.

Parameters
otherClock to take.

◆ ~Progress()

StormByte::Multimedia::Pipeline::Progress::~Progress ( )
defaultnoexcept

Destructor.

Member Function Documentation

◆ All()

double StormByte::Multimedia::Pipeline::Progress::All ( ) const
noexcept

Combined job percent.

Weighted sum of mounted axes: measure 5 percent if the tube has a 2-pass leaf, analytics 10 percent if dest-look taps exist, Process/mux the remainder. Analytics stays in the sum while measure is live; the status line only hides the analytics label then. All is monotone and stays below 100 until the Muxer finished and every mounted phase is closed.

Returns
0..100.

◆ Analytics()

std::optional< double > StormByte::Multimedia::Pipeline::Progress::Analytics ( ) const
noexcept

Dest-look percent, if analytics taps exist.

Returns
0..100, or empty if there are no taps.

◆ AnalyticsComplete()

bool StormByte::Multimedia::Pipeline::Progress::AnalyticsComplete ( ) const
noexcept

Whether analytics is finished.

Returns
true if there are no taps, or they are idle.

◆ HasAnalytics()

bool StormByte::Multimedia::Pipeline::Progress::HasAnalytics ( ) const
noexcept

Whether this tube mounted analytics taps.

Returns
true after Filters wired a dest look.

◆ HasMeasure()

bool StormByte::Multimedia::Pipeline::Progress::HasMeasure ( ) const
noexcept

Whether this tube mounted a measure pass.

Returns
true after Demuxer::Measure with a non-empty track list.

◆ Measure()

std::optional< double > StormByte::Multimedia::Pipeline::Progress::Measure ( ) const
noexcept

First-pass percent, if the tube mounted 2-pass.

Returns
0..100, or empty if there is no measure pass.

◆ MeasureComplete()

bool StormByte::Multimedia::Pipeline::Progress::MeasureComplete ( ) const
noexcept

Whether the measure pass is finished.

Returns
true if there is no measure pass, or it has closed.

◆ operator std::string()

StormByte::Multimedia::Pipeline::Progress::operator std::string ( ) const
noexcept

One CR-safe line: live axes plus All.

An axis is omitted when it was not mounted or already finished. While measure is live the analytics label is omitted even if taps exist. No newline.

Returns
Single line, no trailing newline.

◆ operator=() [1/2]

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

Copy assignment.

Parameters
otherSource clock.
Returns
*this.

◆ operator=() [2/2]

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

Move assignment.

Parameters
otherClock to take.
Returns
*this.

◆ Demuxer

friend class Demuxer
friend

◆ Filters

friend class Filters
friend

◆ Muxer

friend class Muxer
friend

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