mediastreamer2  2.9.1
Typedefs | Enumerations | Functions
Ticker API - Manage mediastreamer2 graphs

Ticker API to manage mediastreamer2 graphs. More...

Typedefs

typedef uint64_t(* MSTickerTimeFunc) (void *)
 
typedef int(* MSTickerTickFunc) (void *, uint64_t ticker_virtual_time)
 
typedef struct _MSTicker MSTicker
 
typedef struct _MSTickerSynchronizer MSTickerSynchronizer
 

Enumerations

enum  _MSTickerPrio {
  MS_TICKER_PRIO_NORMAL,
  MS_TICKER_PRIO_HIGH,
  MS_TICKER_PRIO_REALTIME
}
 

Functions

MSTickerms_ticker_new (void)
 
MSTickerms_ticker_new_with_params (const MSTickerParams *params)
 
void ms_ticker_set_name (MSTicker *ticker, const char *name)
 
void ms_ticker_set_priority (MSTicker *ticker, MSTickerPrio prio)
 
int ms_ticker_attach (MSTicker *ticker, MSFilter *f)
 
int ms_ticker_attach_multiple (MSTicker *ticker, MSFilter *f,...)
 
int ms_ticker_detach (MSTicker *ticker, MSFilter *f)
 
void ms_ticker_destroy (MSTicker *ticker)
 
void ms_ticker_set_time_func (MSTicker *ticker, MSTickerTimeFunc func, void *user_data)
 
void ms_ticker_set_tick_func (MSTicker *ticker, MSTickerTickFunc func, void *user_data)
 
void ms_ticker_print_graphs (MSTicker *ticker)
 
float ms_ticker_get_average_load (MSTicker *ticker)
 
MSTickerSynchronizerms_ticker_synchronizer_new (void)
 
double ms_ticker_synchronizer_set_external_time (MSTickerSynchronizer *ts, const MSTimeSpec *time)
 
uint64_t ms_ticker_synchronizer_get_corrected_time (MSTickerSynchronizer *ts)
 
void ms_ticker_synchronizer_destroy (MSTickerSynchronizer *ts)
 

Detailed Description

Ticker API to manage mediastreamer2 graphs.

Describes the ticker API. The ticker is the thread responsible for scheduling audio & video processing for one or several filter graphs.

Typedef Documentation

◆ MSTickerTimeFunc

MSTickerTimeFunc

Function pointer for method getting time in miliseconds from an external source.

◆ MSTickerTickFunc

MSTickerTickFunc

Function pointer for method waiting next tick from an external source.

It shall return the number of late milliseconds, if this value is known.

◆ MSTicker

Structure for ticker object.

◆ MSTickerSynchronizer

Structure for ticker synchronizer object.

Enumeration Type Documentation

◆ _MSTickerPrio

Enum for ticker priority

Enumerator
MS_TICKER_PRIO_NORMAL 

the default OS priority for threads

MS_TICKER_PRIO_HIGH 

Increased priority: done by setpriority() or sched_setschedparams() with SCHED_RR on linux/MacOS

MS_TICKER_PRIO_REALTIME 

Topmost priority, running SCHED_FIFO on linux

Function Documentation

◆ ms_ticker_new()

MSTicker* ms_ticker_new ( void  )

Create a ticker that will be used to start and stop a graph.

Returns: MSTicker * if successfull, NULL otherwise.

◆ ms_ticker_new_with_params()

MSTicker* ms_ticker_new_with_params ( const MSTickerParams *  params)

Create a ticker that will be used to start and stop a graph.

Returns: MSTicker * if successfull, NULL otherwise.

◆ ms_ticker_set_name()

void ms_ticker_set_name ( MSTicker ticker,
const char *  name 
)

Set a name to the ticker (used for logging)

◆ ms_ticker_set_priority()

void ms_ticker_set_priority ( MSTicker ticker,
MSTickerPrio  prio 
)

Deprecated: Set priority to the ticker

◆ ms_ticker_attach()

int ms_ticker_attach ( MSTicker ticker,
MSFilter f 
)

Attach a chain of filters to a ticker. The processing chain will be executed until ms_ticker_detach will be called.

Parameters
tickerA MSTicker object.
fA MSFilter object.

Returns: 0 if successfull, -1 otherwise.

◆ ms_ticker_attach_multiple()

int ms_ticker_attach_multiple ( MSTicker ticker,
MSFilter f,
  ... 
)

Attach a chain of filters to a ticker. The processing chain will be executed until ms_ticker_detach will be called. This variadic can be used to attach multiple chains in a single call. The argument list MUST be NULL terminated.

Parameters
tickerA MSTicker object.
fA MSFilter object.

Returns: 0 if successfull, -1 otherwise.

◆ ms_ticker_detach()

int ms_ticker_detach ( MSTicker ticker,
MSFilter f 
)

Dettach a chain of filters to a ticker. The processing chain will no more be executed.

Parameters
tickerA MSTicker object.
fA MSFilter object.

Returns: 0 if successfull, -1 otherwise.

◆ ms_ticker_destroy()

void ms_ticker_destroy ( MSTicker ticker)

Destroy a ticker.

Parameters
tickerA MSTicker object.

◆ ms_ticker_set_time_func()

void ms_ticker_set_time_func ( MSTicker ticker,
MSTickerTimeFunc  func,
void *  user_data 
)

Override MSTicker's time function. This can be used to control the ticker from an external time provider, for example the clock of a sound card. WARNING: this must not be used in conjunction with ms_ticker_set_tick_func().

Parameters
tickerA MSTicker object.
funcA replacement method for calculating "current time"
user_dataAny pointer to user private data.

◆ ms_ticker_set_tick_func()

void ms_ticker_set_tick_func ( MSTicker ticker,
MSTickerTickFunc  func,
void *  user_data 
)

Override MSTicker's ticking function. This can be used to control the ticker from an external ticking source, for example an interrupt, an event on a file descriptor, etc. WARNING: this must not be used in conjunction with ms_ticker_set_time_func().

Parameters
tickerA MSTicker object.
funcA replacement method waiting the next tick.
user_dataAny pointer to user private data.

◆ ms_ticker_print_graphs()

void ms_ticker_print_graphs ( MSTicker ticker)

Print on stdout all filters of a ticker. (INTERNAL: DO NOT USE)

Parameters
tickerA MSTicker object.

◆ ms_ticker_get_average_load()

float ms_ticker_get_average_load ( MSTicker ticker)

Get the average load of the ticker. It is expressed as the ratio between real time spent in processing all graphs for a tick divided by the tick interval (default is 10 ms). This value is averaged over several ticks to get consistent and useful value. A load greater than 100% clearly means that the ticker is over loaded and runs late.

◆ ms_ticker_synchronizer_new()

MSTickerSynchronizer* ms_ticker_synchronizer_new ( void  )

Create a ticker synchronizer.

Returns: MSTickerSynchronizer * if successfull, NULL otherwise.

◆ ms_ticker_synchronizer_set_external_time()

double ms_ticker_synchronizer_set_external_time ( MSTickerSynchronizer ts,
const MSTimeSpec *  time 
)

Set the current external time.

Parameters
tsA MSTickerSynchronizer object.
timeA #MSTimeSpec object.

Returns: Average skew.

◆ ms_ticker_synchronizer_get_corrected_time()

uint64_t ms_ticker_synchronizer_get_corrected_time ( MSTickerSynchronizer ts)

Get the corrected current time following the set external times.

Parameters
tsA MSTickerSynchronizer object.

Returns: A corrected current time.

◆ ms_ticker_synchronizer_destroy()

void ms_ticker_synchronizer_destroy ( MSTickerSynchronizer ts)

Destroy a ticker synchronizer.

Parameters
tsA MSTickerSynchronizer object.