Skip to content

Commit 5c6fe47

Browse files
committed
cleanup
1 parent f478b4d commit 5c6fe47

File tree

6 files changed

+15
-147
lines changed

6 files changed

+15
-147
lines changed

apps/desktop/src-tauri/src/editor_window.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ async fn do_prewarm(app: AppHandle, path: PathBuf) -> PendingResult {
2929
path,
3030
Box::new(move |output| {
3131
let ws_frame = match output {
32-
cap_editor::editor::EditorFrameOutput::Nv12(frame) => WSFrame {
32+
cap_editor::EditorFrameOutput::Nv12(frame) => WSFrame {
3333
data: frame.data,
3434
width: frame.width,
3535
height: frame.height,
@@ -39,7 +39,7 @@ async fn do_prewarm(app: AppHandle, path: PathBuf) -> PendingResult {
3939
format: WSFrameFormat::Nv12,
4040
created_at: Instant::now(),
4141
},
42-
cap_editor::editor::EditorFrameOutput::Rgba(frame) => WSFrame {
42+
cap_editor::EditorFrameOutput::Rgba(frame) => WSFrame {
4343
data: frame.data,
4444
width: frame.width,
4545
height: frame.height,
@@ -234,7 +234,7 @@ impl EditorInstances {
234234
path,
235235
Box::new(move |output| {
236236
let ws_frame = match output {
237-
cap_editor::editor::EditorFrameOutput::Nv12(frame) => WSFrame {
237+
cap_editor::EditorFrameOutput::Nv12(frame) => WSFrame {
238238
data: frame.data,
239239
width: frame.width,
240240
height: frame.height,
@@ -244,7 +244,7 @@ impl EditorInstances {
244244
format: WSFrameFormat::Nv12,
245245
created_at: Instant::now(),
246246
},
247-
cap_editor::editor::EditorFrameOutput::Rgba(frame) => WSFrame {
247+
cap_editor::EditorFrameOutput::Rgba(frame) => WSFrame {
248248
data: frame.data,
249249
width: frame.width,
250250
height: frame.height,

apps/desktop/src-tauri/src/frame_ws.rs

Lines changed: 2 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -9,94 +9,6 @@ static LAST_LOG_TIME: AtomicU64 = AtomicU64::new(0);
99

1010
const NV12_FORMAT_MAGIC: u32 = 0x4e563132;
1111

12-
fn convert_to_nv12(data: &[u8], width: u32, height: u32, stride: u32) -> Vec<u8> {
13-
let width = (width & !1) as usize;
14-
let height = (height & !1) as usize;
15-
16-
if width == 0 || height == 0 {
17-
return Vec::new();
18-
}
19-
20-
let y_size = width * height;
21-
let uv_size = width * (height / 2);
22-
let stride = stride as usize;
23-
24-
let mut output = vec![0u8; y_size + uv_size];
25-
let (y_plane, uv_plane) = output.split_at_mut(y_size);
26-
27-
for row in 0..height {
28-
let src_offset = row * stride;
29-
let y_offset = row * width;
30-
31-
if src_offset + width * 4 > data.len() {
32-
continue;
33-
}
34-
35-
let src_row = &data[src_offset..];
36-
let y_row = &mut y_plane[y_offset..y_offset + width];
37-
38-
for x in 0..width {
39-
let px = x * 4;
40-
let r = src_row[px] as i32;
41-
let g = src_row[px + 1] as i32;
42-
let b = src_row[px + 2] as i32;
43-
y_row[x] = (((66 * r + 129 * g + 25 * b + 128) >> 8) + 16).min(255) as u8;
44-
}
45-
46-
if row % 2 == 0 {
47-
let uv_offset = (row / 2) * width;
48-
let uv_row = &mut uv_plane[uv_offset..uv_offset + width];
49-
50-
let mut x = 0;
51-
while x < width {
52-
let px0 = x * 4;
53-
let px1 = (x + 1) * 4;
54-
55-
let r0 = src_row[px0] as i32;
56-
let g0 = src_row[px0 + 1] as i32;
57-
let b0 = src_row[px0 + 2] as i32;
58-
let r1 = src_row[px1] as i32;
59-
let g1 = src_row[px1 + 1] as i32;
60-
let b1 = src_row[px1 + 2] as i32;
61-
62-
let avg_r = (r0 + r1) >> 1;
63-
let avg_g = (g0 + g1) >> 1;
64-
let avg_b = (b0 + b1) >> 1;
65-
66-
uv_row[x] = (((-38 * avg_r - 74 * avg_g + 112 * avg_b + 128) >> 8) + 128)
67-
.clamp(0, 255) as u8;
68-
uv_row[x + 1] = (((112 * avg_r - 94 * avg_g - 18 * avg_b + 128) >> 8) + 128)
69-
.clamp(0, 255) as u8;
70-
71-
x += 2;
72-
}
73-
}
74-
}
75-
76-
output
77-
}
78-
79-
fn pack_nv12_frame(
80-
data: Vec<u8>,
81-
width: u32,
82-
height: u32,
83-
frame_number: u32,
84-
target_time_ns: u64,
85-
) -> Vec<u8> {
86-
let y_stride = width;
87-
let metadata_size = 28;
88-
let mut output = Vec::with_capacity(data.len() + metadata_size);
89-
output.extend_from_slice(&data);
90-
output.extend_from_slice(&y_stride.to_le_bytes());
91-
output.extend_from_slice(&height.to_le_bytes());
92-
output.extend_from_slice(&width.to_le_bytes());
93-
output.extend_from_slice(&frame_number.to_le_bytes());
94-
output.extend_from_slice(&target_time_ns.to_le_bytes());
95-
output.extend_from_slice(&NV12_FORMAT_MAGIC.to_le_bytes());
96-
97-
output
98-
}
99-
10012
fn pack_frame_data(
10113
mut data: Vec<u8>,
10214
stride: u32,
@@ -172,49 +84,6 @@ pub struct WSFrame {
17284
pub created_at: Instant,
17385
}
17486

175-
impl WSFrame {
176-
pub fn from_rendered_frame_nv12(
177-
data: Vec<u8>,
178-
width: u32,
179-
height: u32,
180-
stride: u32,
181-
frame_number: u32,
182-
target_time_ns: u64,
183-
) -> Self {
184-
let nv12_data = convert_to_nv12(&data, width, height, stride);
185-
Self {
186-
data: nv12_data,
187-
width: width & !1,
188-
height: height & !1,
189-
stride: width & !1,
190-
frame_number,
191-
target_time_ns,
192-
format: WSFrameFormat::Nv12,
193-
created_at: Instant::now(),
194-
}
195-
}
196-
}
197-
198-
fn pack_ws_frame(frame: WSFrame) -> Vec<u8> {
199-
match frame.format {
200-
WSFrameFormat::Nv12 => pack_nv12_frame(
201-
frame.data,
202-
frame.width,
203-
frame.height,
204-
frame.frame_number,
205-
frame.target_time_ns,
206-
),
207-
WSFrameFormat::Rgba => pack_frame_data(
208-
frame.data,
209-
frame.stride,
210-
frame.height,
211-
frame.width,
212-
frame.frame_number,
213-
frame.target_time_ns,
214-
),
215-
}
216-
}
217-
21887
fn pack_ws_frame_ref(frame: &WSFrame) -> Vec<u8> {
21988
match frame.format {
22089
WSFrameFormat::Nv12 => pack_nv12_frame_ref(
@@ -355,7 +224,7 @@ pub async fn create_watch_frame_ws(
355224
tokio::select! {
356225
_ = server => {},
357226
_ = cancel_token.cancelled() => {
358-
println!("WebSocket server shutting down");
227+
tracing::info!("WebSocket server shutting down");
359228
}
360229
}
361230
});
@@ -385,7 +254,6 @@ pub async fn create_frame_ws(frame_tx: broadcast::Sender<WSFrame>) -> (u16, Canc
385254
}
386255

387256
async fn handle_socket(mut socket: WebSocket, mut camera_rx: broadcast::Receiver<WSFrame>) {
388-
println!("socket connection established");
389257
tracing::info!("Socket connection established");
390258
let now = std::time::Instant::now();
391259

@@ -438,7 +306,6 @@ pub async fn create_frame_ws(frame_tx: broadcast::Sender<WSFrame>) -> (u16, Canc
438306
}
439307

440308
let elapsed = now.elapsed();
441-
println!("Websocket closing after {elapsed:.2?}");
442309
tracing::info!("Websocket closing after {elapsed:.2?}");
443310
}
444311

@@ -457,7 +324,7 @@ pub async fn create_frame_ws(frame_tx: broadcast::Sender<WSFrame>) -> (u16, Canc
457324
tokio::select! {
458325
_ = server => {},
459326
_ = cancel_token.cancelled() => {
460-
println!("WebSocket server shutting down");
327+
tracing::info!("WebSocket server shutting down");
461328
}
462329
}
463330
});

apps/desktop/src-tauri/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3853,7 +3853,7 @@ async fn resume_uploads(app: AppHandle) -> Result<(), String> {
38533853
async fn create_editor_instance_impl(
38543854
app: &AppHandle,
38553855
path: PathBuf,
3856-
frame_cb: Box<dyn FnMut(cap_editor::editor::EditorFrameOutput) + Send>,
3856+
frame_cb: Box<dyn FnMut(cap_editor::EditorFrameOutput) + Send>,
38573857
) -> Result<Arc<EditorInstance>, String> {
38583858
let app = app.clone();
38593859

crates/editor/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
mod audio;
2-
pub mod editor;
2+
mod editor;
33
mod editor_instance;
44
mod playback;
55
mod segments;
66

77
pub use audio::AudioRenderer;
8+
pub use editor::EditorFrameOutput;
89
pub use editor_instance::{EditorInstance, EditorState, SegmentMedia, create_segments};
910
pub use segments::get_audio_segments;

crates/editor/src/playback.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -716,12 +716,11 @@ impl Playback {
716716
if last_stats_time.elapsed() >= stats_interval {
717717
let effective_fps =
718718
total_frames_rendered as f64 / start.elapsed().as_secs_f64().max(0.001);
719-
let recent_rendered = total_frames_rendered;
720719
let buffer_len = prefetch_buffer.len();
721720
info!(
722721
effective_fps = format!("{:.1}", effective_fps),
723-
rendered = recent_rendered,
724-
skipped = total_frames_skipped,
722+
total_rendered = total_frames_rendered,
723+
total_skipped = total_frames_skipped,
725724
cache_hits = cache_hits,
726725
prefetch_hits = prefetch_hits,
727726
sync_decodes = sync_decodes,

crates/rendering/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -542,9 +542,10 @@ pub async fn render_video_to_channel(
542542
}
543543

544544
let total_time = start_time.elapsed();
545-
println!(
546-
"Render complete. Processed {frame_number} frames in {:?} seconds",
547-
total_time.as_secs_f32()
545+
tracing::info!(
546+
frames = frame_number,
547+
elapsed_secs = format!("{:.2}", total_time.as_secs_f32()),
548+
"Render complete"
548549
);
549550

550551
Ok(())

0 commit comments

Comments
 (0)