修正回放频率不准问题

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 data;
QByteArray frame; QByteArray frame;
int CurrentProgress = 0; //int CurrentProgress = 0;
uint32_t index = 0; uint32_t index = 0;
while(play_control) while(play_control)
@@ -199,6 +199,7 @@ void PlayThread::run()
//中断播放,一般只有要播放新的文件才会出现这种情况 //中断播放,一般只有要播放新的文件才会出现这种情况
if(play_state == 0) if(play_state == 0)
{ {
//CurrentProgress = 0;
break; break;
} }
else if(play_state == 1)//正常播放 else if(play_state == 1)//正常播放
@@ -220,11 +221,13 @@ void PlayThread::run()
{ {
CurrentProgress = FrameData.indexOf(*i); CurrentProgress = FrameData.indexOf(*i);
emit progress(FrameData.size() - 1,CurrentProgress); emit progress(FrameData.size() - 1,CurrentProgress);
QThread::msleep(1); QThread::msleep(100);
last_time_gap = 0;
if(isChangedPos) if(isChangedPos)
{ {
i += (newpos - CurrentProgress); i += (newpos - CurrentProgress);
//qDebug() << CurrentProgress << newpos << FrameData.indexOf(*i);
if(i == FrameData.end()) 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; qint64 time_gap = 0;
//time_gap = (time.toMSecsSinceEpoch() - time_tick) - (last_time_gap - elapstime);
//假设上面那个成勋运行1ms时间,减掉,因为上面那一段运行时间不到1ms //假设上面那个成勋运行1ms时间,减掉,因为上面那一段运行时间不到1ms
time_gap = time.toMSecsSinceEpoch() - time_tick; time_gap = time.toMSecsSinceEpoch() - time_tick;
time_tick = time.toMSecsSinceEpoch(); 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()); qint64 elapstime = (qint64)(elapstimer.elapsed());
//qDebug() << "time:" << time_gap << last_time_gap << elapstime;
if(time_gap > 1000)//第一次
{
time_gap = 1000;
}
if(time_gap > 0) if(time_gap > 0)
{ {
last_time_gap = 0; last_time_gap = 0;
@@ -334,7 +310,7 @@ void PlayThread::run()
last_time_gap += elapstime; 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() void PlayThread::resetData()
{ {
FrameData.clear();
time_tick= 0; time_tick= 0;
play_start = false; play_start = false;
CurrentProgress = 0;
play_state = 0; play_state = 0;
Sleep(100);
FrameData.clear();
} }
+2 -1
View File
@@ -36,7 +36,7 @@ public:
qint64 time_tick = 0; qint64 time_tick = 0;
int64_t newpos = 0; int64_t newpos = 0;
//uint64_t CurrentProgress = 0; int CurrentProgress = 0;
uint8_t play_state = 0; uint8_t play_state = 0;
@@ -62,6 +62,7 @@ public slots:
newpos = pos; newpos = pos;
//newpos 最后会比size还大 //newpos 最后会比size还大
isChangedPos = true; 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.open(QIODevice::Append) )
if(file->isOpen()) if(file->isOpen())
{ {
//QByteArray msg;
//msg.clear();
//msg.append((const char *)packer.buff,tx_len);
file->write((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)) if((file->size() - record_count) >= (1024 * 1024))
{ {
record_count = file->size(); record_count = file->size();
file->flush(); 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; //qDebug() << "save time:" << elapstimer.nsecsElapsed() / 1000000.0;
+1
View File
@@ -112,6 +112,7 @@ private:
Parser_t parser; Parser_t parser;
quint64 record_count = 0; quint64 record_count = 0;
uint64_t logname_count = 0;
QFile *file; QFile *file;
+1 -1
View File
@@ -62,6 +62,7 @@
#define __UINTMAX_TYPE__ long long unsigned int #define __UINTMAX_TYPE__ long long unsigned int
#define __DEC32_EPSILON__ 1E-6DF #define __DEC32_EPSILON__ 1E-6DF
#define __FLT_EVAL_METHOD_TS_18661_3__ 2 #define __FLT_EVAL_METHOD_TS_18661_3__ 2
#define __OPTIMIZE__ 1
#define __UINT32_MAX__ 0xffffffffU #define __UINT32_MAX__ 0xffffffffU
#define __GXX_EXPERIMENTAL_CXX0X__ 1 #define __GXX_EXPERIMENTAL_CXX0X__ 1
#define __LDBL_MAX_EXP__ 16384 #define __LDBL_MAX_EXP__ 16384
@@ -184,7 +185,6 @@
#define __cdecl __attribute__((__cdecl__)) #define __cdecl __attribute__((__cdecl__))
#define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32 #define __FLT32_MIN__ 1.17549435082228750796873653722224568e-38F32
#define __UINT8_TYPE__ unsigned char #define __UINT8_TYPE__ unsigned char
#define __NO_INLINE__ 1
#define __i386 1 #define __i386 1
#define __FLT_MANT_DIG__ 24 #define __FLT_MANT_DIG__ 24
#define __LDBL_DECIMAL_DIG__ 21 #define __LDBL_DECIMAL_DIG__ 21