DATV demod: DATVideoRender: make meta data private

This commit is contained in:
f4exb 2021-03-22 03:12:58 +01:00
parent 300fd37880
commit 252316f99e
3 changed files with 37 additions and 43 deletions

View File

@ -770,7 +770,7 @@ void DATVDemodGUI::on_udpTS_clicked(bool checked)
void DATVDemodGUI::on_StreamMetaDataChanged(DataTSMetaData2 *objMetaData) void DATVDemodGUI::on_StreamMetaDataChanged(DataTSMetaData2 *objMetaData)
{ {
if (objMetaData != nullptr) if (objMetaData)
{ {
QString strMetaData = ""; QString strMetaData = "";
@ -794,6 +794,8 @@ void DATVDemodGUI::on_StreamMetaDataChanged(DataTSMetaData2 *objMetaData)
if (objMetaData->Height > 0) { if (objMetaData->Height > 0) {
ui->screenTV_2->setFixedWidth((int)objMetaData->Width*(270.0f/(float)objMetaData->Height)); ui->screenTV_2->setFixedWidth((int)objMetaData->Width*(270.0f/(float)objMetaData->Height));
} }
delete objMetaData;
} }
} }

View File

@ -156,21 +156,8 @@ static int64_t SeekFunction(void *opaque, int64_t offset, int whence)
void DATVideoRender::ResetMetaData() void DATVideoRender::ResetMetaData()
{ {
MetaData.CodecID = -1; m_metaData.reset();
MetaData.PID = -1; emit onMetaDataChanged(new DataTSMetaData2(m_metaData));
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);
} }
bool DATVideoRender::InitializeFFMPEG() bool DATVideoRender::InitializeFFMPEG()
@ -248,11 +235,11 @@ bool DATVideoRender::PreprocessStream()
//Meta Data //Meta Data
MetaData.PID = m_formatCtx->streams[m_videoStreamIndex]->id; m_metaData.PID = m_formatCtx->streams[m_videoStreamIndex]->id;
MetaData.CodecID = m_videoDecoderCtx->codec_id; m_metaData.CodecID = m_videoDecoderCtx->codec_id;
MetaData.OK_TransportStream = true; m_metaData.OK_TransportStream = true;
MetaData.Program = ""; m_metaData.Program = "";
MetaData.Stream = ""; m_metaData.Stream = "";
if (m_formatCtx->programs && m_formatCtx->programs[m_videoStreamIndex]) if (m_formatCtx->programs && m_formatCtx->programs[m_videoStreamIndex])
{ {
@ -261,7 +248,7 @@ bool DATVideoRender::PreprocessStream()
if (buffer != nullptr) 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) 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 //Decoder
videoCodec = avcodec_find_decoder(m_videoDecoderCtx->codec_id); videoCodec = avcodec_find_decoder(m_videoDecoderCtx->codec_id);
@ -316,14 +303,14 @@ bool DATVideoRender::PreprocessStream()
} }
m_frameCount = 0; m_frameCount = 0;
MetaData.Width = m_videoDecoderCtx->width; m_metaData.Width = m_videoDecoderCtx->width;
MetaData.Height = m_videoDecoderCtx->height; m_metaData.Height = m_videoDecoderCtx->height;
MetaData.BitRate = m_videoDecoderCtx->bit_rate; m_metaData.BitRate = m_videoDecoderCtx->bit_rate;
MetaData.Channels = m_videoDecoderCtx->channels; m_metaData.Channels = m_videoDecoderCtx->channels;
MetaData.CodecDescription = QString("%1").arg(videoCodec->long_name); m_metaData.CodecDescription = QString("%1").arg(videoCodec->long_name);
MetaData.OK_VideoStream = true; m_metaData.OK_VideoStream = true;
emit onMetaDataChanged(&MetaData); emit onMetaDataChanged(new DataTSMetaData2(m_metaData));
// Prepare Audio Codec // Prepare Audio Codec
@ -395,16 +382,16 @@ bool DATVideoRender::OpenStream(DATVideostream *device)
if (device->bytesAvailable() <= 0) if (device->bytesAvailable() <= 0)
{ {
qDebug() << "DATVideoRender::OpenStream no data available"; qDebug() << "DATVideoRender::OpenStream no data available";
MetaData.OK_Data = false; m_metaData.OK_Data = false;
emit onMetaDataChanged(&MetaData); emit onMetaDataChanged(new DataTSMetaData2(m_metaData));
return false; return false;
} }
//Only once execution //Only once execution
if (m_running.testAndSetOrdered(0,1)) if (m_running.testAndSetOrdered(0,1))
{ {
MetaData.OK_Data = true; m_metaData.OK_Data = true;
emit onMetaDataChanged(&MetaData); emit onMetaDataChanged(new DataTSMetaData2(m_metaData));
InitializeFFMPEG(); InitializeFFMPEG();
@ -602,10 +589,10 @@ bool DATVideoRender::RenderStream()
m_currentRenderWidth = m_frame->width; m_currentRenderWidth = m_frame->width;
m_currentRenderHeight = m_frame->height; m_currentRenderHeight = m_frame->height;
MetaData.Width = m_frame->width; m_metaData.Width = m_frame->width;
MetaData.Height = m_frame->height; m_metaData.Height = m_frame->height;
MetaData.OK_Decoding = true; m_metaData.OK_Decoding = true;
emit onMetaDataChanged(&MetaData); emit onMetaDataChanged(new DataTSMetaData2(m_metaData));
} }
//Frame rendering //Frame rendering
@ -797,7 +784,7 @@ bool DATVideoRender::CloseStream(QIODevice *device)
m_currentRenderHeight = -1; m_currentRenderHeight = -1;
ResetMetaData(); ResetMetaData();
emit onMetaDataChanged(&MetaData); emit onMetaDataChanged(new DataTSMetaData2(m_metaData));
#if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0) #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
m_running.storeRelaxed(0); m_running.storeRelaxed(0);

View File

@ -66,8 +66,13 @@ struct DataTSMetaData2
DataTSMetaData2() DataTSMetaData2()
{ {
PID = -1; reset();
}
void reset()
{
CodecID = -1; CodecID = -1;
PID = -1;
Program = ""; Program = "";
Stream = ""; Stream = "";
Width = -1; Width = -1;
@ -75,6 +80,7 @@ struct DataTSMetaData2
BitRate = -1; BitRate = -1;
Channels = -1; Channels = -1;
CodecDescription = ""; CodecDescription = "";
OK_Data = false; OK_Data = false;
OK_Decoding = false; OK_Decoding = false;
OK_TransportStream = false; OK_TransportStream = false;
@ -107,9 +113,8 @@ class DATVideoRender : public TVScreen
bool getAudioDecodeOK() const { return m_audioDecodeOK; } bool getAudioDecodeOK() const { return m_audioDecodeOK; }
bool getVideoDecodeOK() const { return m_videoDecodeOK; } bool getVideoDecodeOK() const { return m_videoDecodeOK; }
struct DataTSMetaData2 MetaData;
private: private:
struct DataTSMetaData2 m_metaData;
QWidget *m_parentWidget; QWidget *m_parentWidget;
Qt::WindowFlags m_originalWindowFlags; Qt::WindowFlags m_originalWindowFlags;
QSize m_originalSize; QSize m_originalSize;