修正回放频率不准问题

This commit is contained in:
2024-06-20 10:57:08 +07:00
parent 7147764284
commit dc6da41f64
5 changed files with 50 additions and 56 deletions
+22 -39
View File
@@ -123,7 +123,7 @@ void PlayThread::run()
QByteArray data;
QByteArray frame;
int CurrentProgress = 0;
//int CurrentProgress = 0;
uint32_t index = 0;
while(play_control)
@@ -199,6 +199,7 @@ void PlayThread::run()
//中断播放,一般只有要播放新的文件才会出现这种情况
if(play_state == 0)
{
//CurrentProgress = 0;
break;
}
else if(play_state == 1)//正常播放
@@ -220,11 +221,13 @@ void PlayThread::run()
{
CurrentProgress = FrameData.indexOf(*i);
emit progress(FrameData.size() - 1,CurrentProgress);
QThread::msleep(1);
QThread::msleep(100);
last_time_gap = 0;
if(isChangedPos)
{
i += (newpos - CurrentProgress);
//qDebug() << CurrentProgress << newpos << FrameData.indexOf(*i);
if(i == FrameData.end())
{
@@ -261,50 +264,23 @@ void PlayThread::run()
//延迟处理
//qint64 elapstime = (qint64)(elapstimer.nsecsElapsed());// / 1000000.0;
//qint64 elapstime = (qint64)(elapstimer.restart());
qint64 time_gap = 0;
//time_gap = (time.toMSecsSinceEpoch() - time_tick) - (last_time_gap - elapstime);
//假设上面那个成勋运行1ms时间,减掉,因为上面那一段运行时间不到1ms
time_gap = time.toMSecsSinceEpoch() - time_tick;
time_tick = time.toMSecsSinceEpoch();
//qDebug() << "time:" << time_gap << last_time_gap;
//last_time_gap = time_gap;
/*
if(time_gap > 0)
{
timer_ms->start(time_gap);
//这段时间就浪费掉了
//QThread::exec();
while(1)
{
QApplication::processEvents();
if(istimeout == true)
{
timer_ms->stop();
istimeout = false;
break;
}
}
}
else
{
QApplication::processEvents();
}*/
qint64 elapstime = (qint64)(elapstimer.elapsed());
//qDebug() << "time:" << time_gap << last_time_gap << elapstime;
if(time_gap > 1000)//第一次
{
time_gap = 1000;
}
if(time_gap > 0)
{
last_time_gap = 0;
@@ -334,7 +310,7 @@ void PlayThread::run()
last_time_gap += elapstime;
}
qDebug() << "time:" << time_gap << last_time_gap << elapstime;
//qDebug() << "time:" << time_gap << last_time_gap << elapstime;
@@ -358,13 +334,20 @@ void PlayThread::run()
void PlayThread::resetData()
{
FrameData.clear();
time_tick= 0;
play_start = false;
CurrentProgress = 0;
play_state = 0;
Sleep(100);
FrameData.clear();
}
+2 -1
View File
@@ -36,7 +36,7 @@ public:
qint64 time_tick = 0;
int64_t newpos = 0;
//uint64_t CurrentProgress = 0;
int CurrentProgress = 0;
uint8_t play_state = 0;
@@ -62,6 +62,7 @@ public slots:
newpos = pos;
//newpos 最后会比size还大
isChangedPos = true;
//qDebug() << newpos;
}
}
+24 -15
View File
@@ -106,29 +106,38 @@ void SaveThread::setSave(const QHostAddress &ip, const uint16_t &port, QByteArra
//if(file.open(QIODevice::Append) )
if(file->isOpen())
{
//QByteArray msg;
//msg.clear();
//msg.append((const char *)packer.buff,tx_len);
file->write((const char *)packer.buff,tx_len);
/*
QDataStream stream(&file);
//stream << msg;
stream.writeBytes(msg.data(),msg.size());
*/
//qDebug() << "file size" << file->size();
if((file->size() - record_count) >= (1024 * 1024))
{
record_count = file->size();
file->flush();
if(file->size() >= 1024 * 1024 * 100)
{
file->close();
delete file;
file = nullptr;
logname_count++;
file = new QFile("./log/" + logname + "_" + QString::number(logname_count) + ".bin");
if(!file->open(QIODevice::Append))
{
//open failure
file->close();
delete file;
file = nullptr;
}
record_count = 0;
}
}
}
//qDebug() << "save time:" << elapstimer.nsecsElapsed() / 1000000.0;
+1
View File
@@ -112,6 +112,7 @@ private:
Parser_t parser;
quint64 record_count = 0;
uint64_t logname_count = 0;
QFile *file;
+1 -1
View File
@@ -62,6 +62,7 @@
#define __UINTMAX_TYPE__ long long unsigned int
#define __DEC32_EPSILON__ 1E-6DF
#define __FLT_EVAL_METHOD_TS_18661_3__ 2
#define __OPTIMIZE__ 1
#define __UINT32_MAX__ 0xffffffffU
#define __GXX_EXPERIMENTAL_CXX0X__ 1
#define __LDBL_MAX_EXP__ 16384
@@ -184,7 +185,6 @@
#define __cdecl __attribute__((__cdecl__))
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __UINT8_TYPE__ unsigned char
#define __NO_INLINE__ 1
#define __i386 1
#define __FLT_MANT_DIG__ 24
#define __LDBL_DECIMAL_DIG__ 21