pub struct Context {
pub bus: Bus,
pub pipeline_id: Arc<str>,
pub graph: PipelineGraph,
pub clock: Arc<Clock>,
pub playback_clock: Arc<PlaybackClock>,
pub source_id: ElementId,
/* private fields */
}Expand description
Everything a crate::pipeline::ChainBuilder/crate::elements::Tee
needs to wire itself into a crate::pipeline::Pipeline — bundled into
one Arc instead of threading bus/pipeline_id/graph/the wall and
playback clocks through separately. Built once per source by
crate::pipeline::PipelineBuilder::add_source (what
crate::pipeline::Pipeline::new itself calls, for its own
single-source case) and handed to that source’s own wire closure; a
crate::elements::Tee keeps its own clone while it is alive, and its
crate::elements::TeeHandle accesses that clone weakly so retaining
the handle cannot keep the pipeline’s Bus open after the Tee itself
is gone.
Fields§
§bus: BusSender used by this source and its attached branches for asynchronous errors, EOS, drops, and seek completion.
pipeline_id: Arc<str>Caller-selected identity of the pipeline currently being wired.
graph: PipelineGraphShared live topology graph updated by successful attach and detach operations.
clock: Arc<Clock>Wall-time clock shared by paced elements in this pipeline.
playback_clock: Arc<PlaybackClock>Shared media-position clock used to hand video scheduling from the wall clock to an audio output master without changing pipelines.
source_id: ElementIdGraph identity of the source whose wiring closure owns this context.
Implementations§
Source§impl Context
impl Context
Sourcepub fn branch(self: &Arc<Self>) -> ChainBuilder
pub fn branch(self: &Arc<Self>) -> ChainBuilder
Starts a detached branch plan scoped to this source and pipeline.
Building the branch allocates its runtime elements but does not publish
them in the graph until Self::attach succeeds.
Sourcepub fn attach<S: Source>(
&self,
source: &mut S,
pad_index: usize,
branch: DetachedBranch,
) -> Result<BranchId>
pub fn attach<S: Source>( &self, source: &mut S, pad_index: usize, branch: DetachedBranch, ) -> Result<BranchId>
Atomically attaches a completed branch to one source pad.
Returns the stable branch identity used by later dynamic graph
operations. An invalid index or already-linked pad returns a
GraphError without changing either the runtime connection or graph.
If a lifecycle or seek operation is in progress, this returns
GraphError::TimelineOperationInProgress immediately; build a fresh
detached branch and retry after that operation finishes.