update: VideoForm成员变量m_vb改为堆上创建

This commit is contained in:
Barry 2019-06-18 14:49:18 +08:00
commit f401f2dcf2
4 changed files with 12 additions and 10 deletions

View file

@ -363,5 +363,5 @@ runQuit:
avcodec_free_context(&codecCtx); avcodec_free_context(&codecCtx);
} }
emit onDecodeStop(); emit onStreamStop();
} }

View file

@ -46,7 +46,7 @@ public:
ReceiverState* getReceiverState(); ReceiverState* getReceiverState();
signals: signals:
void onDecodeStop(); void onStreamStop();
protected: protected:
void run(); void run();

View file

@ -14,6 +14,7 @@
#include "videoform.h" #include "videoform.h"
#include "recorder.h" #include "recorder.h"
#include "videobuffer.h"
#include "ui_videoform.h" #include "ui_videoform.h"
#include "iconhelper.h" #include "iconhelper.h"
#include "toolform.h" #include "toolform.h"
@ -31,8 +32,9 @@ VideoForm::VideoForm(const QString& serial, quint16 maxSize, quint32 bitRate, co
initUI(); initUI();
m_server = new Server(); m_server = new Server();
m_vb.init(); m_vb = new VideoBuffer();
m_decoder.setVideoBuffer(&m_vb); m_vb->init();
m_decoder.setVideoBuffer(m_vb);
m_stream.setDecoder(&m_decoder); m_stream.setDecoder(&m_decoder);
if (!fileName.trimmed().isEmpty()) { if (!fileName.trimmed().isEmpty()) {
m_recorder = new Recorder(fileName.trimmed()); m_recorder = new Recorder(fileName.trimmed());
@ -69,7 +71,7 @@ VideoForm::~VideoForm()
if (m_recorder) { if (m_recorder) {
delete m_recorder; delete m_recorder;
} }
m_vb.deInit(); m_vb->deInit();
delete ui; delete ui;
} }
@ -194,13 +196,13 @@ void VideoForm::initSignals()
} }
ui->videoWidget->show(); ui->videoWidget->show();
} }
m_vb.lock(); m_vb->lock();
const AVFrame *frame = m_vb.consumeRenderedFrame(); const AVFrame *frame = m_vb->consumeRenderedFrame();
//qDebug() << "widthxheight:" << frame->width << "x" << frame->height; //qDebug() << "widthxheight:" << frame->width << "x" << frame->height;
updateShowSize(QSize(frame->width, frame->height)); updateShowSize(QSize(frame->width, frame->height));
ui->videoWidget->setFrameSize(QSize(frame->width, frame->height)); ui->videoWidget->setFrameSize(QSize(frame->width, frame->height));
ui->videoWidget->updateTextures(frame->data[0], frame->data[1], frame->data[2], frame->linesize[0], frame->linesize[1], frame->linesize[2]); ui->videoWidget->updateTextures(frame->data[0], frame->data[1], frame->data[2], frame->linesize[0], frame->linesize[1], frame->linesize[2]);
m_vb.unLock(); m_vb->unLock();
},Qt::QueuedConnection); },Qt::QueuedConnection);
} }

View file

@ -7,7 +7,6 @@
#include "server.h" #include "server.h"
#include "stream.h" #include "stream.h"
#include "videobuffer.h"
#include "decoder.h" #include "decoder.h"
#include "inputconvertnormal.h" #include "inputconvertnormal.h"
#include "inputconvertgame.h" #include "inputconvertgame.h"
@ -19,6 +18,7 @@ class videoForm;
class ToolForm; class ToolForm;
class Recorder; class Recorder;
class VideoBuffer;
class VideoForm : public QWidget class VideoForm : public QWidget
{ {
Q_OBJECT Q_OBJECT
@ -72,7 +72,7 @@ private:
QSize frameSize; QSize frameSize;
Server* m_server = Q_NULLPTR; Server* m_server = Q_NULLPTR;
Stream m_stream; Stream m_stream;
VideoBuffer m_vb; VideoBuffer* m_vb;
//InputConvertNormal m_inputConvert; //InputConvertNormal m_inputConvert;
InputConvertGame m_inputConvert; InputConvertGame m_inputConvert;
FileHandler m_fileHandler; FileHandler m_fileHandler;