FFmpeg 5.1.6
Typedefs | Enumerations | Functions
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. More...
 
void av_thread_message_queue_free (AVThreadMessageQueue **mq)
 Free a message queue. More...
 
int av_thread_message_queue_send (AVThreadMessageQueue *mq, void *msg, unsigned flags)
 Send a message on the queue. More...
 
int av_thread_message_queue_recv (AVThreadMessageQueue *mq, void *msg, unsigned flags)
 Receive a message from the queue. More...
 
void av_thread_message_queue_set_err_send (AVThreadMessageQueue *mq, int err)
 Set the sending error code. More...
 
void av_thread_message_queue_set_err_recv (AVThreadMessageQueue *mq, int err)
 Set the receiving error code. More...
 
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. More...
 
int av_thread_message_queue_nb_elems (AVThreadMessageQueue *mq)
 Return the current number of messages in the queue. More...
 
void av_thread_message_flush (AVThreadMessageQueue *mq)
 Flush the message queue. More...
 

Typedef Documentation

◆ AVThreadMessageQueue

Definition at line 22 of file threadmessage.h.

Enumeration Type Documentation

◆ 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
mqpointer to the message queue
nelemmaximum number of elements in the queue
elsizesize 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).