diff options
author | Jan Alexander Steffens (heftig) <jan.steffens@ltnglobal.com> | 2023-10-25 01:10:11 +0300 |
---|---|---|
committer | Sebastian Dröge <sebastian@centricular.com> | 2023-11-10 18:47:41 +0300 |
commit | ad97b210115652ef6abf8d84e69fcff1304c3b95 (patch) | |
tree | 46e96b7f63433bd955bc22684c7785accd06446b | |
parent | fa05a305b663b73c30b6f274b57eed7efb74aac5 (diff) |
livesync: Replace an if-let with match
No change in behavior, yet. Separate commit to ease reviewing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1387>
-rw-r--r-- | utils/livesync/src/livesync/imp.rs | 88 |
1 files changed, 46 insertions, 42 deletions
diff --git a/utils/livesync/src/livesync/imp.rs b/utils/livesync/src/livesync/imp.rs index df1d7db80..5160f2b25 100644 --- a/utils/livesync/src/livesync/imp.rs +++ b/utils/livesync/src/livesync/imp.rs @@ -1132,54 +1132,58 @@ impl LiveSync { let duplicate; let mut caps = None; let mut segment = None; - if let Some((buffer, lateness)) = in_buffer { - state.out_buffer = Some(buffer); - state.out_timestamp = state.in_timestamp; - caps = state.pending_caps.take(); - segment = state.pending_segment.take(); + match in_buffer { + Some((buffer, lateness)) => { + state.out_buffer = Some(buffer); + state.out_timestamp = state.in_timestamp; - duplicate = lateness != BufferLateness::OnTime; - self.cond.notify_all(); - } else { - // Work around borrow checker - let State { - fallback_duration, - out_buffer: ref mut buffer, - out_audio_info: ref audio_info, - .. - } = *state; - gst::debug!(CAT, imp: self, "Repeating {:?}", buffer); - - let buffer = buffer.as_mut().unwrap().make_mut(); - let prev_duration = buffer.duration().unwrap(); - - if let Some(audio_info) = audio_info { - if !buffer.flags().contains(gst::BufferFlags::GAP) { - let mut map_info = buffer.map_writable().map_err(|e| { - gst::error!(CAT, imp: self, "Failed to map buffer: {}", e); - gst::FlowError::Error - })?; + caps = state.pending_caps.take(); + segment = state.pending_segment.take(); - audio_info - .format_info() - .fill_silence(map_info.as_mut_slice()); - } - } else { - buffer.set_duration(Some(fallback_duration)); + duplicate = lateness != BufferLateness::OnTime; + self.cond.notify_all(); } + None => { + // Work around borrow checker + let State { + fallback_duration, + out_buffer: ref mut buffer, + out_audio_info: ref audio_info, + .. + } = *state; + gst::debug!(CAT, imp: self, "Repeating {:?}", buffer); + + let buffer = buffer.as_mut().unwrap().make_mut(); + let prev_duration = buffer.duration().unwrap(); + + if let Some(audio_info) = audio_info { + if !buffer.flags().contains(gst::BufferFlags::GAP) { + let mut map_info = buffer.map_writable().map_err(|e| { + gst::error!(CAT, imp: self, "Failed to map buffer: {}", e); + gst::FlowError::Error + })?; + + audio_info + .format_info() + .fill_silence(map_info.as_mut_slice()); + } + } else { + buffer.set_duration(Some(fallback_duration)); + } - buffer.set_dts(buffer.dts().map(|t| t + prev_duration)); - buffer.set_pts(buffer.pts().map(|t| t + prev_duration)); - buffer.set_flags(gst::BufferFlags::GAP); - buffer.unset_flags(gst::BufferFlags::DISCONT); + buffer.set_dts(buffer.dts().map(|t| t + prev_duration)); + buffer.set_pts(buffer.pts().map(|t| t + prev_duration)); + buffer.set_flags(gst::BufferFlags::GAP); + buffer.unset_flags(gst::BufferFlags::DISCONT); - state.out_timestamp = state.ts_range( - state.out_buffer.as_ref().unwrap(), - state.out_segment.as_ref().unwrap(), - ); - duplicate = true; - }; + state.out_timestamp = state.ts_range( + state.out_buffer.as_ref().unwrap(), + state.out_segment.as_ref().unwrap(), + ); + duplicate = true; + } + } let buffer = state.out_buffer.clone().unwrap(); let sync_ts = state |