mirror of
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs.git
synced 2025-06-05 15:08:58 +00:00
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>
This commit is contained in:
parent
fa05a305b6
commit
ad97b21011
1 changed files with 46 additions and 42 deletions
|
@ -1132,54 +1132,58 @@ impl LiveSync {
|
||||||
let duplicate;
|
let duplicate;
|
||||||
let mut caps = None;
|
let mut caps = None;
|
||||||
let mut segment = 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();
|
match in_buffer {
|
||||||
segment = state.pending_segment.take();
|
Some((buffer, lateness)) => {
|
||||||
|
state.out_buffer = Some(buffer);
|
||||||
|
state.out_timestamp = state.in_timestamp;
|
||||||
|
|
||||||
duplicate = lateness != BufferLateness::OnTime;
|
caps = state.pending_caps.take();
|
||||||
self.cond.notify_all();
|
segment = state.pending_segment.take();
|
||||||
} 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();
|
duplicate = lateness != BufferLateness::OnTime;
|
||||||
let prev_duration = buffer.duration().unwrap();
|
self.cond.notify_all();
|
||||||
|
|
||||||
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));
|
|
||||||
}
|
}
|
||||||
|
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);
|
||||||
|
|
||||||
buffer.set_dts(buffer.dts().map(|t| t + prev_duration));
|
let buffer = buffer.as_mut().unwrap().make_mut();
|
||||||
buffer.set_pts(buffer.pts().map(|t| t + prev_duration));
|
let prev_duration = buffer.duration().unwrap();
|
||||||
buffer.set_flags(gst::BufferFlags::GAP);
|
|
||||||
buffer.unset_flags(gst::BufferFlags::DISCONT);
|
|
||||||
|
|
||||||
state.out_timestamp = state.ts_range(
|
if let Some(audio_info) = audio_info {
|
||||||
state.out_buffer.as_ref().unwrap(),
|
if !buffer.flags().contains(gst::BufferFlags::GAP) {
|
||||||
state.out_segment.as_ref().unwrap(),
|
let mut map_info = buffer.map_writable().map_err(|e| {
|
||||||
);
|
gst::error!(CAT, imp: self, "Failed to map buffer: {}", e);
|
||||||
duplicate = true;
|
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);
|
||||||
|
|
||||||
|
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 buffer = state.out_buffer.clone().unwrap();
|
||||||
let sync_ts = state
|
let sync_ts = state
|
||||||
|
|
Loading…
Reference in a new issue