pub(crate) fn decode_layers(
project: &Project,
t: f64,
w: u32,
h: u32,
pool: &mut DecoderPool,
spare: &mut Vec<Frame>,
text: &mut TextRasterizer,
shapes: &mut ShapeRasterizer,
comp: &mut Compositor,
) -> LayerSetExpand description
Everything engine::gpu needs for one timeline instant (its LayerSet contract): one bitmap per
visual clip on screen at t — both clips of a transition, which the renderer draws virtually
extended past their own bounds — plus the subtitle bitmap under LayerSet::SUBTITLES. Media is
decoded at the size the compositor would have used (placement, capped at the source’s native size);
text/shape clips are rasterised and nested sequences composited on the CPU, all at (w, h) — which is
already the quality-scaled render size, so gpu::render_size must not be applied again. Adjustment
layers need no bitmap (they re-process the canvas). Effects that needs_motion() also get neighbours.