/* This file is part of jellything (https://codeberg.org/metamuffin/jellything) which is licensed under the GNU Affero General Public License (version 3); see /COPYING. Copyright (C) 2025 metamuffin */ pub mod matroska; use crate::{ ContainerFormat, muxers::matroska::{MatroskaFragmentMuxer, WebmFragmentMuxer}, }; use anyhow::Result; use std::io::Write; use winter_matroska::{Cluster, Info, Tracks}; pub trait FragmentMuxer { fn write_fragment( out: &mut dyn Write, info: Info, tracks: Tracks, cluster: Cluster, ) -> Result<()>; } pub fn write_fragment( container: ContainerFormat, out: &mut dyn Write, info: Info, tracks: Tracks, cluster: Cluster, ) -> Result<()> { match container { ContainerFormat::Matroska => { MatroskaFragmentMuxer::write_fragment(out, info, tracks, cluster) } ContainerFormat::Webm => WebmFragmentMuxer::write_fragment(out, info, tracks, cluster), _ => unimplemented!(), } }