Skip to main content

oxideav_basic/
lib.rs

1//! Bundled simple formats: codecs and containers that are small and standard
2//! enough to share one crate. Anything larger gets its own crate.
3
4pub mod pcm;
5pub mod slin;
6pub mod wav;
7pub mod y4m;
8
9use oxideav_core::CodecRegistry;
10use oxideav_core::ContainerRegistry;
11use oxideav_core::RuntimeContext;
12
13/// Register every codec provided by `oxideav-basic` in a [`CodecRegistry`].
14pub fn register_codecs(reg: &mut CodecRegistry) {
15    pcm::register(reg);
16}
17
18/// Register every container provided by `oxideav-basic` in a [`ContainerRegistry`].
19pub fn register_containers(reg: &mut ContainerRegistry) {
20    wav::register(reg);
21    slin::register(reg);
22    y4m::register(reg);
23}
24
25/// Unified entry point: install every codec and container provided by
26/// `oxideav-basic` into a [`RuntimeContext`].
27///
28/// Also wired into [`oxideav_meta::register_all`] via the
29/// [`oxideav_core::register!`] macro below.
30pub fn register(ctx: &mut RuntimeContext) {
31    register_codecs(&mut ctx.codecs);
32    register_containers(&mut ctx.containers);
33}
34
35oxideav_core::register!("basic", register);
36
37#[cfg(test)]
38mod tests {
39    use super::*;
40
41    #[test]
42    fn register_via_runtime_context_installs_factories() {
43        let mut ctx = RuntimeContext::new();
44        register(&mut ctx);
45        assert!(
46            ctx.codecs.decoder_ids().next().is_some(),
47            "register(ctx) should install codec decoder factories"
48        );
49        assert!(
50            ctx.containers.demuxer_names().next().is_some(),
51            "register(ctx) should install container demuxer factories"
52        );
53    }
54}