Expand description
Multi-track frame-level pipeline executor with DTS-ordered interleaving.
This module provides MultiTrackExecutor — the real decode → filter →
encode engine for oximedia-transcode. It connects the FrameDecoder /
FilterGraph / FrameEncoder plumbing from pipeline_context to a
container-level output via a Muxer and performs DTS-ordered
interleaving across all tracks using a min-heap.
§Architecture
[FrameDecoder₀] → FilterGraph₀ → [FrameEncoder₀] ─┐
[FrameDecoder₁] → FilterGraph₁ → [FrameEncoder₁] ─┤→ DTS min-heap → Muxer
… ┘§Execute loop
- For each active track, call
FrameDecoder::decode_next. - Apply the track’s
FilterGraph::applyto the decoded frame. - Pass filtered frames to the track’s
FrameEncoder::encode_frame. - Push resulting encoded bytes as a
StagedPacketonto the DTS min-heap. - After all tracks are exhausted, flush each encoder.
- Pop the heap in DTS order and write every packet to the
Muxer.
The MultiTrackExecutor::step method performs one packet-cycle (one pass
through all tracks) and pushes ready encoded data into the internal staging
buffer, so a segment or parallel driver can call it externally.
Structs§
- Multi
Track Executor - Frame-level multi-track decode → filter → encode executor with DTS-ordered muxing.
- Multi
Track Stats - Statistics returned by
MultiTrackExecutor::execute. - PerTrack
- One logical media track wired through decode → filter → encode.