You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
912 B
C++
39 lines
912 B
C++
#ifndef AVPACKETQUEUEMANAGER_H
|
|
#define AVPACKETQUEUEMANAGER_H
|
|
|
|
#include <QMutex>
|
|
#include <QQueue>
|
|
|
|
#include "ffmpeginclude.h"
|
|
|
|
class AVPacketQueueManager {
|
|
public:
|
|
AVPacketQueueManager();
|
|
|
|
void enqueueDecodePacket(AVPacket* pkt);
|
|
void enqueueSavePacket(AVPacket* pkt);
|
|
void enqueuePushPacket(AVPacket* pkt);
|
|
|
|
AVPacket* dequeueDecodePacket();
|
|
AVPacket* dequeueSavePacket();
|
|
AVPacket* dequeuePushPacket();
|
|
|
|
void clearDecodeQueue();
|
|
void clearSaveQueue();
|
|
void clearPushQueue();
|
|
|
|
// bool isEmptyDecodeQueue();
|
|
bool isEmptySaveQueue();
|
|
|
|
private:
|
|
int QUEUECAPACITY = 100;
|
|
QQueue<AVPacket*> m_decodeQueue;
|
|
QQueue<AVPacket*> m_saveQueue;
|
|
QQueue<AVPacket*> m_pushQueue;
|
|
QMutex m_decodeMutex; // 共享的互斥锁
|
|
QMutex m_saveMutex; // 共享的互斥锁
|
|
QMutex m_pushMutex; // 共享的互斥锁
|
|
};
|
|
|
|
#endif // AVPACKETQUEUEMANAGER_H
|