/* * queue for Decoder and Detector * 2023.03.04 sugon * */ #ifndef __QUEUE_H__ #define __QUEUE_H__ #include #include #include #include #include #include #include #include using std::queue; namespace migraphxSamples { #define CAPACITY 1 class Queue { public: Queue(size_t Capacity = CAPACITY); ~Queue(); void enQueue(cv::Mat& Image); void enQueue(DCU_Frame& dcu_frame); void deQueue(cv::Mat* Image); void deQueue(DCU_Frame* dcu_frame); void finish(); bool CQ_Isempty(); bool DQ_Isempty(); bool DecodeEnd; int device; private: bool CQ_IsFull(); bool DQ_IsFull(); queue C_Queue; queue D_Queue; size_t _Capacity; pthread_mutex_t Lock; pthread_cond_t ConsumeCond; pthread_cond_t ProductCond; }; } #endif