TSDuck v3.38-3699
MPEG Transport Stream Toolkit
Loading...
Searching...
No Matches
ts::TSP Class Referenceabstract

TSP callback for plugins. More...

#include <tsTSP.h>

Inheritance diagram for ts::TSP:
Collaboration diagram for ts::TSP:

Public Member Functions

virtual ~TSP () override
 Virtual desctructor.
 
virtual bool aborting () const override
 Check for aborting application.
 
BitRate bitrate () const
 Get the current input bitrate in bits/seconds.
 
BitRateConfidence bitrateConfidence () const
 Get the plugin bitrate confidence.
 
bool debug () const
 Check if debugging is active.
 
template<class... Args>
void debug (const UChar *fmt, Args &&... args)
 Report a debug message with a printf-like interface.
 
void debug (const UChar *msg)
 Report a debug message.
 
template<class... Args>
void debug (const UString &fmt, Args &&... args)
 Report a debug message with a printf-like interface.
 
void debug (const UString &msg)
 Report a debug message.
 
ReportdelegateReport (Report *report)
 Delegate message logging to another report object.
 
template<class... Args>
void error (const UChar *fmt, Args &&... args)
 Report an error message with a printf-like interface.
 
void error (const UChar *msg)
 Report an error message.
 
template<class... Args>
void error (const UString &fmt, Args &&... args)
 Report an error message with a printf-like interface.
 
void error (const UString &msg)
 Report an error message.
 
template<class... Args>
void fatal (const UChar *fmt, Args &&... args)
 Report a fatal error message with a printf-like interface.
 
void fatal (const UChar *msg)
 Report a fatal error message.
 
template<class... Args>
void fatal (const UString &fmt, Args &&... args)
 Report a fatal error message with a printf-like interface.
 
void fatal (const UString &msg)
 Report a fatal error message.
 
bool gotErrors () const
 Check if errors (or worse) were reported through this object.
 
template<class... Args>
void info (const UChar *fmt, Args &&... args)
 Report an informational message with a printf-like interface.
 
void info (const UChar *msg)
 Report an informational message.
 
template<class... Args>
void info (const UString &fmt, Args &&... args)
 Report an informational message with a printf-like interface.
 
void info (const UString &msg)
 Report an informational message.
 
virtual void jointTerminate ()=0
 Signaling "joint termination".
 
template<class... Args>
void log (int severity, const UChar *fmt, Args &&... args)
 Report a message with an explicit severity and a printf-like interface.
 
template<class... Args>
void log (int severity, const UString &fmt, Args &&... args)
 Report a message with an explicit severity and a printf-like interface.
 
void log (int severity, const UString &msg)
 Report a message with an explicit severity.
 
int maxSeverity () const
 Get maximum severity level.
 
virtual Pluginplugin () const =0
 Access the shared library through the plugin interface.
 
virtual size_t pluginCount () const =0
 Get the number of plugins in the processing chain.
 
virtual size_t pluginIndex () const =0
 Get the plugin index in the processing chain.
 
virtual UString pluginName () const =0
 Get the plugin name.
 
PacketCounter pluginPackets () const
 Get total number of packets previously processed in the plugin object.
 
void raiseMaxSeverity (int level, bool delegated=false)
 Raise maximum severity level.
 
bool realtime () const
 Check if the current plugin environment should use defaults for real-time.
 
UString reportPrefix () const
 Get the current prefix to display.
 
void resetErrors ()
 Reset the error indicator.
 
void setMaxSeverity (int level, bool delegated=false)
 Set maximum severity level.
 
void setPacketTimeout (cn::milliseconds timeout)
 Set a timeout for the reception of packets by the current plugin.
 
void setReportPrefix (const UString &prefix)
 Set the prefix to display before each message.
 
template<class... Args>
void severe (const UChar *fmt, Args &&... args)
 Report a severe error message with a printf-like interface.
 
void severe (const UChar *msg)
 Report a severe error message.
 
template<class... Args>
void severe (const UString &fmt, Args &&... args)
 Report a severe error message with a printf-like interface.
 
void severe (const UString &msg)
 Report a severe error message.
 
virtual void signalPluginEvent (uint32_t event_code, Object *plugin_data=nullptr) const =0
 Signal a plugin event.
 
virtual bool thisJointTerminated () const =0
 Check if the calling plugin has already declared "joint termination".
 
PacketCounter totalPacketsInThread () const
 Get total number of packets in the execution of the plugin thread.
 
virtual bool useJointTermination () const =0
 Check if the calling plugin uses "joint termination".
 
virtual void useJointTermination (bool on)=0
 Activates or deactivates "joint termination".
 
bool verbose () const
 Check if verbose reporting is active.
 
template<class... Args>
void verbose (const UChar *fmt, Args &&... args)
 Report a verbose message with a printf-like interface.
 
void verbose (const UChar *msg)
 Report a verbose message.
 
template<class... Args>
void verbose (const UString &fmt, Args &&... args)
 Report a verbose message with a printf-like interface.
 
void verbose (const UString &msg)
 Report a verbose message.
 
template<class... Args>
void warning (const UChar *fmt, Args &&... args)
 Report a warning message with a printf-like interface.
 
void warning (const UChar *msg)
 Report a warning error message.
 
template<class... Args>
void warning (const UString &fmt, Args &&... args)
 Report a warning message with a printf-like interface.
 
void warning (const UString &msg)
 Report a warning error message.
 

Protected Member Functions

 TSP (int max_severity, const UString &prefix=UString(), Report *report=nullptr)
 Constructor for subclasses.
 
void addNonPluginPackets (size_t incr)
 Account for more processed packets in this plugin thread, but excluded from plugin object.
 
void addPluginPackets (size_t incr)
 Account for more processed packets in this plugin object.
 
void restartPluginSession ()
 Restart accounting for plugin session.
 
virtual void writeLog (int severity, const UString &msg)
 Actual message reporting method.
 

Protected Attributes

volatile bool _tsp_aborting = false
 TSP is currently aborting.
 
BitRate _tsp_bitrate = 0
 TSP input bitrate.
 
BitRateConfidence _tsp_bitrate_confidence = BitRateConfidence::LOW
 TSP input bitrate confidence.
 
cn::milliseconds _tsp_timeout = cn::milliseconds(-1)
 Timeout when waiting for packets, infinite if negative.
 
bool _use_realtime = false
 The plugin should use realtime defaults.
 

Detailed Description

TSP callback for plugins.

Each plugin has an associated TSP object to communicate with the Transport Stream Processor main executable.

Message output

A shared library must exclusively use the tsp object for text display and must never use std::cout, printf or alike. When called in multi-threaded context, the supplied tsp object is thread-safe and asynchronous (the methods return to the caller without waiting for the message to be printed).

"Joint termination" support

A plugin can decide to terminate tsp on its own (returning end of input, output error or ts::ProcessorPlugin::TSP_END). The termination is unconditional, regardless of the state of the other plugins.

The idea behind "joint termination" is to terminate tsp when several plugins have jointly terminated their processing.

First, a plugin must decide to use "joint termination". This is usually done in method start(), using useJointTermination (bool) when the option --joint-termination is specified on the command line.

When the plugin has completed its work, it reports this using jointTerminate().

Constructor & Destructor Documentation

◆ TSP()

ts::TSP::TSP ( int  max_severity,
const UString prefix = UString(),
Report report = nullptr 
)
protected

Constructor for subclasses.

Parameters
[in]max_severityInitial maximum severity of reported messages.
[in]prefixThe prefix to prepend to all messages.
[in]reportNew report object to which messages are delegated.

Member Function Documentation

◆ bitrate()

BitRate ts::TSP::bitrate ( ) const
inline

Get the current input bitrate in bits/seconds.

Returns
The current input bitrate in bits/seconds or zero if unknown.

◆ bitrateConfidence()

BitRateConfidence ts::TSP::bitrateConfidence ( ) const
inline

Get the plugin bitrate confidence.

Returns
The level of confidence of the bitrate value as returned by the previous call to bitrate().

◆ plugin()

virtual Plugin * ts::TSP::plugin ( ) const
pure virtual

Access the shared library through the plugin interface.

Returns
Address of the plugin interface.

Implemented in ts::PluginThread.

◆ pluginName()

virtual UString ts::TSP::pluginName ( ) const
pure virtual

Get the plugin name.

Returns
The plugin name. This is typically the name which is used in the commmand line.

Implemented in ts::PluginThread.

◆ pluginIndex()

virtual size_t ts::TSP::pluginIndex ( ) const
pure virtual

Get the plugin index in the processing chain.

Returns
The plugin index. For a TS processor, this is typically 0 for the input plugin and the number of plugins minus one for the output plugin. For an input switcher, this is in input index for input plugins and the number of plugins minus one for the output plugin.

◆ pluginCount()

virtual size_t ts::TSP::pluginCount ( ) const
pure virtual

Get the number of plugins in the processing chain.

Returns
The number of plugins in the processing chain.

◆ pluginPackets()

PacketCounter ts::TSP::pluginPackets ( ) const
inline

Get total number of packets previously processed in the plugin object.

For input and output plugins, this is the number of successfully read or written packets. For processor plugins, this is the number of packets which were submitted to the plugin object (ie. excluding previously dropped packets but including packets which were dropped by the current plugin).

Returns
The total number of packets in this plugin object.

◆ totalPacketsInThread()

PacketCounter ts::TSP::totalPacketsInThread ( ) const
inline

Get total number of packets in the execution of the plugin thread.

This includes the number of extra stuffing or dropped packets.

Returns
The total number of packets in this plugin thread.

◆ realtime()

bool ts::TSP::realtime ( ) const
inline

Check if the current plugin environment should use defaults for real-time.

Returns
True if the current plugin environment should use defaults for real-time.

◆ setPacketTimeout()

void ts::TSP::setPacketTimeout ( cn::milliseconds  timeout)
inline

Set a timeout for the reception of packets by the current plugin.

For input plugins, this is the timeout for the availability of free space in input buffer.

When the timeout is triggered, the method handlePacketTimeout() is invoked in the plugin. If the method returns true, the application continues waiting for packets. If the method returns false, the plugin is aborted.

Parameters
[in]timeoutMaximum number of milliseconds to wait for packets in the buffer. Infinite timeout when negative. The default timeout is infinite.

◆ aborting()

virtual bool ts::TSP::aborting ( ) const
overridevirtual

Check for aborting application.

The plugin may invoke this method to check if the application is aborting for some reason (user interrupt for instance).

Returns
True if the tsp application is currently aborting.

Implements ts::AbortInterface.

◆ signalPluginEvent()

virtual void ts::TSP::signalPluginEvent ( uint32_t  event_code,
Object plugin_data = nullptr 
) const
pure virtual

Signal a plugin event.

If the application has registered plugin events for this kind of events, they will be invoked.

Parameters
[in]event_codeA plugin-defined 32-bit code describing the event type. There is no predefined list of event codes. Plugin should define their own codes.
[in]plugin_dataAddress of optional plugin-specific data. It can be a null pointer. Each plugin may defined subclasses of Object to pass specific data to application handlers which are aware of this plugin.

◆ useJointTermination() [1/2]

virtual void ts::TSP::useJointTermination ( bool  on)
pure virtual

Activates or deactivates "joint termination".

This method activates or deactivates "joint termination" for the calling plugin. It should be invoked during the plugin's start().

Parameters
[in]onTrue to activate or false to deactivate joint termination.

◆ jointTerminate()

virtual void ts::TSP::jointTerminate ( )
pure virtual

Signaling "joint termination".

This method is used by the plugin to declare that its execution is potentially terminated in the context of "joint termination". After invoking this method, any packet which is processed by the plugin may be ignored by tsp.

◆ useJointTermination() [2/2]

virtual bool ts::TSP::useJointTermination ( ) const
pure virtual

Check if the calling plugin uses "joint termination".

Returns
True if the calling plugin uses "joint termination".

◆ thisJointTerminated()

virtual bool ts::TSP::thisJointTerminated ( ) const
pure virtual

Check if the calling plugin has already declared "joint termination".

Returns
True if the calling plugin has already declared "joint termination".

◆ addPluginPackets()

void ts::TSP::addPluginPackets ( size_t  incr)
inlineprotected

Account for more processed packets in this plugin object.

Parameters
[in]incrAdd this number of processed packets in the plugin object.

◆ addNonPluginPackets()

void ts::TSP::addNonPluginPackets ( size_t  incr)
inlineprotected

Account for more processed packets in this plugin thread, but excluded from plugin object.

Parameters
[in]incrAdd this number of processed packets in the plugin thread.

◆ restartPluginSession()

void ts::TSP::restartPluginSession ( )
inlineprotected

Restart accounting for plugin session.

Typically invoked when the plugin is restarted.

◆ setMaxSeverity()

void ts::Report::setMaxSeverity ( int  level,
bool  delegated = false 
)
inherited

Set maximum severity level.

Messages with higher severities are not reported.

Parameters
[in]levelSet report to that level.
[in]delegatedPropagate the severity to delegated reports.

◆ raiseMaxSeverity()

void ts::Report::raiseMaxSeverity ( int  level,
bool  delegated = false 
)
inherited

Raise maximum severity level.

The severity can only be increased (more verbose, more debug), never decreased.

Parameters
[in]levelSet report at least to that level.
[in]delegatedPropagate the severity to delegated reports.

◆ maxSeverity()

int ts::Report::maxSeverity ( ) const
inlineinherited

Get maximum severity level.

Returns
Current maximum debug level.

◆ gotErrors()

bool ts::Report::gotErrors ( ) const
inlineinherited

Check if errors (or worse) were reported through this object.

Errors which were reported through delegated reports are ignored.

Returns
True if errors (or worse) were reported through this object.

◆ resetErrors()

void ts::Report::resetErrors ( )
inlineinherited

Reset the error indicator.

See also
gotErrors()

◆ setReportPrefix()

void ts::Report::setReportPrefix ( const UString prefix)
inlineinherited

Set the prefix to display before each message.

Parameters
[in]prefixThe prefix to prepend to all messages.

◆ reportPrefix()

UString ts::Report::reportPrefix ( ) const
inlineinherited

Get the current prefix to display.

Returns
The current prefix to display.

◆ delegateReport()

Report * ts::Report::delegateReport ( Report report)
inherited

Delegate message logging to another report object.

Parameters
[in]reportNew report object to which messages are delegated. Use nullptr to remove the delegation and return to normal logging.
Returns
Previous delegate report, return a null pointer if there was no previous delegate.

◆ debug() [1/5]

bool ts::Report::debug ( ) const
inlineinherited

Check if debugging is active.

Returns
True if current reporting level is Debug or higher.

◆ debug() [2/5]

void ts::Report::debug ( const UChar msg)
inlineinherited

Report a debug message.

Parameters
[in]msgMessage line.

◆ debug() [3/5]

void ts::Report::debug ( const UString msg)
inlineinherited

Report a debug message.

Parameters
[in]msgMessage line.

◆ debug() [4/5]

template<class... Args>
void ts::Report::debug ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report a debug message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ debug() [5/5]

template<class... Args>
void ts::Report::debug ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report a debug message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ verbose() [1/5]

bool ts::Report::verbose ( ) const
inlineinherited

Check if verbose reporting is active.

Returns
True if current reporting level is Verbose or higher.

◆ verbose() [2/5]

void ts::Report::verbose ( const UChar msg)
inlineinherited

Report a verbose message.

Parameters
[in]msgMessage line.

◆ verbose() [3/5]

void ts::Report::verbose ( const UString msg)
inlineinherited

Report a verbose message.

Parameters
[in]msgMessage line.

◆ verbose() [4/5]

template<class... Args>
void ts::Report::verbose ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report a verbose message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ verbose() [5/5]

template<class... Args>
void ts::Report::verbose ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report a verbose message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ log() [1/3]

void ts::Report::log ( int  severity,
const UString msg 
)
inherited

Report a message with an explicit severity.

Parameters
[in]severityMessage severity.
[in]msgMessage line.

◆ log() [2/3]

template<class... Args>
void ts::Report::log ( int  severity,
const UChar fmt,
Args &&...  args 
)
inlineinherited

Report a message with an explicit severity and a printf-like interface.

Parameters
[in]severityMessage severity.
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ log() [3/3]

template<class... Args>
void ts::Report::log ( int  severity,
const UString fmt,
Args &&...  args 
)
inlineinherited

Report a message with an explicit severity and a printf-like interface.

Parameters
[in]severityMessage severity.
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ fatal() [1/4]

void ts::Report::fatal ( const UChar msg)
inlineinherited

Report a fatal error message.

Parameters
[in]msgMessage line.

◆ fatal() [2/4]

void ts::Report::fatal ( const UString msg)
inlineinherited

Report a fatal error message.

Parameters
[in]msgMessage line.

◆ fatal() [3/4]

template<class... Args>
void ts::Report::fatal ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report a fatal error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ fatal() [4/4]

template<class... Args>
void ts::Report::fatal ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report a fatal error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ severe() [1/4]

void ts::Report::severe ( const UChar msg)
inlineinherited

Report a severe error message.

Parameters
[in]msgMessage line.

◆ severe() [2/4]

void ts::Report::severe ( const UString msg)
inlineinherited

Report a severe error message.

Parameters
[in]msgMessage line.

◆ severe() [3/4]

template<class... Args>
void ts::Report::severe ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report a severe error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ severe() [4/4]

template<class... Args>
void ts::Report::severe ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report a severe error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ error() [1/4]

void ts::Report::error ( const UChar msg)
inlineinherited

Report an error message.

Parameters
[in]msgMessage line.

◆ error() [2/4]

void ts::Report::error ( const UString msg)
inlineinherited

Report an error message.

Parameters
[in]msgMessage line.

◆ error() [3/4]

template<class... Args>
void ts::Report::error ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report an error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ error() [4/4]

template<class... Args>
void ts::Report::error ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report an error message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ warning() [1/4]

void ts::Report::warning ( const UChar msg)
inlineinherited

Report a warning error message.

Parameters
[in]msgMessage line.

◆ warning() [2/4]

void ts::Report::warning ( const UString msg)
inlineinherited

Report a warning error message.

Parameters
[in]msgMessage line.

◆ warning() [3/4]

template<class... Args>
void ts::Report::warning ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report a warning message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ warning() [4/4]

template<class... Args>
void ts::Report::warning ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report a warning message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ info() [1/4]

void ts::Report::info ( const UChar msg)
inlineinherited

Report an informational message.

Parameters
[in]msgMessage line.

◆ info() [2/4]

void ts::Report::info ( const UString msg)
inlineinherited

Report an informational message.

Parameters
[in]msgMessage line.

◆ info() [3/4]

template<class... Args>
void ts::Report::info ( const UChar fmt,
Args &&...  args 
)
inlineinherited

Report an informational message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ info() [4/4]

template<class... Args>
void ts::Report::info ( const UString fmt,
Args &&...  args 
)
inlineinherited

Report an informational message with a printf-like interface.

Parameters
[in]fmtFormat string with embedded '%' sequences.
[in]argsList of arguments to substitute in the format string.
See also
UString::format()

◆ writeLog()

virtual void ts::Report::writeLog ( int  severity,
const UString msg 
)
protectedvirtualinherited

Actual message reporting method.

The method is called only when a message passed the severity filter. It is not necessary to recheck the maximum severity inside the method. By default, does nothing.

Parameters
[in]severityMessage severity.
[in]msgMessage text.

Reimplemented in ts::Args, ts::ReportBuffer< SAFETY >, ts::ReportFile< SAFETY >, ts::TelnetConnection, ts::CerrReport, and ts::NullReport.


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