|
FFmpeg
|
#include <stdint.h>#include <string.h>#include "libavutil/avassert.h"#include "libavutil/error.h"#include "libavutil/fifo.h"#include "libavutil/intreadwrite.h"#include "libavutil/mem.h"#include "libavutil/thread.h"#include "objpool.h"#include "thread_queue.h"Go to the source code of this file.
Data Structures | |
| struct | FifoElem |
| struct | ThreadQueue |
Enumerations | |
| enum | { FINISHED_SEND = (1 << 0), FINISHED_RECV = (1 << 1) } |
Functions | |
| void | tq_free (ThreadQueue **ptq) |
| ThreadQueue * | tq_alloc (unsigned int nb_streams, size_t queue_size, ObjPool *obj_pool, void(*obj_move)(void *dst, void *src)) |
| Allocate a queue for sending data between threads. More... | |
| int | tq_send (ThreadQueue *tq, unsigned int stream_idx, void *data) |
| Send an item for the given stream to the queue. More... | |
| static int | receive_locked (ThreadQueue *tq, int *stream_idx, void *data) |
| int | tq_receive (ThreadQueue *tq, int *stream_idx, void *data) |
| Read the next item from the queue. More... | |
| void | tq_send_finish (ThreadQueue *tq, unsigned int stream_idx) |
| Mark the given stream finished from the sending side. More... | |
| void | tq_receive_finish (ThreadQueue *tq, unsigned int stream_idx) |
| Mark the given stream finished from the receiving side. More... | |
| anonymous enum |
| Enumerator | |
|---|---|
| FINISHED_SEND | |
| FINISHED_RECV | |
Definition at line 32 of file thread_queue.c.
| void tq_free | ( | ThreadQueue ** | ptq | ) |
Definition at line 55 of file thread_queue.c.
Referenced by thread_start(), thread_stop(), and tq_alloc().
| ThreadQueue* tq_alloc | ( | unsigned int | nb_streams, |
| size_t | queue_size, | ||
| ObjPool * | obj_pool, | ||
| void(*)(void *dst, void *src) | obj_move | ||
| ) |
Allocate a queue for sending data between threads.
| nb_streams | number of streams for which a distinct EOF state is maintained |
| queue_size | number of items that can be stored in the queue without blocking |
| obj_pool | object pool that will be used to allocate items stored in the queue; the pool becomes owned by the queue |
| callback | that moves the contents between two data pointers |
Definition at line 79 of file thread_queue.c.
Referenced by thread_start().
| int tq_send | ( | ThreadQueue * | tq, |
| unsigned int | stream_idx, | ||
| void * | data | ||
| ) |
Send an item for the given stream to the queue.
| data | the item to send, its contents will be moved using the callback provided to tq_alloc(); on failure the item will be left untouched |
Definition at line 120 of file thread_queue.c.
Referenced by thread_submit_packet().
|
static |
Definition at line 161 of file thread_queue.c.
Referenced by tq_receive().
| int tq_receive | ( | ThreadQueue * | tq, |
| int * | stream_idx, | ||
| void * | data | ||
| ) |
Read the next item from the queue.
| stream_idx | the index of the stream that was processed or -1 will be written here |
| data | the data item will be written here on success using the callback provided to tq_alloc() |
Definition at line 191 of file thread_queue.c.
Referenced by muxer_thread().
| void tq_send_finish | ( | ThreadQueue * | tq, |
| unsigned int | stream_idx | ||
| ) |
Mark the given stream finished from the sending side.
Definition at line 217 of file thread_queue.c.
Referenced by thread_stop(), and thread_submit_packet().
| void tq_receive_finish | ( | ThreadQueue * | tq, |
| unsigned int | stream_idx | ||
| ) |
Mark the given stream finished from the receiving side.
Definition at line 232 of file thread_queue.c.
Referenced by muxer_thread().
1.8.17