From 98c50762e8defc4de7e5d602e300b2e5c5741583 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Mon, 14 May 2018 17:27:48 +0200 Subject: [PATCH] Improve loop for TS input packet reader --- src/input/input_ts.cpp | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/input/input_ts.cpp b/src/input/input_ts.cpp index f51e3dc7..0cbbc311 100755 --- a/src/input/input_ts.cpp +++ b/src/input/input_ts.cpp @@ -63,15 +63,20 @@ void parseThread(void * ignored) { threadTimer[tid] = Util::bootSecs(); while (Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT && cfgPointer->is_active && (!liveStream.isDataTrack(tid) || myProxy.userClient.isAlive())) { + { + tthread::lock_guard guard(threadClaimMutex); + threadTimer[tid] = Util::bootSecs(); + } + if (liveStream.isDataTrack(tid)){ + myProxy.userClient.keepAlive(); + } liveStream.parse(tid); if (!liveStream.hasPacket(tid)){ - if (liveStream.isDataTrack(tid)){ - myProxy.userClient.keepAlive(); - } Util::sleep(100); 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); DTSC::Packet pack; liveStream.getPacket(tid, pack); @@ -84,10 +89,6 @@ void parseThread(void * ignored) { myProxy.bufferLivePacket(pack, myMeta); } } - { - tthread::lock_guard guard(threadClaimMutex); - threadTimer[tid] = Util::bootSecs(); - } } std::string reason = "unknown reason"; if (!(Util::bootSecs() - threadTimer[tid] < THREAD_TIMEOUT)){reason = "thread timeout";}