diff options
Diffstat (limited to 'remuxer/src/demuxers/mod.rs')
-rw-r--r-- | remuxer/src/demuxers/mod.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/remuxer/src/demuxers/mod.rs b/remuxer/src/demuxers/mod.rs new file mode 100644 index 0000000..e47e3d7 --- /dev/null +++ b/remuxer/src/demuxers/mod.rs @@ -0,0 +1,29 @@ +/* + 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 <metamuffin.org> +*/ + +pub mod matroska; + +use anyhow::Result; +use std::io::{Read, Seek}; +use winter_matroska::{Attachments, Chapters, Cluster, Cues, Info, Tags, Tracks}; + +pub trait ReadSeek: Read + Seek {} +impl<T: Read + Seek> ReadSeek for T {} + +pub trait DemuxerNew: Demuxer + Sized { + fn new(reader: Box<dyn ReadSeek>) -> Self; +} +pub trait Demuxer { + fn info(&mut self) -> Result<Info>; + fn tracks(&mut self) -> Result<Tracks>; + fn chapters(&mut self) -> Result<Chapters>; + fn attachments(&mut self) -> Result<Attachments>; + fn tags(&mut self) -> Result<Tags>; + fn cues(&mut self) -> Result<Cues>; + + fn seek_cluster(&mut self, position: Option<u64>) -> Result<()>; + fn read_cluster(&mut self) -> Result<Option<(u64, Cluster)>>; +} |