From 19840f32d4d8c99cb3b46fc2824e7e00c6690184 Mon Sep 17 00:00:00 2001 From: Thulinma Date: Fri, 16 Oct 2020 14:39:11 +0200 Subject: [PATCH] Do not cause a floating point exception during stream shutdown in TS-based outputs with AAC audio --- src/output/output_ts_base.cpp | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/output/output_ts_base.cpp b/src/output/output_ts_base.cpp index c8e4e02f..07b32c95 100644 --- a/src/output/output_ts_base.cpp +++ b/src/output/output_ts_base.cpp @@ -190,13 +190,15 @@ namespace Mist { tempLen += 7; //Make sure TS timestamp is sample-aligned, if possible uint32_t freq = Trk.rate; - uint64_t aacSamples = (packTime/90) * freq / 1000; - //round to nearest packet, assuming all 1024 samples (probably wrong, but meh) - aacSamples += 512; - aacSamples /= 1024; - aacSamples *= 1024; - //Get closest 90kHz clock time to perfect sample alignment - packTime = aacSamples * 90000 / freq; + if (freq){ + uint64_t aacSamples = (packTime/90) * freq / 1000; + //round to nearest packet, assuming all 1024 samples (probably wrong, but meh) + aacSamples += 512; + aacSamples /= 1024; + aacSamples *= 1024; + //Get closest 90kHz clock time to perfect sample alignment + packTime = aacSamples * 90000 / freq; + } } bs = TS::Packet::getPESAudioLeadIn(tempLen, packTime, Trk.bps); fillPacket(bs.data(), bs.size(), firstPack, video, keyframe, pkgPid, contPkg);