From 0fe48987c336b9b50cba09355aa3c1cf11740edc Mon Sep 17 00:00:00 2001 From: metamuffin Date: Tue, 16 Sep 2025 13:40:50 +0200 Subject: started flac demuxer --- remuxer/src/demuxers/mod.rs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) (limited to 'remuxer/src/demuxers/mod.rs') diff --git a/remuxer/src/demuxers/mod.rs b/remuxer/src/demuxers/mod.rs index e47e3d7..8940ca5 100644 --- a/remuxer/src/demuxers/mod.rs +++ b/remuxer/src/demuxers/mod.rs @@ -4,8 +4,13 @@ Copyright (C) 2025 metamuffin */ +pub mod flac; pub mod matroska; +use crate::{ + ContainerFormat, + demuxers::{flac::FlacDemuxer, matroska::MatroskaDemuxer}, +}; use anyhow::Result; use std::io::{Read, Seek}; use winter_matroska::{Attachments, Chapters, Cluster, Cues, Info, Tags, Tracks}; @@ -16,14 +21,23 @@ impl ReadSeek for T {} pub trait DemuxerNew: Demuxer + Sized { fn new(reader: Box) -> Self; } + +#[rustfmt::skip] pub trait Demuxer { - fn info(&mut self) -> Result; - fn tracks(&mut self) -> Result; - fn chapters(&mut self) -> Result; - fn attachments(&mut self) -> Result; - fn tags(&mut self) -> Result; - fn cues(&mut self) -> Result; + fn info(&mut self) -> Result> { Ok(None) } + fn tracks(&mut self) -> Result> { Ok(None) } + fn chapters(&mut self) -> Result> { Ok(None) } + fn attachments(&mut self) -> Result> { Ok(None) } + fn tags(&mut self) -> Result> { Ok(None) } + fn cues(&mut self) -> Result> { Ok(None) } fn seek_cluster(&mut self, position: Option) -> Result<()>; fn read_cluster(&mut self) -> Result>; } + +pub fn create_demuxer(container: ContainerFormat, reader: Box) -> Box { + match container { + ContainerFormat::Matroska | ContainerFormat::Webm => Box::new(MatroskaDemuxer::new(reader)), + ContainerFormat::Flac => Box::new(FlacDemuxer::new(reader)), + } +} -- cgit v1.2.3-70-g09d2