1 Star 1 Fork 1

Devin / XPlay3

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
XDecodeThread.cpp 1.71 KB
一键复制 编辑 原始数据 按行查看 历史
伊兴龙 提交于 2022-09-14 16:29 . 增加了推流
#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;
}
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/yixinglong/xplay3.git
git@gitee.com:yixinglong/xplay3.git
yixinglong
xplay3
XPlay3
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891