diff options
author | metamuffin <metamuffin@disroot.org> | 2025-09-13 16:08:42 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-09-13 16:08:42 +0200 |
commit | 044c7e1c75145f1ec9d002b4f6fc4433ff7f9540 (patch) | |
tree | db326c8f2327396ed443a1822936927e7c847494 /remuxer/src/demuxers/mod.rs | |
parent | e99bde7a00a161ff5dd91eaf1ce546a9d98cef05 (diff) | |
download | jellything-044c7e1c75145f1ec9d002b4f6fc4433ff7f9540.tar jellything-044c7e1c75145f1ec9d002b4f6fc4433ff7f9540.tar.bz2 jellything-044c7e1c75145f1ec9d002b4f6fc4433ff7f9540.tar.zst |
start remuxer crate rewrite; added matroska demuxer and format detection
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)>>; +} |