From f4b27f85450a9d40d57b4e4d76397243d0a8a91c Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Sun, 13 Dec 2020 12:30:43 -0800 Subject: [PATCH] Update wavereader.rs --- src/wavereader.rs | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/src/wavereader.rs b/src/wavereader.rs index f8c5592..184d29d 100644 --- a/src/wavereader.rs +++ b/src/wavereader.rs @@ -12,7 +12,7 @@ use super::chunks::ReadBWaveChunks; use super::cue::Cue; use std::io::Cursor; -use std::io::{Read, Seek}; +use std::io::{Read, Seek, SeekFrom}; /** @@ -385,10 +385,10 @@ impl WaveReader { // As time passes thi get smore obnoxious because I haven't implemented recursive chunk // parsing in the raw parser and I'm working around it - fn chunk_reader(&mut self, signature: FourCC, at_index: u32) -> Result, ParserError> { - let (start, length) = self.get_chunk_extent_at_index(signature, at_index)?; - Ok( RawChunkReader::new(&mut self.inner, start, length) ) - } + // fn chunk_reader(&mut self, signature: FourCC, at_index: u32) -> Result, ParserError> { + // let (start, length) = self.get_chunk_extent_at_index(signature, at_index)?; + // Ok( RawChunkReader::new(&mut self.inner, start, length) ) + // } fn read_list(&mut self, ident: FourCC, buffer: &mut Vec) -> Result { if let Some(index) = self.get_list_form(ident)? { @@ -399,18 +399,11 @@ impl WaveReader { } fn read_chunk(&mut self, ident: FourCC, at: u32, buffer: &mut Vec) -> Result { - let result = self.chunk_reader(ident, at); + let (start, length) = self.get_chunk_extent_at_index(ident, at)?; - match result { - Ok(mut chunk) => { - match chunk.read_to_end(buffer) { - Ok(read) => Ok(read), - Err(err) => Err(err.into()) - } - }, - Err(ParserError::ChunkMissing { signature : _} ) => Ok(0), - Err( any ) => Err(any.into()) - } + self.inner.seek(SeekFrom::Start(start)); + + Ok( self.inner.read_to_end(buffer)? ) } /// Extent of every chunk with the given fourcc