修正回放频率不准问题
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();
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user