#ifndef DEMUXMEDIA_H #define DEMUXMEDIA_H #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #ifdef _STDINT_H #undef _STDINT_H #endif #include #endif #include #include #include #include #include #include "mediapacket.h" #include "playaudio.h" #include "playvideo.h" /* ffmpeg related stuff */ extern "C" { #include #include } #define VCR_PLAY 1 #define VCR_PAUSE 2 #define VCR_STOP 3 #define VCR_REWIND 4 #define VCR_POWER_OFF 5 class DemuxMedia : public QObject { Q_OBJECT public: explicit DemuxMedia(QObject *parent = 0, QQueue *audioQueue = 0, QQueue *videoQueue = 0, void *channel = 0, int stream_id = 101); void setVcrOp(int op); public slots: void startDemuxing(); PlayVideo *getPlayVideoInstance(); private: QQueue *audioQueue; QQueue *videoQueue; QMutex vcrMutex; int vcrFlag; void *channel; PlayVideo *playVideo; QThread *playVideoThread; PlayAudio *playAudio; QThread *playAudioThread; int stream_id; bool threadsStarted; QMutex sendMutex; void startAudioVideoThreads(); signals: void onMediaRestarted(); }; #endif // DEMUXMEDIA_H