Loading...
Searching...
No Matches
threadmessage.h File Reference

Go to the source code of this file.

## Typedefs

typedef struct AVThreadMessageQueue | AVThreadMessageQueue

## Enumerations

enum | AVThreadMessageFlags { AV_THREAD_MESSAGE_NONBLOCK = 1 }

## Functions

int | av_thread_message_queue_alloc (AVThreadMessageQueue **mq, unsigned nelem, unsigned elsize)
| Allocate a new message queue.
void | av_thread_message_queue_free (AVThreadMessageQueue **mq)
| Free a message queue.
int | av_thread_message_queue_send (AVThreadMessageQueue *mq, void *msg, unsigned flags)
| Send a message on the queue.
int | av_thread_message_queue_recv (AVThreadMessageQueue *mq, void *msg, unsigned flags)
| Receive a message from the queue.
void | av_thread_message_queue_set_err_send (AVThreadMessageQueue *mq, int err)
| Set the sending error code.
void | av_thread_message_queue_set_err_recv (AVThreadMessageQueue *mq, int err)
| Set the receiving error code.
void | av_thread_message_queue_set_free_func (AVThreadMessageQueue *mq, void(*free_func)(void *msg))
| Set the optional free message callback function which will be called if an operation is removing messages from the queue.
int | av_thread_message_queue_nb_elems (AVThreadMessageQueue *mq)
| Return the current number of messages in the queue.
void | av_thread_message_flush (AVThreadMessageQueue *mq)
| Flush the message queue.

## Typedef Documentation

## AVThreadMessageQueue

typedef struct AVThreadMessageQueue AVThreadMessageQueue

Definition at line 22 of file threadmessage.h.

## Enumeration Type Documentation

## AVThreadMessageFlags

enum AVThreadMessageFlags

Enumerator
AV_THREAD_MESSAGE_NONBLOCK | Perform non-blocking operation. If this flag is set, send and recv operations are non-blocking and return AVERROR(EAGAIN) immediately if they can not proceed.

Definition at line 24 of file threadmessage.h.

## Function Documentation

## av_thread_message_queue_alloc()

int av_thread_message_queue_alloc | ( | AVThreadMessageQueue ** | mq,
|  | unsigned | nelem,
|  | unsigned | elsize
| ) |  |

Allocate a new message queue.

Parameters

  mq | pointer to the message queue
  nelem | maximum number of elements in the queue
  elsize | size of each element in the queue

Returns
  >=0 for success; <0 for error, in particular AVERROR(ENOSYS) if lavu was built without thread support

## av_thread_message_queue_free()

void av_thread_message_queue_free | ( | AVThreadMessageQueue ** | mq | ) |

Free a message queue.

The message queue must no longer be in use by another thread.

## av_thread_message_queue_send()

int av_thread_message_queue_send | ( | AVThreadMessageQueue * | mq,
|  | void * | msg,
|  | unsigned | flags
| ) |  |

Send a message on the queue.

## av_thread_message_queue_recv()

int av_thread_message_queue_recv | ( | AVThreadMessageQueue * | mq,
|  | void * | msg,
|  | unsigned | flags
| ) |  |

Receive a message from the queue.

## av_thread_message_queue_set_err_send()

void av_thread_message_queue_set_err_send | ( | AVThreadMessageQueue * | mq,
|  | int | err
| ) |  |

Set the sending error code.

If the error code is set to non-zero, av_thread_message_queue_send() will return it immediately. Conventional values, such as AVERROR_EOF or AVERROR(EAGAIN), can be used to cause the sending thread to stop or suspend its operation.

## av_thread_message_queue_set_err_recv()

void av_thread_message_queue_set_err_recv | ( | AVThreadMessageQueue * | mq,
|  | int | err
| ) |  |

Set the receiving error code.

If the error code is set to non-zero, av_thread_message_queue_recv() will return it immediately when there are no longer available messages. Conventional values, such as AVERROR_EOF or AVERROR(EAGAIN), can be used to cause the receiving thread to stop or suspend its operation.

## av_thread_message_queue_set_free_func()

void av_thread_message_queue_set_free_func | ( | AVThreadMessageQueue * | mq,
|  | void(*)(void *msg) | free_func
| ) |  |

Set the optional free message callback function which will be called if an operation is removing messages from the queue.

## av_thread_message_queue_nb_elems()

int av_thread_message_queue_nb_elems | ( | AVThreadMessageQueue * | mq | ) |

Return the current number of messages in the queue.

Returns
  the current number of messages or AVERROR(ENOSYS) if lavu was built without thread support

## av_thread_message_flush()

void av_thread_message_flush | ( | AVThreadMessageQueue * | mq | ) |

Flush the message queue.

This function is mostly equivalent to reading and free-ing every message except that it will be done in a single operation (no lock/unlock between reads).