FFmpeg
|
#include <stdio.h>
#include "queue.h"
#include "safe_queue.h"
#include "libavutil/mem.h"
#include "libavutil/avassert.h"
#include "libavutil/thread.h"
Go to the source code of this file.
Data Structures | |
struct | SafeQueue |
Double-ended queue with mutex locks ensuring data consistency while multithreading. More... | |
Macros | |
#define | DNNCond char |
Functions | |
static int | dnn_cond_init (DNNCond *cond, const void *attr) |
static int | dnn_cond_destroy (DNNCond *cond) |
static int | dnn_cond_signal (DNNCond *cond) |
static int | dnn_cond_wait (DNNCond *cond, AVMutex *mutex) |
SafeQueue * | ff_safe_queue_create (void) |
Create and initialize a SafeQueue instance. More... | |
void | ff_safe_queue_destroy (SafeQueue *sq) |
Destroy the SafeQueue instance. More... | |
size_t | ff_safe_queue_size (SafeQueue *sq) |
Return the length of the SafeQueue. More... | |
int | ff_safe_queue_push_front (SafeQueue *sq, void *v) |
Add data to the head of queue in the SafeQueue after locking mutex. More... | |
int | ff_safe_queue_push_back (SafeQueue *sq, void *v) |
Add data to the tail of queue in the SafeQueue after locking mutex. More... | |
void * | ff_safe_queue_pop_front (SafeQueue *sq) |
Remove and free first element from the queue in SafeQueue. More... | |
#define DNNCond char |
Definition at line 35 of file safe_queue.c.
Definition at line 36 of file safe_queue.c.
Referenced by ff_safe_queue_create().
Definition at line 37 of file safe_queue.c.
Referenced by ff_safe_queue_destroy().
Definition at line 38 of file safe_queue.c.
Referenced by ff_safe_queue_pop_front(), ff_safe_queue_push_back(), and ff_safe_queue_push_front().
Definition at line 39 of file safe_queue.c.
Referenced by ff_safe_queue_pop_front().
SafeQueue* ff_safe_queue_create | ( | void | ) |
Create and initialize a SafeQueue instance.
NULL | if initialization fails |
Definition at line 52 of file safe_queue.c.
Referenced by ff_dnn_load_model_tf(), and init_model_ov().
void ff_safe_queue_destroy | ( | SafeQueue * | sq | ) |
Destroy the SafeQueue instance.
It also frees all elements of the queue, destroys the mutex and condition variable.
Definition at line 69 of file safe_queue.c.
Referenced by ff_dnn_free_model_ov(), and ff_dnn_free_model_tf().
size_t ff_safe_queue_size | ( | SafeQueue * | sq | ) |
Return the length of the SafeQueue.
Definition at line 80 of file safe_queue.c.
Referenced by ff_dnn_free_model_ov(), and ff_dnn_free_model_tf().
Add data to the head of queue in the SafeQueue after locking mutex.
After adding the data, it signals the condition variable and unlocks the mutex. It increases the length of queue in the SafeQueue by one.
sq | pointer to the SafeQueue |
v | data to be added |
0 | if the queue is not initialized |
-1 | if new entry cannot be created |
Definition at line 85 of file safe_queue.c.
Add data to the tail of queue in the SafeQueue after locking mutex.
After adding the data, it signals the condition variable and unlocks the mutex. It increases the length of queue in the SafeQueue by one.
sq | pointer to the SafeQueue |
v | data to be added |
0 | if the queue is not initialized |
-1 | if new entry cannot be created |
Definition at line 95 of file safe_queue.c.
Referenced by execute_model_ov(), execute_model_tf(), ff_dnn_flush_tf(), ff_dnn_load_model_tf(), infer_completion_callback(), init_model_ov(), and tf_start_inference().
void* ff_safe_queue_pop_front | ( | SafeQueue * | sq | ) |
Remove and free first element from the queue in SafeQueue.
Before removing, it waits for the condition variable to signal and acquires the mutex. Finally, it signals the condition and unlocks the mutex. It shrinks the length of queue in the SafeQueue by one.
sq | pointer to the SafeQueue. |
Definition at line 105 of file safe_queue.c.
Referenced by ff_dnn_execute_model_ov(), ff_dnn_execute_model_tf(), ff_dnn_flush_ov(), ff_dnn_flush_tf(), ff_dnn_free_model_ov(), ff_dnn_free_model_tf(), get_output_ov(), and get_output_tf().