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/matroska.rs | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) (limited to 'remuxer/src/demuxers/matroska.rs') diff --git a/remuxer/src/demuxers/matroska.rs b/remuxer/src/demuxers/matroska.rs index 000970e..6301f15 100644 --- a/remuxer/src/demuxers/matroska.rs +++ b/remuxer/src/demuxers/matroska.rs @@ -141,32 +141,37 @@ impl MatroskaDemuxer { self.reader.read_exact(&mut buffer)?; Ok(Tag::read(&buffer)?) } - pub fn read_segment_tag(&mut self, name: &'static str, tag: u64) -> Result { + pub fn read_segment_tag( + &mut self, + name: &'static str, + tag: u64, + ) -> Result> { debug!("reading {name:?}"); - let size = self - .seek_to_segment_tag(tag)? - .ok_or(anyhow!("{name} tag missing"))?; + let Some(size) = self.seek_to_segment_tag(tag)? else { + return Ok(None); + }; self.read_tag(size) .context(anyhow!("parsing {name} failed")) + .map(Some) } } impl Demuxer for MatroskaDemuxer { - fn info(&mut self) -> Result { + fn info(&mut self) -> Result> { self.read_segment_tag("Info", Segment::TAG_INFO) } - fn tracks(&mut self) -> Result { + fn tracks(&mut self) -> Result> { self.read_segment_tag("Tracks", Segment::TAG_TRACKS) } - fn chapters(&mut self) -> Result { + fn chapters(&mut self) -> Result> { self.read_segment_tag("Chapters", Segment::TAG_CHAPTERS) } - fn attachments(&mut self) -> Result { + fn attachments(&mut self) -> Result> { self.read_segment_tag("Attachments", Segment::TAG_ATTACHMENTS) } - fn tags(&mut self) -> Result { + fn tags(&mut self) -> Result> { self.read_segment_tag("Tags", Segment::TAG_TAGS) } - fn cues(&mut self) -> Result { + fn cues(&mut self) -> Result> { self.read_segment_tag("Cues", Segment::TAG_CUES) } -- cgit v1.2.3-70-g09d2