修正回放频率不准问题
This commit is contained in:
+22
-39
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -112,6 +112,7 @@ private:
|
||||
Parser_t parser;
|
||||
|
||||
quint64 record_count = 0;
|
||||
uint64_t logname_count = 0;
|
||||
|
||||
QFile *file;
|
||||
|
||||
|
||||
+1
-1
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user