修正回放频率不准问题
This commit is contained in:
+22
-39
@@ -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
@@ -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
@@ -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;
|
||||||
|
|||||||
@@ -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
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user