FrameQueue.h 729 Bytes
#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;
};