feat(gpu-decode): zero-copy hardware imports and the planar pipeline
Adds VAAPI DMA-BUF, D3D11VA shared-handle and VideoToolbox IOSurface imports behind a tri-state outcome (imported / unsupported / failed), planar textures with bounded residency and a CPU staging fallback, the staged montage decode path, reference-counted decoder frames, VAAPI-first device selection on Linux, and the host-GPU context plumbing used by the app and worker. See docs/zh/plans/render-pipeline-threads.md (M5).
This commit is contained in:
@@ -295,6 +295,13 @@ impl ExportTask {
|
||||
"Render frame readback for the encoder failed: {e:?}"
|
||||
))
|
||||
})?,
|
||||
// Unresolved planar frames never reach an encoder; the
|
||||
// decode path resolves them before delivery.
|
||||
Texture::Planar(_) => {
|
||||
return Err(Error::Failed(
|
||||
"unresolved planar texture for the encoder".into(),
|
||||
))
|
||||
}
|
||||
};
|
||||
let frame = &frame;
|
||||
let params = CommonVideoParams::new_basic(
|
||||
|
||||
@@ -1181,3 +1181,4 @@ pub fn add_track_command(project: ProjectRef, list: NodeId) -> UndoCommand {
|
||||
kind: TrackType::Video,
|
||||
})
|
||||
}
|
||||
kind: TrackType::Video,
|
||||
|
||||
Reference in New Issue
Block a user