/* Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd. */ #ifndef LIBAPI_IVE_QUEUE_H #define LIBAPI_IVE_QUEUE_H #include "ot_type.h" #include "ot_common_video.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* __cplusplus */ typedef struct tag_ot_struct_ive_node { ot_video_frame_info frame_info; struct tag_ot_struct_ive_node *next; } ot_struct_ive_node; typedef struct { ot_struct_ive_node *front, *rear; } ot_struct_ive_queue; #define QUEUE_CORE_ERROR_BASE 1 #define QUEUE_CORE_FRAMEWORK_ERROR_BASE (QUEUE_CORE_ERROR_BASE + 10000) #define QUEUE_NULL_POINTER (QUEUE_CORE_FRAMEWORK_ERROR_BASE + 1) #define QUEUE_ILLEGAL_STATE (QUEUE_CORE_FRAMEWORK_ERROR_BASE + 2) #define QUEUE_OUT_OF_MEMORY (QUEUE_CORE_FRAMEWORK_ERROR_BASE + 3) ot_struct_ive_queue *libapi_ive_create_queue(td_s32 len); td_void libapi_ive_destory_queue(ot_struct_ive_queue **queue_head); td_void libapi_ive_clear_queue(ot_struct_ive_queue *queue_head); td_bool libapi_ive_is_queue_empty(ot_struct_ive_queue *queue_head); td_s32 libapi_ive_queue_size(ot_struct_ive_queue *queue_head); td_s32 libapi_ive_add_queue_node(ot_struct_ive_queue *queue_head, ot_video_frame_info *added_frm_info); ot_struct_ive_node *libapi_ive_get_queue_head_node(const ot_struct_ive_queue *queue_head); ot_struct_ive_node *libapi_ive_get_queue_node(ot_struct_ive_queue *queue_head); td_void libapi_ive_free_queue_node(ot_struct_ive_node **free_node); #ifdef __cplusplus #if __cplusplus } #endif #endif /* __cplusplus */ #endif /* LIBAPI_IVE_QUEUE_H */