proxy: isolate proxies from export renders and improve proxy workflow

- FootageJob::should_use_proxy() centralizes the proxy decision; worker
  pre-decode now honors the render mode so exports always decode the
  original media (previously every frame was pre-decoded from proxies)
- global Tools > Use Proxy Media toggle with footage invalidation
- ffmpeg -progress parsing for real percentage feedback while generating
- divider mode (1/2, 1/4, 1/8 of source resolution) with UI, proxy
  filename tags and per-footage persistence (pdivider)
- Media Offline warning slat rendered for missing footage
- regression tests: export isolation, relink invalidation, offline slat,
  progress parsing, divider arguments
This commit is contained in:
2026-07-19 21:43:58 +08:00
parent bb40b4923e
commit 0c02ff0d77
21 changed files with 494 additions and 25 deletions
+14
View File
@@ -448,6 +448,20 @@ void Core::set_snapping(const bool &b)
emit snapping_changed(snapping_);
}
void Core::set_use_proxy_media(bool enabled)
{
Config::current()[QStringLiteral("UseProxyMedia")] = enabled;
// Invalidate all footage so viewers re-evaluate with the new proxy state
if (open_project_) {
for (Node *n : open_project_->nodes()) {
if (Footage *footage = dynamic_cast<Footage *>(n)) {
footage->invalidate_all(Footage::k_filename_input);
}
}
}
}
void Core::dialog_about_show()
{
AboutDialog a(false, main_window_);