From ea8b3ecb7842ea2873628d6550abc9376ce99c65 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 5 Feb 2021 00:31:02 +0100 Subject: [PATCH] CMAF push stats fix --- src/output/output_cmaf.cpp | 19 +++++++++++++++++++ src/output/output_cmaf.h | 1 + 2 files changed, 20 insertions(+) diff --git a/src/output/output_cmaf.cpp b/src/output/output_cmaf.cpp index 44d2925a..db2d9a66 100644 --- a/src/output/output_cmaf.cpp +++ b/src/output/output_cmaf.cpp @@ -14,6 +14,9 @@ #include uint64_t bootMsOffset; +uint64_t cmafBoot = Util::bootSecs(); +uint64_t dataUp = 0; +uint64_t dataDown = 0; namespace Mist{ void CMAFPushTrack::connect(std::string debugParam) { @@ -52,11 +55,15 @@ namespace Mist{ } void CMAFPushTrack::send(const char * data, size_t len){ + uint64_t preUp = D.getSocket().dataUp(); + uint64_t preDown = D.getSocket().dataDown(); D.getHTTP().Chunkify(data, len, D.getSocket()); if (debug && debugFile) { fwrite(data, 1, len, debugFile); } + dataUp += D.getSocket().dataUp() - preUp; + dataDown += D.getSocket().dataDown() - preDown; } void CMAFPushTrack::send(const std::string & data){ @@ -82,6 +89,18 @@ namespace Mist{ } } + void OutCMAF::connStats(uint64_t now, Comms::Statistics &statComm){ + //For non-push usage, call usual function. + if (!isRecording()){ + Output::connStats(now, statComm); + return; + } + //For push output, this data is not coming from the usual place as we have multiple connections to worry about. + statComm.setUp(dataUp); + statComm.setDown(dataDown); + statComm.setTime(now - cmafBoot); + } + //Properly end all tracks on shutdown. OutCMAF::~OutCMAF() { for (std::map::iterator it = userSelect.begin(); it != userSelect.end(); it++){ diff --git a/src/output/output_cmaf.h b/src/output/output_cmaf.h index 70fb0c1a..75a6db69 100644 --- a/src/output/output_cmaf.h +++ b/src/output/output_cmaf.h @@ -35,6 +35,7 @@ namespace Mist{ void sendHeader(){}; protected: + virtual void connStats(uint64_t now, Comms::Statistics &statComm); void onTrackEnd(size_t idx); void sendDashManifest();