Skip to content

Commit 35f9380

Browse files
committed
fmt
1 parent d1e708a commit 35f9380

File tree

1 file changed

+39
-19
lines changed

1 file changed

+39
-19
lines changed

crates/editor/src/playback.rs

Lines changed: 39 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,15 @@ use cpal::{
1010
traits::{DeviceTrait, HostTrait, StreamTrait},
1111
};
1212
use futures::stream::{FuturesUnordered, StreamExt};
13-
use std::{collections::{HashSet, VecDeque}, sync::Arc, time::Duration};
14-
use tokio::{sync::{mpsc as tokio_mpsc, watch}, time::Instant};
13+
use std::{
14+
collections::{HashSet, VecDeque},
15+
sync::Arc,
16+
time::Duration,
17+
};
18+
use tokio::{
19+
sync::{mpsc as tokio_mpsc, watch},
20+
time::Instant,
21+
};
1522
use tracing::{error, info, trace, warn};
1623

1724
use crate::{
@@ -80,7 +87,8 @@ impl Playback {
8087
event_rx,
8188
};
8289

83-
let (prefetch_tx, mut prefetch_rx) = tokio_mpsc::channel::<PrefetchedFrame>(PREFETCH_BUFFER_SIZE * 2);
90+
let (prefetch_tx, mut prefetch_rx) =
91+
tokio_mpsc::channel::<PrefetchedFrame>(PREFETCH_BUFFER_SIZE * 2);
8492
let (frame_request_tx, mut frame_request_rx) = watch::channel(self.start_frame_number);
8593

8694
let prefetch_stop_rx = stop_rx.clone();
@@ -113,20 +121,22 @@ impl Playback {
113121
while in_flight.len() < PARALLEL_DECODE_TASKS {
114122
let frame_num = next_prefetch_frame;
115123
let prefetch_time = frame_num as f64 / fps_f64;
116-
124+
117125
if prefetch_time >= prefetch_duration {
118126
break;
119127
}
120-
128+
121129
if in_flight_frames.contains(&frame_num) {
122130
next_prefetch_frame += 1;
123131
continue;
124132
}
125133

126134
let project = prefetch_project.borrow().clone();
127-
135+
128136
if let Some((segment_time, segment)) = project.get_segment_time(prefetch_time) {
129-
if let Some(segment_media) = prefetch_segment_medias.get(segment.recording_clip as usize) {
137+
if let Some(segment_media) =
138+
prefetch_segment_medias.get(segment.recording_clip as usize)
139+
{
130140
let clip_offsets = project
131141
.clips
132142
.iter()
@@ -137,9 +147,9 @@ impl Playback {
137147
let decoders = segment_media.decoders.clone();
138148
let hide_camera = project.camera.hide;
139149
let segment_index = segment.recording_clip;
140-
150+
141151
in_flight_frames.insert(frame_num);
142-
152+
143153
in_flight.push(async move {
144154
let result = decoders
145155
.get_frames(segment_time as f32, !hide_camera, clip_offsets)
@@ -148,13 +158,13 @@ impl Playback {
148158
});
149159
}
150160
}
151-
161+
152162
next_prefetch_frame += 1;
153163
}
154164

155165
tokio::select! {
156166
biased;
157-
167+
158168
Some((frame_num, segment_index, result)) = in_flight.next() => {
159169
in_flight_frames.remove(&frame_num);
160170
if let Some(segment_frames) = result {
@@ -165,7 +175,7 @@ impl Playback {
165175
}).await;
166176
}
167177
}
168-
178+
169179
_ = tokio::time::sleep(Duration::from_millis(1)), if in_flight.is_empty() => {}
170180
}
171181
}
@@ -191,7 +201,8 @@ impl Playback {
191201

192202
let frame_duration = Duration::from_secs_f64(1.0 / fps_f64);
193203
let mut frame_number = self.start_frame_number;
194-
let mut prefetch_buffer: VecDeque<PrefetchedFrame> = VecDeque::with_capacity(PREFETCH_BUFFER_SIZE);
204+
let mut prefetch_buffer: VecDeque<PrefetchedFrame> =
205+
VecDeque::with_capacity(PREFETCH_BUFFER_SIZE);
195206
let max_frame_skip = 3u32;
196207

197208
'playback: loop {
@@ -223,17 +234,22 @@ impl Playback {
223234

224235
let project = self.project.borrow().clone();
225236

226-
let prefetched_idx = prefetch_buffer.iter().position(|p| p.frame_number == frame_number);
227-
237+
let prefetched_idx = prefetch_buffer
238+
.iter()
239+
.position(|p| p.frame_number == frame_number);
240+
228241
let segment_frames_opt = if let Some(idx) = prefetched_idx {
229242
let prefetched = prefetch_buffer.remove(idx).unwrap();
230243
Some((prefetched.segment_frames, prefetched.segment_index))
231244
} else {
232-
let Some((segment_time, segment)) = project.get_segment_time(playback_time) else {
245+
let Some((segment_time, segment)) = project.get_segment_time(playback_time)
246+
else {
233247
break;
234248
};
235249

236-
let Some(segment_media) = self.segment_medias.get(segment.recording_clip as usize) else {
250+
let Some(segment_media) =
251+
self.segment_medias.get(segment.recording_clip as usize)
252+
else {
237253
frame_number = frame_number.saturating_add(1);
238254
continue;
239255
};
@@ -256,7 +272,8 @@ impl Playback {
256272
};
257273

258274
if let Some((segment_frames, segment_index)) = segment_frames_opt {
259-
let Some(segment_media) = self.segment_medias.get(segment_index as usize) else {
275+
let Some(segment_media) = self.segment_medias.get(segment_index as usize)
276+
else {
260277
frame_number = frame_number.saturating_add(1);
261278
continue;
262279
};
@@ -290,7 +307,10 @@ impl Playback {
290307
trace!("Skipping {} frames to catch up", frames_behind);
291308
} else {
292309
frame_number = frame_number + max_frame_skip;
293-
trace!("Limiting frame skip to {} (was {} behind)", max_frame_skip, frames_behind);
310+
trace!(
311+
"Limiting frame skip to {} (was {} behind)",
312+
max_frame_skip, frames_behind
313+
);
294314
}
295315

296316
prefetch_buffer.retain(|p| p.frame_number >= frame_number);

0 commit comments

Comments
 (0)