From 71c268da14045b50d1309de7533a9f295bf78e6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johan=20Bj=C3=A4reholt?= Date: Mon, 19 Dec 2022 11:25:34 +0100 Subject: [PATCH] fmp4mux: Only push fragment_offset if write_mfra is true This is done so that the fragment_offset vector does not infinitely build up when write_mfra is disabled. Part-of: --- mux/fmp4/src/fmp4mux/imp.rs | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/mux/fmp4/src/fmp4mux/imp.rs b/mux/fmp4/src/fmp4mux/imp.rs index 6f4fdf21..0b9262f7 100644 --- a/mux/fmp4/src/fmp4mux/imp.rs +++ b/mux/fmp4/src/fmp4mux/imp.rs @@ -1505,17 +1505,19 @@ impl FMP4Mux { .collect::(), ); - // Write mfra only for the main stream, and if there are no buffers for the main stream - // in this segment then don't write anything. - if let Some(super::FragmentHeaderStream { - start_time: Some(start_time), - .. - }) = streams.get(0) - { - state.fragment_offsets.push(super::FragmentOffset { - time: *start_time, - offset: moof_offset, - }); + if settings.write_mfra { + // Write mfra only for the main stream, and if there are no buffers for the main stream + // in this segment then don't write anything. + if let Some(super::FragmentHeaderStream { + start_time: Some(start_time), + .. + }) = streams.get(0) + { + state.fragment_offsets.push(super::FragmentOffset { + time: *start_time, + offset: moof_offset, + }); + } } state.end_pts = Some(fragment_end_pts);