Skip to content

Commit c8402e8

Browse files
committed
fmt
1 parent 68ff6a2 commit c8402e8

2 files changed

Lines changed: 28 additions & 22 deletions

File tree

apps/desktop/src/utils/tauri.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -477,7 +477,7 @@ export type ProjectConfiguration = { aspectRatio: AspectRatio | null; background
477477
export type ProjectRecordingsMeta = { segments: SegmentRecordings[] }
478478
export type RecordingAction = "Started" | "InvalidAuthentication" | "UpgradeRequired"
479479
export type RecordingDeleted = { path: string }
480-
export type RecordingEvent = { variant: "Countdown"; value: number } | { variant: "Started" } | { variant: "Stopped" } | { variant: "Failed"; error: string } | { variant: "InputLost"; input: RecordingInputKind } | { variant: "InputRestored"; input: RecordingInputKind } | { variant: "DiskSpaceLow"; available_mb: number; threshold_mb: number; path: string }
480+
export type RecordingEvent = { variant: "Countdown"; value: number } | { variant: "Started" } | { variant: "Stopped" } | { variant: "Failed"; error: string } | { variant: "InputLost"; input: RecordingInputKind } | { variant: "InputRestored"; input: RecordingInputKind }
481481
export type RecordingInputKind = "microphone" | "camera"
482482
export type RecordingMeta = (StudioRecordingMeta | InstantRecordingMeta) & { platform?: Platform | null; pretty_name: string; sharing?: SharingMeta | null; upload?: UploadMeta | null }
483483
export type RecordingMetaWithMetadata = ((StudioRecordingMeta | InstantRecordingMeta) & { platform?: Platform | null; pretty_name: string; sharing?: SharingMeta | null; upload?: UploadMeta | null }) & { mode: RecordingMode; status: StudioRecordingStatus }

crates/rendering/src/decoder/avassetreader.rs

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,6 @@ use std::{
66
sync::{Arc, mpsc},
77
};
88

9-
use tracing::debug;
10-
119
use cidre::{
1210
arc::R,
1311
cv::{self, pixel_buffer::LockFlags},
@@ -593,16 +591,20 @@ impl AVAssetReaderDecoder {
593591
*last_sent_frame.borrow_mut() = Some(data.clone());
594592
let _ = req.sender.send(data.to_decoded_frame());
595593
} else {
596-
let data = if is_scrubbing {
597-
cache_frame.data().clone()
598-
} else {
599-
last_sent_frame
600-
.borrow()
601-
.clone()
602-
.unwrap_or_else(|| cache_frame.data().clone())
603-
};
604-
*last_sent_frame.borrow_mut() = Some(data.clone());
605-
let _ = req.sender.send(data.to_decoded_frame());
594+
const MAX_FALLBACK_DISTANCE: u32 = 10;
595+
596+
let nearest = cache
597+
.range(..=req.frame)
598+
.next_back()
599+
.or_else(|| cache.range(req.frame..).next());
600+
601+
if let Some((&frame_num, cached)) = nearest {
602+
let distance = req.frame.abs_diff(frame_num);
603+
if distance <= MAX_FALLBACK_DISTANCE {
604+
let _ =
605+
req.sender.send(cached.data().to_decoded_frame());
606+
}
607+
}
606608
}
607609
} else {
608610
remaining_requests.push(req);
@@ -635,16 +637,20 @@ impl AVAssetReaderDecoder {
635637
if let Some(cached) = cache.get(&req.frame) {
636638
let data = cached.data().clone();
637639
let _ = req.sender.send(data.to_decoded_frame());
638-
} else if let Some(last) = last_sent_frame.borrow().clone() {
639-
if req.sender.send(last.to_decoded_frame()).is_err() {}
640-
} else if let Some(first) = first_ever_frame.borrow().clone() {
641-
if req.sender.send(first.to_decoded_frame()).is_err() {}
642640
} else {
643-
debug!(
644-
decoder = _name,
645-
requested_frame = req.frame,
646-
"No frame available to send - request dropped"
647-
);
641+
const MAX_FALLBACK_DISTANCE: u32 = 10;
642+
643+
let nearest = cache
644+
.range(..=req.frame)
645+
.next_back()
646+
.or_else(|| cache.range(req.frame..).next());
647+
648+
if let Some((&frame_num, cached)) = nearest {
649+
let distance = req.frame.abs_diff(frame_num);
650+
if distance <= MAX_FALLBACK_DISTANCE {
651+
let _ = req.sender.send(cached.data().to_decoded_frame());
652+
}
653+
}
648654
}
649655
}
650656
}

0 commit comments

Comments
 (0)