Fix proxy decoding path and add proxy generation diagnostics

- RenderWorkerPool::DecodeInputFrame now uses the proxy filename/decoder/stream
  from FootageJob when a proxy is attached, so generated proxies are actually
  used during render.
- Add qDebug/qWarning logging to TimelineWidget::GenerateProxiesForSelectedClips
  and ProxyTask::Run to diagnose why Generate Proxy appears to do nothing.
This commit is contained in:
2026-07-13 10:19:30 +08:00
parent e52570c89f
commit 94250a7690
3 changed files with 54 additions and 23 deletions
@@ -1182,13 +1182,16 @@ void TimelineWidget::SynchronizeSelectedClipsByWaveform()
void TimelineWidget::GenerateProxiesForSelectedClips()
{
if (!ProxyManager::instance() || !sequence()) {
qWarning() << "GenerateProxiesForSelectedClips: ProxyManager or sequence unavailable";
return;
}
const QVector<Footage *> footage = GetSelectedProxyFootage(selected_blocks_);
qDebug() << "GenerateProxiesForSelectedClips: starting proxy generation for" << footage.size() << "footage item(s)";
for (Footage *item : footage) {
const VideoParams video = item->GetFirstEnabledVideoStream();
if (!video.is_valid()) {
qWarning() << "GenerateProxiesForSelectedClips: skipping item with no valid video stream" << item->filename();
continue;
}
@@ -1197,6 +1200,9 @@ void TimelineWidget::GenerateProxiesForSelectedClips()
ProxyManager::instance()->GetOrStartProxy(
item->project()->cache_path(), item->filename(),
video.stream_index(), params);
qDebug() << "GenerateProxiesForSelectedClips: proxy state=" << ProxyManager::ProxyStateToString(proxy.state)
<< "file=" << proxy.filename
<< "cache=" << item->project()->cache_path();
item->SetProxy(proxy.filename, proxy.state, video.stream_index(),
params.version, true);
item->InvalidateAll(Footage::kFilenameInput);