aboutsummaryrefslogtreecommitdiff
path: root/remuxer/src/demuxers/mod.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-09-13 16:08:42 +0200
committermetamuffin <metamuffin@disroot.org>2025-09-13 16:08:42 +0200
commit044c7e1c75145f1ec9d002b4f6fc4433ff7f9540 (patch)
treedb326c8f2327396ed443a1822936927e7c847494 /remuxer/src/demuxers/mod.rs
parente99bde7a00a161ff5dd91eaf1ce546a9d98cef05 (diff)
downloadjellything-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.rs29
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)>>;
+}