diff --git a/QtScrcpy/decoder/decoder.cpp b/QtScrcpy/decoder/decoder.cpp index 5486519..46976aa 100644 --- a/QtScrcpy/decoder/decoder.cpp +++ b/QtScrcpy/decoder/decoder.cpp @@ -4,8 +4,9 @@ #include "videobuffer.h" #include "decoder.h" -Decoder::Decoder() +Decoder::Decoder(VideoBuffer* vb) : QObject(Q_NULLPTR) + , m_vb(vb) { } @@ -15,11 +16,6 @@ Decoder::~Decoder() } -void Decoder::setVideoBuffer(VideoBuffer* vb) -{ - m_vb = vb; -} - bool Decoder::open(const AVCodec *codec) { // codec context diff --git a/QtScrcpy/decoder/decoder.h b/QtScrcpy/decoder/decoder.h index c72a491..b493e46 100644 --- a/QtScrcpy/decoder/decoder.h +++ b/QtScrcpy/decoder/decoder.h @@ -12,10 +12,9 @@ class Decoder : public QObject { Q_OBJECT public: - Decoder(); + Decoder(VideoBuffer* vb); virtual ~Decoder(); - void setVideoBuffer(VideoBuffer* vb); bool open(const AVCodec *codec); void close(); bool push(const AVPacket *packet); diff --git a/QtScrcpy/videoform.cpp b/QtScrcpy/videoform.cpp index b707dc0..55a89d1 100644 --- a/QtScrcpy/videoform.cpp +++ b/QtScrcpy/videoform.cpp @@ -15,6 +15,7 @@ #include "videoform.h" #include "recorder.h" #include "videobuffer.h" +#include "decoder.h" #include "ui_videoform.h" #include "iconhelper.h" #include "toolform.h" @@ -34,8 +35,8 @@ VideoForm::VideoForm(const QString& serial, quint16 maxSize, quint32 bitRate, co m_server = new Server(); m_vb = new VideoBuffer(); m_vb->init(); - m_decoder.setVideoBuffer(m_vb); - m_stream.setDecoder(&m_decoder); + m_decoder = new Decoder(m_vb); + m_stream.setDecoder(m_decoder); if (!fileName.trimmed().isEmpty()) { m_recorder = new Recorder(fileName.trimmed()); m_stream.setRecoder(m_recorder); @@ -189,7 +190,7 @@ void VideoForm::initSignals() }); // must be Qt::QueuedConnection, ui update must be main thread - connect(&m_decoder, &Decoder::onNewFrame, this, [this](){ + connect(m_decoder, &Decoder::onNewFrame, this, [this](){ if (ui->videoWidget->isHidden()) { if (m_loadingWidget) { m_loadingWidget->close(); diff --git a/QtScrcpy/videoform.h b/QtScrcpy/videoform.h index 60a7939..c8c1c89 100644 --- a/QtScrcpy/videoform.h +++ b/QtScrcpy/videoform.h @@ -7,7 +7,6 @@ #include "server.h" #include "stream.h" -#include "decoder.h" #include "inputconvertnormal.h" #include "inputconvertgame.h" #include "filehandler.h" @@ -19,6 +18,7 @@ class videoForm; class ToolForm; class Recorder; class VideoBuffer; +class Decoder; class VideoForm : public QWidget { Q_OBJECT @@ -72,7 +72,8 @@ private: QSize frameSize; Server* m_server = Q_NULLPTR; Stream m_stream; - VideoBuffer* m_vb; + VideoBuffer* m_vb = Q_NULLPTR; + Decoder* m_decoder = Q_NULLPTR; //InputConvertNormal m_inputConvert; InputConvertGame m_inputConvert; FileHandler m_fileHandler; @@ -82,8 +83,7 @@ private: QPoint m_dragPosition; float m_widthHeightRatio = 0.5f; QPointer m_toolForm; - Recorder* m_recorder = Q_NULLPTR; - Decoder m_decoder; + Recorder* m_recorder = Q_NULLPTR; QTime m_startTimeCount; QPointer m_loadingWidget; };