#include <iostream> #include <atomic> extern "C" { #include <libavcodec/avcodec.h> #include <libavdevice/avdevice.h> #include <libavformat/avformat.h> #include <libavfilter/avfilter.h> #include <libavutil/avutil.h> #include <libavutil/pixdesc.h> #include <libswscale/swscale.h> } using namespace std; #define Maxsize 5 // 循环队列的大小 // 循环队列 class FrameQueue { private: /* data */ public: FrameQueue(/* args */); ~FrameQueue(); AVFrame* getTail(); void addTail(); AVFrame* deQueue(); AVFrame* getHead(); void addHead(); void clearQueue(); int length(); bool isEmpty(); private: AVFrame* base[Maxsize]; atomic<int> front; atomic<int> rear; };