![]() |
TSDuck
v3.35-3218
MPEG Transport Stream Toolkit
|
TSP callback for plugins. More...
Public Member Functions | |
virtual | ~TSP () override |
Virtual desctructor. | |
virtual bool | aborting () const override |
Check for aborting application. More... | |
BitRate | bitrate () const |
Get the current input bitrate in bits/seconds. More... | |
BitRateConfidence | bitrateConfidence () const |
Get the plugin bitrate confidence. More... | |
bool | debug () const |
Check if debugging is active. More... | |
void | debug (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report a debug message with a printf-like interface. More... | |
void | debug (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report a debug message with a printf-like interface. More... | |
void | debug (const UString &msg) |
Report a debug message. More... | |
void | error (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report an error message with a printf-like interface. More... | |
void | error (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report an error message with a printf-like interface. More... | |
void | error (const UString &msg) |
Report an error message. More... | |
void | fatal (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report a fatal error message with a printf-like interface. More... | |
void | fatal (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report a fatal error message with a printf-like interface. More... | |
void | fatal (const UString &msg) |
Report a fatal error message. More... | |
bool | gotErrors () const |
Check if errors (or worse) were reported through this object. More... | |
void | info (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report an informational message with a printf-like interface. More... | |
void | info (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report an informational message with a printf-like interface. More... | |
void | info (const UString &msg) |
Report an informational message. More... | |
virtual void | jointTerminate ()=0 |
Signaling "joint termination". More... | |
virtual void | log (int severity, const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report a message with an explicit severity and a printf-like interface. More... | |
virtual void | log (int severity, const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report a message with an explicit severity and a printf-like interface. More... | |
virtual void | log (int severity, const UString &msg) |
Report a message with an explicit severity. More... | |
int | maxSeverity () const |
Get maximum severity level. More... | |
virtual Plugin * | plugin () const =0 |
Access the shared library through the plugin interface. More... | |
virtual size_t | pluginCount () const =0 |
Get the number of plugins in the processing chain. More... | |
virtual size_t | pluginIndex () const =0 |
Get the plugin index in the processing chain. More... | |
virtual UString | pluginName () const =0 |
Get the plugin name. More... | |
PacketCounter | pluginPackets () const |
Get total number of packets previously processed in the plugin object. More... | |
virtual void | raiseMaxSeverity (int level) |
Raise maximum severity level. More... | |
bool | realtime () const |
Check if the current plugin environment should use defaults for real-time. More... | |
void | resetErrors () |
Reset the error indicator. More... | |
virtual void | setMaxSeverity (int level) |
Set maximum severity level. More... | |
void | setPacketTimeout (MilliSecond timeout) |
Set a timeout for the reception of packets by the current plugin. More... | |
void | severe (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report a severe error message with a printf-like interface. More... | |
void | severe (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report a severe error message with a printf-like interface. More... | |
void | severe (const UString &msg) |
Report a severe error message. More... | |
virtual void | signalPluginEvent (uint32_t event_code, Object *plugin_data=nullptr) const =0 |
Signal a plugin event. More... | |
virtual bool | thisJointTerminated () const =0 |
Check if the calling plugin has already declared "joint termination". More... | |
PacketCounter | totalPacketsInThread () const |
Get total number of packets in the execution of the plugin thread. More... | |
virtual bool | useJointTermination () const =0 |
Check if the calling plugin uses "joint termination". More... | |
virtual void | useJointTermination (bool on)=0 |
Activates or deactivates "joint termination". More... | |
bool | verbose () const |
Check if verbose reporting is active. More... | |
void | verbose (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report a verbose message with a printf-like interface. More... | |
void | verbose (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report a verbose message with a printf-like interface. More... | |
void | verbose (const UString &msg) |
Report a verbose message. More... | |
void | warning (const UChar *fmt, std::initializer_list< ArgMixIn > args) |
Report a warning message with a printf-like interface. More... | |
void | warning (const UString &fmt, std::initializer_list< ArgMixIn > args) |
Report a warning message with a printf-like interface. More... | |
void | warning (const UString &msg) |
Report a warning message. More... | |
Protected Member Functions | |
TSP (int max_severity) | |
Constructor for subclasses. More... | |
void | addNonPluginPackets (size_t incr) |
Account for more processed packets in this plugin thread, but excluded from plugin object. More... | |
void | addPluginPackets (size_t incr) |
Account for more processed packets in this plugin object. More... | |
void | restartPluginSession () |
Restart accounting for plugin session. More... | |
virtual void | writeLog (int severity, const UString &msg)=0 |
Actual message reporting method. More... | |
Protected Attributes | |
volatile int | _max_severity |
Debug level is accessible to subclasses. | |
volatile bool | _tsp_aborting |
TSP is currently aborting. | |
BitRate | _tsp_bitrate |
TSP input bitrate. | |
BitRateConfidence | _tsp_bitrate_confidence |
TSP input bitrate confidence. | |
MilliSecond | _tsp_timeout |
Timeout when waiting for packets (infinite by default). | |
bool | _use_realtime |
The plugin should use realtime defaults. | |
TSP callback for plugins.
Each plugin has an associated TSP object to communicate with the Transport Stream Processor main executable.
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).
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().
|
protected |
Constructor for subclasses.
[in] | max_severity | Initial maximum severity of reported messages. |
|
inline |
Get the current input bitrate in bits/seconds.
|
inline |
Get the plugin bitrate confidence.
|
pure virtual |
Access the shared library through the plugin interface.
Implemented in ts::PluginThread.
|
pure virtual |
Get the plugin name.
Implemented in ts::PluginThread.
|
pure virtual |
Get the plugin index in the processing chain.
|
pure virtual |
Get the number of plugins in the processing chain.
|
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).
|
inline |
Get total number of packets in the execution of the plugin thread.
This includes the number of extra stuffing or dropped packets.
|
inline |
Check if the current plugin environment should use defaults for real-time.
|
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.
[in] | timeout | Maximum number of milliseconds to wait for packets in the buffer. The default timeout is infinite. |
|
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).
Implements ts::AbortInterface.
|
pure virtual |
Signal a plugin event.
If the application has registered plugin events for this kind of events, they will be invoked.
[in] | event_code | A 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_data | Address 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. |
|
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().
[in] | on | True to activate or false to deactivate joint termination. |
|
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.
|
pure virtual |
Check if the calling plugin uses "joint termination".
|
pure virtual |
Check if the calling plugin has already declared "joint termination".
|
inlineprotected |
Account for more processed packets in this plugin object.
[in] | incr | Add this number of processed packets in the plugin object. |
|
inlineprotected |
Account for more processed packets in this plugin thread, but excluded from plugin object.
[in] | incr | Add this number of processed packets in the plugin thread. |
|
inlineprotected |
Restart accounting for plugin session.
Typically invoked when the plugin is restarted.
|
virtualinherited |
Set maximum severity level.
Messages with higher severities are not reported.
[in] | level | Set report to that level. |
Reimplemented in ts::ReportWithPrefix.
|
virtualinherited |
Raise maximum severity level.
[in] | level | Set report at least to that level. |
Reimplemented in ts::Args.
|
inlineinherited |
Get maximum severity level.
|
inlineinherited |
Check if debugging is active.
|
inlineinherited |
Report a debug message.
[in] | msg | Message text. |
|
inlineinherited |
Report a debug message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a debug message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Check if verbose reporting is active.
|
inlineinherited |
Report a verbose message.
[in] | msg | Message text. |
|
inlineinherited |
Report a verbose message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a verbose message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
virtualinherited |
Report a message with an explicit severity.
This method is the central reporting point. If filters the severity and drops the message if severity is higher than maxSeverity().
Subclasses should override writeLog() to implement a specific reporting device. It is not necessary to override log() unless the subclass needs to implement a different severity filtering policy.
[in] | severity | Message severity. |
[in] | msg | Message text. |
|
virtualinherited |
Report a message with an explicit severity and a printf-like interface.
[in] | severity | Message severity. |
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
virtualinherited |
Report a message with an explicit severity and a printf-like interface.
[in] | severity | Message severity. |
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a fatal error message.
[in] | msg | Message text. |
|
inlineinherited |
Report a fatal error message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a fatal error message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a severe error message.
[in] | msg | Message text. |
|
inlineinherited |
Report a severe error message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a severe error message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report an error message.
[in] | msg | Message text. |
|
inlineinherited |
Report an error message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report an error message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a warning message.
[in] | msg | Message text. |
|
inlineinherited |
Report a warning message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report a warning message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report an informational message.
[in] | msg | Message text. |
Report an informational message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Report an informational message with a printf-like interface.
[in] | fmt | Format string with embedded '%' sequences. |
[in] | args | List of arguments to substitute in the format string. |
|
inlineinherited |
Check if errors (or worse) were reported through this object.
|
inlineinherited |
Reset the error indicator.
|
protectedpure virtualinherited |
Actual message reporting method.
Must be implemented in actual classes. The method is called only when a message passed the severity filter. It is not necessary to recheck severity inside the method.
[in] | severity | Message severity. |
[in] | msg | Message text. |
Implemented in ts::PluginThread, ts::SwitchableReport, ts::ReportWithPrefix, ts::NullReport, ts::CerrReport, ts::TelnetConnection, ts::Plugin, ts::ReportFile< MUTEX >, ts::ReportBuffer< MUTEX >, and ts::Args.