Improve loop for TS input packet reader

This commit is contained in:
Thulinma 2018-05-14 17:27:48 +02:00
parent 7af419fdad
commit 98c50762e8

View file

@ -63,15 +63,20 @@ void parseThread(void * ignored) {
threadTimer[tid] = Util::bootSecs(); threadTimer[tid] = Util::bootSecs();
while (Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT && cfgPointer->is_active && (!liveStream.isDataTrack(tid) || myProxy.userClient.isAlive())) { while (Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT && cfgPointer->is_active && (!liveStream.isDataTrack(tid) || myProxy.userClient.isAlive())) {
{
tthread::lock_guard<tthread::mutex> guard(threadClaimMutex);
threadTimer[tid] = Util::bootSecs();
}
if (liveStream.isDataTrack(tid)){
myProxy.userClient.keepAlive();
}
liveStream.parse(tid); liveStream.parse(tid);
if (!liveStream.hasPacket(tid)){ if (!liveStream.hasPacket(tid)){
if (liveStream.isDataTrack(tid)){
myProxy.userClient.keepAlive();
}
Util::sleep(100); Util::sleep(100);
continue; continue;
} }
while (liveStream.hasPacket(tid) && (Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT && cfgPointer->is_active && (!liveStream.isDataTrack(tid) || myProxy.userClient.isAlive()))){ uint64_t startSecs = Util::bootSecs();
while (liveStream.hasPacket(tid) && ((Util::bootSecs() < startSecs + 2) && cfgPointer->is_active && (!liveStream.isDataTrack(tid) || myProxy.userClient.isAlive()))){
liveStream.initializeMetadata(myMeta, tid); liveStream.initializeMetadata(myMeta, tid);
DTSC::Packet pack; DTSC::Packet pack;
liveStream.getPacket(tid, pack); liveStream.getPacket(tid, pack);
@ -84,10 +89,6 @@ void parseThread(void * ignored) {
myProxy.bufferLivePacket(pack, myMeta); myProxy.bufferLivePacket(pack, myMeta);
} }
} }
{
tthread::lock_guard<tthread::mutex> guard(threadClaimMutex);
threadTimer[tid] = Util::bootSecs();
}
} }
std::string reason = "unknown reason"; std::string reason = "unknown reason";
if (!(Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT)){reason = "thread timeout";} if (!(Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT)){reason = "thread timeout";}