From 7f1fca24d794a267b0d20181229b201eb114bfd0 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Thu, 17 May 2018 14:10:07 +0200 Subject: [PATCH] Added non-chunked options to DASH and HLS outputs --- src/output/output_dash_mp4.cpp | 7 ++++++- src/output/output_hls.cpp | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/output/output_dash_mp4.cpp b/src/output/output_dash_mp4.cpp index ac81b462..0d2fc5d4 100644 --- a/src/output/output_dash_mp4.cpp +++ b/src/output/output_dash_mp4.cpp @@ -501,6 +501,11 @@ namespace Mist{ capa["methods"][0u]["handler"] = "http"; capa["methods"][0u]["type"] = "dash/video/mp4"; capa["methods"][0u]["priority"] = 8ll; + + cfg->addOption("nonchunked", JSON::fromString("{\"short\":\"C\",\"long\":\"nonchunked\",\"help\":\"Do not send chunked, but buffer whole segments.\"}")); + capa["optional"]["nonchunked"]["name"] = "Send whole segments"; + capa["optional"]["nonchunked"]["help"] = "Disables chunked transfer encoding, forcing per-segment buffering. Reduces performance significantly, but increases compatibility somewhat."; + capa["optional"]["nonchunked"]["option"] = "--nonchunked"; } void OutDashMP4::onHTTP(){ @@ -548,7 +553,7 @@ namespace Mist{ H.Clean(); return; } - H.StartResponse(H, myConn); + H.StartResponse(H, myConn, config->getBool("nonchunked")); if (url.find("init.m4s") != std::string::npos){ //init segment diff --git a/src/output/output_hls.cpp b/src/output/output_hls.cpp index 59f23a1f..4ed360a0 100644 --- a/src/output/output_hls.cpp +++ b/src/output/output_hls.cpp @@ -368,6 +368,11 @@ namespace Mist { capa["optional"]["listlimit"]["default"] = 0ll; capa["optional"]["listlimit"]["type"] = "uint"; capa["optional"]["listlimit"]["option"] = "--list-limit"; + + cfg->addOption("nonchunked", JSON::fromString("{\"short\":\"C\",\"long\":\"nonchunked\",\"help\":\"Do not send chunked, but buffer whole segments.\"}")); + capa["optional"]["nonchunked"]["name"] = "Send whole segments"; + capa["optional"]["nonchunked"]["help"] = "Disables chunked transfer encoding, forcing per-segment buffering. Reduces performance significantly, but increases compatibility somewhat."; + capa["optional"]["nonchunked"]["option"] = "--nonchunked"; /*LTS-END*/ } @@ -514,7 +519,7 @@ namespace Mist { return; } - H.StartResponse(H, myConn, VLCworkaround); + H.StartResponse(H, myConn, VLCworkaround || config->getBool("nonchunked")); //we assume whole fragments - but timestamps may be altered at will uint32_t fragIndice = Trk.timeToFragnum(from); contPAT = Trk.missedFrags + fragIndice; //PAT continuity counter