media_pp/lib.rs
1mod core;
2pub mod elements;
3pub mod error;
4mod platform;
5#[cfg(test)]
6mod test_support;
7
8// Flat re-export: `core/` only exists to group these files on disk (see
9// its module doc) — every external and internal caller keeps using
10// `crate::pipeline`/`media_pp::pipeline` etc., never `crate::core::...`.
11pub use core::{
12 buffer, bus, clock, color, control, driver, element, graph, log, pad, pipeline, playback_clock,
13 pool, pp_log, queue,
14};
15
16// Same flat-namespace reasoning as above, but crate-private: `schedule`/
17// `time` are pacing/rescale internals `crate::elements` builds on, not
18// exposed in any public element's own field/method signature — nothing
19// downstream of this crate needs `PeriodicSchedule`/`ActiveTimeline`/
20// `MediaTimestamp`/`TimeBase` itself. `pub(crate) use` keeps the same
21// `crate::schedule`/`crate::time` paths working for every internal caller
22// without also making them part of this crate's external API surface.
23pub(crate) use core::{schedule, time};
24
25pub use error::{Error, Result};
26
27/// Must be called once before using any element that touches ffmpeg.
28pub fn init() -> Result<()> {
29 ffmpeg_next::init()?;
30 Ok(())
31}