From 252316f99ede5675139e973c3f4cec5fae40a913 Mon Sep 17 00:00:00 2001 From: f4exb Date: Mon, 22 Mar 2021 03:12:58 +0100 Subject: [PATCH] DATV demod: DATVideoRender: make meta data private --- plugins/channelrx/demoddatv/datvdemodgui.cpp | 4 +- .../channelrx/demoddatv/datvideorender.cpp | 65 ++++++++----------- plugins/channelrx/demoddatv/datvideorender.h | 11 +++- 3 files changed, 37 insertions(+), 43 deletions(-) diff --git a/plugins/channelrx/demoddatv/datvdemodgui.cpp b/plugins/channelrx/demoddatv/datvdemodgui.cpp index d936b2144..aeee24a70 100644 --- a/plugins/channelrx/demoddatv/datvdemodgui.cpp +++ b/plugins/channelrx/demoddatv/datvdemodgui.cpp @@ -770,7 +770,7 @@ void DATVDemodGUI::on_udpTS_clicked(bool checked) void DATVDemodGUI::on_StreamMetaDataChanged(DataTSMetaData2 *objMetaData) { - if (objMetaData != nullptr) + if (objMetaData) { QString strMetaData = ""; @@ -794,6 +794,8 @@ void DATVDemodGUI::on_StreamMetaDataChanged(DataTSMetaData2 *objMetaData) if (objMetaData->Height > 0) { ui->screenTV_2->setFixedWidth((int)objMetaData->Width*(270.0f/(float)objMetaData->Height)); } + + delete objMetaData; } } diff --git a/plugins/channelrx/demoddatv/datvideorender.cpp b/plugins/channelrx/demoddatv/datvideorender.cpp index b79eddce8..47b6ea90d 100644 --- a/plugins/channelrx/demoddatv/datvideorender.cpp +++ b/plugins/channelrx/demoddatv/datvideorender.cpp @@ -156,21 +156,8 @@ static int64_t SeekFunction(void *opaque, int64_t offset, int whence) void DATVideoRender::ResetMetaData() { - MetaData.CodecID = -1; - MetaData.PID = -1; - MetaData.Program = ""; - MetaData.Stream = ""; - MetaData.Width = -1; - MetaData.Height = -1; - MetaData.BitRate = -1; - MetaData.Channels = -1; - MetaData.CodecDescription = ""; - - MetaData.OK_Decoding = false; - MetaData.OK_TransportStream = false; - MetaData.OK_VideoStream = false; - - emit onMetaDataChanged(&MetaData); + m_metaData.reset(); + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); } bool DATVideoRender::InitializeFFMPEG() @@ -248,11 +235,11 @@ bool DATVideoRender::PreprocessStream() //Meta Data - MetaData.PID = m_formatCtx->streams[m_videoStreamIndex]->id; - MetaData.CodecID = m_videoDecoderCtx->codec_id; - MetaData.OK_TransportStream = true; - MetaData.Program = ""; - MetaData.Stream = ""; + m_metaData.PID = m_formatCtx->streams[m_videoStreamIndex]->id; + m_metaData.CodecID = m_videoDecoderCtx->codec_id; + m_metaData.OK_TransportStream = true; + m_metaData.Program = ""; + m_metaData.Stream = ""; if (m_formatCtx->programs && m_formatCtx->programs[m_videoStreamIndex]) { @@ -261,7 +248,7 @@ bool DATVideoRender::PreprocessStream() if (buffer != nullptr) { - MetaData.Program = QString("%1").arg(buffer); + m_metaData.Program = QString("%1").arg(buffer); } } @@ -271,10 +258,10 @@ bool DATVideoRender::PreprocessStream() if (buffer != nullptr) { - MetaData.Stream = QString("%1").arg(buffer); + m_metaData.Stream = QString("%1").arg(buffer); } - emit onMetaDataChanged(&MetaData); + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); //Decoder videoCodec = avcodec_find_decoder(m_videoDecoderCtx->codec_id); @@ -316,14 +303,14 @@ bool DATVideoRender::PreprocessStream() } m_frameCount = 0; - MetaData.Width = m_videoDecoderCtx->width; - MetaData.Height = m_videoDecoderCtx->height; - MetaData.BitRate = m_videoDecoderCtx->bit_rate; - MetaData.Channels = m_videoDecoderCtx->channels; - MetaData.CodecDescription = QString("%1").arg(videoCodec->long_name); - MetaData.OK_VideoStream = true; + m_metaData.Width = m_videoDecoderCtx->width; + m_metaData.Height = m_videoDecoderCtx->height; + m_metaData.BitRate = m_videoDecoderCtx->bit_rate; + m_metaData.Channels = m_videoDecoderCtx->channels; + m_metaData.CodecDescription = QString("%1").arg(videoCodec->long_name); + m_metaData.OK_VideoStream = true; - emit onMetaDataChanged(&MetaData); + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); // Prepare Audio Codec @@ -395,16 +382,16 @@ bool DATVideoRender::OpenStream(DATVideostream *device) if (device->bytesAvailable() <= 0) { qDebug() << "DATVideoRender::OpenStream no data available"; - MetaData.OK_Data = false; - emit onMetaDataChanged(&MetaData); + m_metaData.OK_Data = false; + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); return false; } //Only once execution if (m_running.testAndSetOrdered(0,1)) { - MetaData.OK_Data = true; - emit onMetaDataChanged(&MetaData); + m_metaData.OK_Data = true; + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); InitializeFFMPEG(); @@ -602,10 +589,10 @@ bool DATVideoRender::RenderStream() m_currentRenderWidth = m_frame->width; m_currentRenderHeight = m_frame->height; - MetaData.Width = m_frame->width; - MetaData.Height = m_frame->height; - MetaData.OK_Decoding = true; - emit onMetaDataChanged(&MetaData); + m_metaData.Width = m_frame->width; + m_metaData.Height = m_frame->height; + m_metaData.OK_Decoding = true; + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); } //Frame rendering @@ -797,7 +784,7 @@ bool DATVideoRender::CloseStream(QIODevice *device) m_currentRenderHeight = -1; ResetMetaData(); - emit onMetaDataChanged(&MetaData); + emit onMetaDataChanged(new DataTSMetaData2(m_metaData)); #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) m_running.storeRelaxed(0); diff --git a/plugins/channelrx/demoddatv/datvideorender.h b/plugins/channelrx/demoddatv/datvideorender.h index 3a41c6bd2..74e115828 100644 --- a/plugins/channelrx/demoddatv/datvideorender.h +++ b/plugins/channelrx/demoddatv/datvideorender.h @@ -66,8 +66,13 @@ struct DataTSMetaData2 DataTSMetaData2() { - PID = -1; + reset(); + } + + void reset() + { CodecID = -1; + PID = -1; Program = ""; Stream = ""; Width = -1; @@ -75,6 +80,7 @@ struct DataTSMetaData2 BitRate = -1; Channels = -1; CodecDescription = ""; + OK_Data = false; OK_Decoding = false; OK_TransportStream = false; @@ -107,9 +113,8 @@ class DATVideoRender : public TVScreen bool getAudioDecodeOK() const { return m_audioDecodeOK; } bool getVideoDecodeOK() const { return m_videoDecodeOK; } - struct DataTSMetaData2 MetaData; - private: + struct DataTSMetaData2 m_metaData; QWidget *m_parentWidget; Qt::WindowFlags m_originalWindowFlags; QSize m_originalSize;