FFmpeg  4.0
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

◆ 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

Definition at line 40 of file threadmessage.c.

Referenced by android_camera_read_header(), check_keyboard_interaction(), fifo_init(), and main().

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

Definition at line 83 of file threadmessage.c.

Referenced by fifo_init(), and main().

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

Definition at line 91 of file threadmessage.c.

Referenced by android_camera_read_close(), check_keyboard_interaction(), fifo_deinit(), and main().

◆ av_thread_message_queue_send()

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 check_keyboard_interaction(), fifo_write_packet(), image_available(), and sender_thread().

◆ av_thread_message_queue_recv()

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

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

Definition at line 175 of file threadmessage.c.

Referenced by android_camera_read_close(), check_keyboard_interaction(), fifo_consumer_thread(), and receiver_thread().

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

Definition at line 186 of file threadmessage.c.

Referenced by check_keyboard_interaction(), fifo_write_trailer(), image_available(), and sender_thread().

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

Definition at line 205 of file threadmessage.c.

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