FFmpeg
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Data Structures | Functions
threadmessage.c File Reference
#include "fifo.h"
#include "threadmessage.h"
#include "thread.h"

Go to the source code of this file.

Data Structures

struct  AVThreadMessageQueue
 

Functions

int av_thread_message_queue_alloc (AVThreadMessageQueue **mq, unsigned nelem, unsigned elsize)
 Allocate a new message queue. 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...
 
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_flush (AVThreadMessageQueue *mq)
 Flush the message queue. More...
 

Function Documentation

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

Definition at line 40 of file threadmessage.c.

Referenced by main().

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.

Definition at line 83 of file threadmessage.c.

Referenced by main().

void av_thread_message_queue_free ( AVThreadMessageQueue **  mq)

Free a message queue.

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

Definition at line 91 of file threadmessage.c.

Referenced by main().

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

Send a message on the queue.

Definition at line 143 of file threadmessage.c.

Referenced by sender_thread().

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

Receive a message from the queue.

Definition at line 159 of file threadmessage.c.

Referenced by receiver_thread().

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_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.

Definition at line 175 of file threadmessage.c.

Referenced by receiver_thread().

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_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.

Definition at line 186 of file threadmessage.c.

Referenced by sender_thread().

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).

Definition at line 205 of file threadmessage.c.

Referenced by av_thread_message_queue_free(), receiver_thread(), and sender_thread().