diff options
author | metamuffin <metamuffin@disroot.org> | 2023-12-17 14:49:38 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2023-12-17 14:49:38 +0100 |
commit | 61dc9b1069c2763fbe075d70750ade9e2482131a (patch) | |
tree | e083c5a4aca625303b58bb4ebe4700c600ed7b2f | |
parent | 2e6f2a2d21a0ba9a5c8f13bf27e64615144cf222 (diff) | |
download | jellything-61dc9b1069c2763fbe075d70750ade9e2482131a.tar jellything-61dc9b1069c2763fbe075d70750ade9e2482131a.tar.bz2 jellything-61dc9b1069c2763fbe075d70750ade9e2482131a.tar.zst |
minimal refactor in remux
-rw-r--r-- | matroska/src/read.rs | 14 | ||||
-rw-r--r-- | remuxer/src/import/mod.rs | 6 |
2 files changed, 17 insertions, 3 deletions
diff --git a/matroska/src/read.rs b/matroska/src/read.rs index cb3e45e..42f0e34 100644 --- a/matroska/src/read.rs +++ b/matroska/src/read.rs @@ -46,12 +46,14 @@ impl EbmlReader { } } + #[inline] pub fn read_byte(&mut self) -> Result<u8> { let mut b = [0u8]; self.inner.read_exact(&mut b).map_err(Error::Io)?; self.position += 1; Ok(b[0]) } + pub fn read_buf(&mut self, size: impl Into<usize>) -> Result<Vec<u8>> { let size = size.into(); let mut b = vec![0u8; size]; @@ -59,6 +61,7 @@ impl EbmlReader { self.position += size; Ok(b) } + pub fn read_vint_len(&mut self) -> Result<(u64, usize)> { let s = self.read_byte()?; let len = s.leading_zeros() + 1; @@ -73,20 +76,30 @@ impl EbmlReader { } Ok((value, len as usize)) } + + #[inline] pub fn read_vint(&mut self) -> Result<u64> { Ok(self.read_vint_len()?.0) } + + #[inline] pub fn read_utf8(&mut self, size: impl Into<usize>) -> Result<String> { let b = self.read_buf(size)?; Ok(String::from_utf8(b).map_err(|_| Error::InvalidUTF8)?) } + + #[inline] pub fn read_tag_id(&mut self) -> Result<u64> { let (value, len) = self.read_vint_len()?; Ok(value + (1 << (7 * len))) } + + #[inline] pub fn read_tag_size(&mut self) -> Result<EbmlSize> { Ok(EbmlSize::from_vint(self.read_vint_len()?)) } + + /// reads *some* amount of tags from the stream and pushes it to the queue. pub fn read_stuff(&mut self) -> Result<()> { while let Some(e) = self.stack.last().copied() { if let Some(end) = e.end { @@ -284,6 +297,7 @@ impl<T: Read> ReadExt for T { } Ok((value, len as usize)) } + #[inline] fn read_vint(&mut self) -> Result<u64> { Ok(self.read_vint_len()?.0) } diff --git a/remuxer/src/import/mod.rs b/remuxer/src/import/mod.rs index 0ce8b47..d2e0f3c 100644 --- a/remuxer/src/import/mod.rs +++ b/remuxer/src/import/mod.rs @@ -247,9 +247,9 @@ fn import_read_segment(segment: &mut Unflatten) -> Result<MatroskaMetadata> { height: height.unwrap(), }, 2 => SourceTrackKind::Audio { - bit_depth: bit_depth.unwrap_or(0) as usize, // TODO - channels: channels.unwrap(), - sample_rate: sample_rate.unwrap(), + bit_depth: bit_depth.unwrap_or(0) as usize, // TODO + channels: channels.unwrap_or(1), // TODO + sample_rate: sample_rate.unwrap_or(41_100.0), // TODO }, 17 => SourceTrackKind::Subtitles, _ => bail!("invalid track type"), |