diff --git a/src/output/output_hls.cpp b/src/output/output_hls.cpp index 143e4c1c..cc06fb92 100644 --- a/src/output/output_hls.cpp +++ b/src/output/output_hls.cpp @@ -277,7 +277,25 @@ namespace Mist { stop(); wantRequest = true; parseData = false; + //Ensure alignment of contCounters for selected tracks, to prevent discontinuities. + for (std::set::iterator it = selectedTracks.begin(); it != selectedTracks.end(); ++it){ + DTSC::Track & Trk = myMeta.tracks[*it]; + uint32_t pkgPid = 255 + *it; + int & contPkg = contCounters[pkgPid]; + if (contPkg % 16 != 0){ + packData.clear(); + packData.setPID(pkgPid); + packData.addStuffing(); + while (contPkg % 16 != 0){ + packData.setContinuityCounter(++contPkg); + sendTS(packData.checkAndGetBuffer()); + } + packData.clear(); + } + } + + //Signal end of data H.Chunkify("", 0, myConn); return; } diff --git a/src/output/output_ts_base.cpp b/src/output/output_ts_base.cpp index 78c9dce6..c1669963 100644 --- a/src/output/output_ts_base.cpp +++ b/src/output/output_ts_base.cpp @@ -34,7 +34,6 @@ namespace Mist { packData.setContinuityCounter(++contPkg); if (firstPack){ packData.setUnitStart(1); - packData.setDiscontinuity(true); if (video){ if (keyframe){ packData.setRandomAccess(true);