fix: trace debug mode — text overlay only, no bounding boxes
Debug overlay now shows:
File UUID: {uuid}
Trace {id}: start_frame={n} Identity: {name}
Cut: {id}
Frame: {n} Time: {t}s
This commit is contained in:
@@ -319,10 +319,7 @@ async fn trace_video(
|
||||
.unwrap());
|
||||
}
|
||||
|
||||
// === DEBUG MODE: with overlays ===
|
||||
let total_frames = (duration * fps).round() as i32;
|
||||
let pad_frames = (padding * fps) as i32;
|
||||
|
||||
// === DEBUG MODE: text overlay without bounding boxes ===
|
||||
// Query identity info for this trace
|
||||
let identities_table = schema::table_name("identities");
|
||||
let identity_name: String = sqlx::query_scalar(&format!(
|
||||
@@ -344,38 +341,28 @@ async fn trace_video(
|
||||
.unwrap_or(None)
|
||||
.unwrap_or(0);
|
||||
|
||||
let mut parts: Vec<String> = Vec::new();
|
||||
|
||||
// Top-left info block
|
||||
let frame_offset = first_frame as i64 - (padding * fps) as i64;
|
||||
let info_lines = format!(
|
||||
"drawtext=text='Trace: {} Cut: {} {}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=12",
|
||||
trace_id, cut_id, identity_name
|
||||
let trace_start = rows[0].0;
|
||||
let fps_str = &fps.to_string();
|
||||
|
||||
// Static trace info (shown throughout)
|
||||
let info_block = format!(
|
||||
"drawtext=text='File UUID: {}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=12", file_uuid
|
||||
);
|
||||
let trace_block = format!(
|
||||
"drawtext=text='Trace {}: start_frame={} Identity: {}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=34", trace_id, trace_start, identity_name
|
||||
);
|
||||
let cut_block = format!(
|
||||
"drawtext=text='Cut: {}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=56", cut_id
|
||||
);
|
||||
parts.push(info_lines);
|
||||
parts.push(format!(
|
||||
"drawtext=text='Frame: %{{eif:n+{}:d}} UUID: {}':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=34",
|
||||
frame_offset, file_uuid
|
||||
));
|
||||
|
||||
for (i, (frame, x, y, w, h)) in rows.iter().enumerate() {
|
||||
let start_off = frame - first_frame + pad_frames;
|
||||
let end_off = if i + 1 < rows.len() {
|
||||
rows[i + 1].0 - first_frame + pad_frames
|
||||
} else {
|
||||
total_frames
|
||||
};
|
||||
parts.push(format!(
|
||||
"drawbox=x={}:y={}:w={}:h={}:color=red@0.8:thickness=8:enable='between(n,{},{})'",
|
||||
x, y, w, h, start_off, end_off - 1
|
||||
));
|
||||
parts.push(format!(
|
||||
"drawtext=text='{}':x={}:y={}:fontsize=20:fontcolor=white:box=1:boxcolor=red@0.8:enable='between(n,{},{})'",
|
||||
trace_id, x + 4, y + 4, start_off, end_off - 1
|
||||
));
|
||||
}
|
||||
// Per-frame info (frame number, time)
|
||||
let frame_info = format!(
|
||||
"drawtext=text='Frame: %{{eif:n+{}:d}} Time: %{{eif:(n+{})*100/{}:d}}s':fontsize=14:fontcolor=white:box=1:boxcolor=black@0.6:x=10:y=78",
|
||||
frame_offset, frame_offset, fps_str
|
||||
);
|
||||
|
||||
let filter_text = parts.join(",");
|
||||
let filter_text = format!("{}, {}, {}, {}", info_block, trace_block, cut_block, frame_info);
|
||||
let filter_file = std::env::temp_dir().join(format!("vf_{}.txt", uuid::Uuid::new_v4()));
|
||||
let _ = std::fs::write(&filter_file, &filter_text);
|
||||
let filter_path = filter_file.to_str().unwrap_or("");
|
||||
|
||||
Reference in New Issue
Block a user