43 lines
1.2 KiB
C
Executable File
43 lines
1.2 KiB
C
Executable File
/*
|
|
* Copyright (c) 2024 Quaming Intelligent Technology Co., Ltd.
|
|
*
|
|
* All Rights Reserved.
|
|
* Confidential and Proprietary - Quaming Intelligent Technology Co., Ltd.
|
|
*/
|
|
|
|
#ifndef __QUA_BUFFER_QUEUE_H__
|
|
#define __QUA_BUFFER_QUEUE_H__
|
|
|
|
#include "common/qua_mm_video_common_type.h"
|
|
#include "qua_list.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
typedef struct qua_mm_buffer_t {
|
|
qua_list_node_t node;
|
|
qua_video_frame_t frame;
|
|
} qua_mm_buffer_t;
|
|
|
|
typedef struct qua_buffer_queue_t {
|
|
qua_list_node_t free_buffers;
|
|
qua_list_node_t active_buffers;
|
|
|
|
pthread_mutex_t lock;
|
|
pthread_cond_t cond;
|
|
} qua_buffer_queue_t;
|
|
|
|
QUA_S32 qua_buffer_queue_init(qua_buffer_queue_t **buffer_queue);
|
|
void qua_buffer_queue_destroy(qua_buffer_queue_t *buffer_queue);
|
|
qua_mm_buffer_t * qua_buffer_queue_dequeue(qua_buffer_queue_t *buffer_queue, QUA_S64 timeout_us);
|
|
QUA_S32 qua_buffer_queue_enqueue(qua_buffer_queue_t *buffer_queue, qua_mm_buffer_t *mm_buffer);
|
|
qua_mm_buffer_t * qua_buffer_queue_acquire(qua_buffer_queue_t *buffer_queue);
|
|
QUA_S32 qua_buffer_queue_release(qua_buffer_queue_t *buffer_queue, qua_mm_buffer_t *mm_buffer);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* __QUA_BUFFER_QUEUE_H__ */
|