From bac101b1e53d2a1d7a4dc30b3be6135d2c48bb1f Mon Sep 17 00:00:00 2001 From: wouter spruit Date: Wed, 25 Feb 2015 14:27:15 +0100 Subject: [PATCH] added sleep in output_http, fix for high CPU usage --- src/output/output.cpp | 11 +++++++---- src/output/output_hls.cpp | 2 +- src/output/output_http.cpp | 3 +++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/output/output.cpp b/src/output/output.cpp index 082bd7fc..c8f92394 100644 --- a/src/output/output.cpp +++ b/src/output/output.cpp @@ -390,10 +390,12 @@ namespace Mist { sprintf(id, "%s%lu", streamName.c_str(), trackId); indexPages[trackId].init(id, 8 * 1024); } - for (int i = 0; i < indexPages[trackId].len / 8; i++){ - long amountKey = ntohl((((long long int*)indexPages[trackId].mapped)[i]) & 0xFFFFFFFF); + char * mpd = indexPages[trackId].mapped; + int len = indexPages[trackId].len / 8; + for (int i = 0; i < len; i++){ + long amountKey = ntohl((((long long int*)mpd)[i]) & 0xFFFFFFFF); if (amountKey == 0){continue;} - long tmpKey = ntohl(((((long long int*)indexPages[trackId].mapped)[i]) >> 32) & 0xFFFFFFFF); + long tmpKey = ntohl(((((long long int*)mpd)[i]) >> 32) & 0xFFFFFFFF); if (tmpKey <= keyNum && ((tmpKey?tmpKey:1) + amountKey) > keyNum){ return tmpKey; } @@ -479,9 +481,10 @@ namespace Mist { DTSC::Packet tmpPack; tmpPack.reInit(curPages[tid].mapped + tmp.offset, 0, true); tmp.time = tmpPack.getTime(); + char * mpd = curPages[tid].mapped; while ((long long)tmp.time < pos && tmpPack){ tmp.offset += tmpPack.getDataLen(); - tmpPack.reInit(curPages[tid].mapped + tmp.offset, 0, true); + tmpPack.reInit(mpd + tmp.offset, 0, true); tmp.time = tmpPack.getTime(); } if (tmpPack){ diff --git a/src/output/output_hls.cpp b/src/output/output_hls.cpp index af26827b..f74e7ff1 100644 --- a/src/output/output_hls.cpp +++ b/src/output/output_hls.cpp @@ -91,7 +91,7 @@ namespace Mist { OutHLS::OutHLS(Socket::Connection & conn) : HTTPOutput(conn) { haveAvcc = false; realTime = 0; - myConn.setBlocking(true); + setBlocking(true); } OutHLS::~OutHLS() {} diff --git a/src/output/output_http.cpp b/src/output/output_http.cpp index d90feae6..182b192d 100644 --- a/src/output/output_http.cpp +++ b/src/output/output_http.cpp @@ -191,6 +191,9 @@ namespace Mist { DEBUG_MSG(DLVL_DONTEVEN, "onRequest"); onRequest(); } + if (!myConn.Received().size()){ + Util::sleep(500); + } } }else{ if (!isBlocking && !parseData){