Modules | |
Message queues | |
Thread save message queues. | |
Lists of message queues | |
Send messages to multiple message queues. | |
Defines | |
#define | BG_MSG_NONE -1 |
Reserved ID for non valid message. | |
#define | BG_MSG_MAX_ARGS 4 |
Maximum number of args. | |
Typedefs | |
typedef struct bg_msg_s | bg_msg_t |
Opaque message type, you don't want to know what's inside. | |
typedef int(* | bg_msg_read_callback_t )(void *priv, uint8_t *data, int len) |
Callback for bg_msg_read. | |
typedef int(* | bg_msg_write_callback_t )(void *priv, const uint8_t *data, int len) |
Callback for bg_msg_write. | |
Functions | |
bg_msg_t * | bg_msg_create () |
Create a message. | |
void | bg_msg_destroy (bg_msg_t *msg) |
Destroy a message. | |
void | bg_msg_free (bg_msg_t *msg) |
Free internal memory of the message. | |
void | bg_msg_set_id (bg_msg_t *msg, int id) |
Set the ID of a message. | |
int | bg_msg_get_id (bg_msg_t *msg) |
Get the ID of a message. | |
void | bg_msg_set_arg_int (bg_msg_t *msg, int arg, int value) |
Set an integer argument. | |
int | bg_msg_get_arg_int (bg_msg_t *msg, int arg) |
Get an integer argument. | |
void | bg_msg_set_arg_time (bg_msg_t *msg, int arg, gavl_time_t value) |
Set a time argument. | |
gavl_time_t | bg_msg_get_arg_time (bg_msg_t *msg, int arg) |
Get a time argument. | |
void | bg_msg_set_arg_string (bg_msg_t *msg, int arg, const char *value) |
Set a string argument. | |
char * | bg_msg_get_arg_string (bg_msg_t *msg, int arg) |
Get a string argument. | |
void | bg_msg_set_arg_float (bg_msg_t *msg, int arg, double value) |
Set a float argument. | |
double | bg_msg_get_arg_float (bg_msg_t *msg, int arg) |
Get a float argument. | |
void | bg_msg_set_arg_color_rgb (bg_msg_t *msg, int arg, const float *value) |
Set an RGB color argument. | |
void | bg_msg_get_arg_color_rgb (bg_msg_t *msg, int arg, float *value) |
Get an RGB color argument. | |
void | bg_msg_set_arg_color_rgba (bg_msg_t *msg, int arg, const float *value) |
Set an RGBA color argument. | |
void | bg_msg_get_arg_color_rgba (bg_msg_t *msg, int arg, float *value) |
Get an RGBA color argument. | |
void | bg_msg_set_arg_position (bg_msg_t *msg, int arg, const double *value) |
Set a position argument. | |
void | bg_msg_get_arg_position (bg_msg_t *msg, int arg, double *value) |
Get a position argument. | |
void * | bg_msg_set_arg_ptr (bg_msg_t *msg, int arg, int len) |
Set a binary data argument. | |
void * | bg_msg_get_arg_ptr (bg_msg_t *msg, int arg, int *len) |
Set a binary data argument. | |
void | bg_msg_set_arg_ptr_nocopy (bg_msg_t *msg, int arg, void *ptr) |
Set a pointer argument without copying data. | |
void * | bg_msg_get_arg_ptr_nocopy (bg_msg_t *msg, int arg) |
Get a pointer argument without copying data. | |
void | bg_msg_set_arg_audio_format (bg_msg_t *msg, int arg, const gavl_audio_format_t *format) |
Set an audio format argument. | |
void | bg_msg_get_arg_audio_format (bg_msg_t *msg, int arg, gavl_audio_format_t *format, int *big_endian) |
Get an audio format argument. | |
void | bg_msg_set_arg_video_format (bg_msg_t *msg, int arg, const gavl_video_format_t *format) |
Set a video format argument. | |
void | bg_msg_get_arg_video_format (bg_msg_t *msg, int arg, gavl_video_format_t *format, int *big_endian) |
Get a video format argument. | |
void | bg_msg_set_arg_metadata (bg_msg_t *msg, int arg, const bg_metadata_t *m) |
Set a matadata argument. | |
void | bg_msg_get_arg_metadata (bg_msg_t *msg, int arg, bg_metadata_t *m) |
Get a matadata argument. | |
int | bg_msg_read (bg_msg_t *ret, bg_msg_read_callback_t cb, void *cb_data) |
Read a message using a callback. | |
int | bg_msg_write (bg_msg_t *msg, bg_msg_write_callback_t cb, void *cb_data) |
Write a message using a callback. | |
int | bg_msg_read_socket (bg_msg_t *ret, int fd, int milliseconds) |
Read a message from a socket. | |
int | bg_msg_write_socket (bg_msg_t *msg, int fd) |
Write a message to a socket. | |
int | bg_msg_write_audio_frame (bg_msg_t *msg, const gavl_audio_format_t *format, const gavl_audio_frame_t *frame, bg_msg_write_callback_t cb, void *cb_data) |
Write an audio frame. | |
int | bg_msg_read_audio_frame (gavl_dsp_context_t *ctx, bg_msg_t *msg, const gavl_audio_format_t *format, gavl_audio_frame_t *frame, bg_msg_read_callback_t cb, void *cb_data, int big_endian) |
Read an audio frame. | |
void | bg_msg_set_parameter (bg_msg_t *msg, const char *name, bg_parameter_type_t type, const bg_parameter_value_t *val) |
Set a parameter. | |
void | bg_msg_get_parameter (bg_msg_t *msg, char **name, bg_parameter_type_t *type, bg_parameter_value_t *val) |
Get a parameter. |
Gmerlin messages are a universal method to do communication between processes or threads. Each message consists of an integer ID and a number of arguments. Arguments can be strings, numbers or complex types like gavl_audio_format_t. For inter-thread comminucation, you can pass pointers as arguments as well.
For multithread applications, there are message queues (bg_msg_queue_t). They are thread save FIFO structures, which allow asynchronous communication between threads.
For communication via sockets, there are the ultra-simple functions bg_msg_read_socket and bg_msg_write_socket, which can be used to build network protocols (e.g. remote control of applications)
#define BG_MSG_NONE -1 |
Reserved ID for non valid message.
#define BG_MSG_MAX_ARGS 4 |
Maximum number of args.
typedef struct bg_msg_s bg_msg_t |
Opaque message type, you don't want to know what's inside.
typedef int(* bg_msg_read_callback_t)(void *priv, uint8_t *data, int len) |
Callback for bg_msg_read.
priv | The private data you passed to bg_msg_read | |
data | A buffer | |
len | Number of bytes to read |
typedef int(* bg_msg_write_callback_t)(void *priv, const uint8_t *data, int len) |
Callback for bg_msg_write.
priv | The private data you passed to bg_msg_write | |
data | A buffer | |
len | Number of bytes to write |
bg_msg_t* bg_msg_create | ( | ) |
Create a message.
void bg_msg_destroy | ( | bg_msg_t * | msg | ) |
Destroy a message.
msg | A message |
void bg_msg_free | ( | bg_msg_t * | msg | ) |
Free internal memory of the message.
msg | A message |
void bg_msg_set_id | ( | bg_msg_t * | msg, | |
int | id | |||
) |
Set the ID of a message.
msg | A message | |
id | The ID |
int bg_msg_get_id | ( | bg_msg_t * | msg | ) |
Get the ID of a message.
msg | A message |
void bg_msg_set_arg_int | ( | bg_msg_t * | msg, | |
int | arg, | |||
int | value | |||
) |
Set an integer argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
int bg_msg_get_arg_int | ( | bg_msg_t * | msg, | |
int | arg | |||
) |
Get an integer argument.
msg | A message | |
arg | Argument index (starting with 0) |
void bg_msg_set_arg_time | ( | bg_msg_t * | msg, | |
int | arg, | |||
gavl_time_t | value | |||
) |
Set a time argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
gavl_time_t bg_msg_get_arg_time | ( | bg_msg_t * | msg, | |
int | arg | |||
) |
Get a time argument.
msg | A message | |
arg | Argument index (starting with 0) |
void bg_msg_set_arg_string | ( | bg_msg_t * | msg, | |
int | arg, | |||
const char * | value | |||
) |
Set a string argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
char* bg_msg_get_arg_string | ( | bg_msg_t * | msg, | |
int | arg | |||
) |
Get a string argument.
msg | A message | |
arg | Argument index (starting with 0) |
void bg_msg_set_arg_float | ( | bg_msg_t * | msg, | |
int | arg, | |||
double | value | |||
) |
Set a float argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
double bg_msg_get_arg_float | ( | bg_msg_t * | msg, | |
int | arg | |||
) |
Get a float argument.
msg | A message | |
arg | Argument index (starting with 0) |
void bg_msg_set_arg_color_rgb | ( | bg_msg_t * | msg, | |
int | arg, | |||
const float * | value | |||
) |
Set an RGB color argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
void bg_msg_get_arg_color_rgb | ( | bg_msg_t * | msg, | |
int | arg, | |||
float * | value | |||
) |
Get an RGB color argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
void bg_msg_set_arg_color_rgba | ( | bg_msg_t * | msg, | |
int | arg, | |||
const float * | value | |||
) |
Set an RGBA color argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
void bg_msg_get_arg_color_rgba | ( | bg_msg_t * | msg, | |
int | arg, | |||
float * | value | |||
) |
Get an RGBA color argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
void bg_msg_set_arg_position | ( | bg_msg_t * | msg, | |
int | arg, | |||
const double * | value | |||
) |
Set a position argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
void bg_msg_get_arg_position | ( | bg_msg_t * | msg, | |
int | arg, | |||
double * | value | |||
) |
Get a position argument.
msg | A message | |
arg | Argument index (starting with 0) | |
value | Value |
void* bg_msg_set_arg_ptr | ( | bg_msg_t * | msg, | |
int | arg, | |||
int | len | |||
) |
Set a binary data argument.
msg | A message | |
arg | Argument index (starting with 0) | |
len | Number of bytes requested |
void* bg_msg_get_arg_ptr | ( | bg_msg_t * | msg, | |
int | arg, | |||
int * | len | |||
) |
Set a binary data argument.
msg | A message | |
arg | Argument index (starting with 0) | |
len | Returns the number of bytes |
void bg_msg_set_arg_ptr_nocopy | ( | bg_msg_t * | msg, | |
int | arg, | |||
void * | ptr | |||
) |
Set a pointer argument without copying data.
msg | A message | |
arg | Argument index (starting with 0) | |
ptr | A pointer |
void* bg_msg_get_arg_ptr_nocopy | ( | bg_msg_t * | msg, | |
int | arg | |||
) |
Get a pointer argument without copying data.
msg | A message | |
arg | Argument index (starting with 0) |
void bg_msg_set_arg_audio_format | ( | bg_msg_t * | msg, | |
int | arg, | |||
const gavl_audio_format_t * | format | |||
) |
Set an audio format argument.
msg | A message | |
arg | Argument index (starting with 0) | |
format | An audio format |
void bg_msg_get_arg_audio_format | ( | bg_msg_t * | msg, | |
int | arg, | |||
gavl_audio_format_t * | format, | |||
int * | big_endian | |||
) |
Get an audio format argument.
msg | A message | |
arg | Argument index (starting with 0) | |
format | Returns the audio format | |
big_endian | If non-null, returns 1 if multibyte numbers are in big endian |
void bg_msg_set_arg_video_format | ( | bg_msg_t * | msg, | |
int | arg, | |||
const gavl_video_format_t * | format | |||
) |
Set a video format argument.
msg | A message | |
arg | Argument index (starting with 0) | |
format | A video format |
void bg_msg_get_arg_video_format | ( | bg_msg_t * | msg, | |
int | arg, | |||
gavl_video_format_t * | format, | |||
int * | big_endian | |||
) |
Get a video format argument.
msg | A message | |
arg | Argument index (starting with 0) | |
format | Returns the video format | |
big_endian | If non-null, returns 1 if multibyte numbers are in big endian |
void bg_msg_set_arg_metadata | ( | bg_msg_t * | msg, | |
int | arg, | |||
const bg_metadata_t * | m | |||
) |
Set a matadata argument.
msg | A message | |
arg | Argument index (starting with 0) | |
m | Metadata |
void bg_msg_get_arg_metadata | ( | bg_msg_t * | msg, | |
int | arg, | |||
bg_metadata_t * | m | |||
) |
Get a matadata argument.
msg | A message | |
arg | Argument index (starting with 0) | |
m | Returns metadata |
int bg_msg_read | ( | bg_msg_t * | ret, | |
bg_msg_read_callback_t | cb, | |||
void * | cb_data | |||
) |
Read a message using a callback.
ret | Where the message will be copied | |
cb | read callback | |
cb_data | data to pass to the callback |
int bg_msg_write | ( | bg_msg_t * | msg, | |
bg_msg_write_callback_t | cb, | |||
void * | cb_data | |||
) |
Write a message using a callback.
msg | A message | |
cb | write callback | |
cb_data | data to pass to the callback |
int bg_msg_read_socket | ( | bg_msg_t * | ret, | |
int | fd, | |||
int | milliseconds | |||
) |
Read a message from a socket.
ret | Where the message will be copied | |
fd | A socket | |
milliseconds | Read timeout |
int bg_msg_write_socket | ( | bg_msg_t * | msg, | |
int | fd | |||
) |
Write a message to a socket.
msg | Message | |
fd | A socket |
int bg_msg_write_audio_frame | ( | bg_msg_t * | msg, | |
const gavl_audio_format_t * | format, | |||
const gavl_audio_frame_t * | frame, | |||
bg_msg_write_callback_t | cb, | |||
void * | cb_data | |||
) |
Write an audio frame.
msg | Message to use for communication | |
format | An audio format | |
frame | An audio frame | |
cb | Callback | |
cb_data | Data to pass to callback |
int bg_msg_read_audio_frame | ( | gavl_dsp_context_t * | ctx, | |
bg_msg_t * | msg, | |||
const gavl_audio_format_t * | format, | |||
gavl_audio_frame_t * | frame, | |||
bg_msg_read_callback_t | cb, | |||
void * | cb_data, | |||
int | big_endian | |||
) |
Read an audio frame.
ctx | A gavl dsp context | |
msg | Message containing the frame header | |
format | Audio format | |
frame | An audio frame | |
cb | Callback | |
cb_data | Data to pass to callback |
void bg_msg_set_parameter | ( | bg_msg_t * | msg, | |
const char * | name, | |||
bg_parameter_type_t | type, | |||
const bg_parameter_value_t * | val | |||
) |
Set a parameter.
msg | A message | |
type | Type of the parameter | |
name | Name of the parameter | |
val | Value for the parameter |
void bg_msg_get_parameter | ( | bg_msg_t * | msg, | |
char ** | name, | |||
bg_parameter_type_t * | type, | |||
bg_parameter_value_t * | val | |||
) |
Get a parameter.
msg | A message | |
type | Type of the parameter | |
name | Name of the parameter | |
val | Value for the parameter |