代码拉取完成,页面将自动刷新
#include "XDecodeThread.h"
XDecodeThread::XDecodeThread()
{
if(m_pxDecode == nullptr)
{
m_pxDecode = new XDecode();
}
}
XDecodeThread::~XDecodeThread()
{
//等待线程结束
m_blIsExit = true;
wait();
}
void XDecodeThread::Close()
{
Clear();
//等待线程结束
m_blIsExit = true;
wait();
m_qmtxDecodeThread.lock();
if(m_pxDecode != nullptr)
{
m_pxDecode->Close();
delete m_pxDecode;
m_pxDecode = nullptr;
}
m_qmtxDecodeThread.unlock();
}
void XDecodeThread::Clear()
{
m_qmtxDecodeThread.lock();
if(m_pxDecode != nullptr)
{
m_pxDecode->Clear();
}
while(!m_qlstAvPacket.isEmpty())
{
AVPacket *avPacket = m_qlstAvPacket.front();
if(avPacket)
{
av_packet_free(&avPacket);
}
m_qlstAvPacket.pop_front();
}
m_qmtxDecodeThread.unlock();
return;
}
void XDecodeThread::Push(AVPacket *_pqAVPacket)
{
if(_pqAVPacket == nullptr)
{
qDebug()<<"_pqAVPacket == nullptr";
return;
}
while(!m_blIsExit)
{
m_qmtxDecodeThread.lock();
if(m_qlstAvPacket.size() < LIST_AVPACKET_MAX_COUNT)
{
m_qlstAvPacket.push_back(_pqAVPacket);
m_qmtxDecodeThread.unlock();
break;
}
m_qmtxDecodeThread.unlock();
QThread::msleep(1);
}
}
AVPacket *XDecodeThread::Pop()
{
if(m_qlstAvPacket.isEmpty())
{
//qDebug()<<"m_qlstAvPacket.isEmpty";
return nullptr;
}
AVPacket *avPacket;
m_qmtxDecodeThread.lock();
avPacket = m_qlstAvPacket.front();
m_qlstAvPacket.pop_front();
m_qmtxDecodeThread.unlock();
return avPacket;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。