From 8b049e42454ceb398ac6e9d7b69df2eb23d33dda Mon Sep 17 00:00:00 2001 From: Jamie Hardt Date: Fri, 4 Dec 2020 22:22:40 -0800 Subject: [PATCH] Chanegd reader interface broadcast_extension returns an Option<> now --- src/wavereader.rs | 26 +++++++++++++++++--------- 1 file changed, 17 insertions(+), 9 deletions(-) diff --git a/src/wavereader.rs b/src/wavereader.rs index 6da8afd..89a97f9 100644 --- a/src/wavereader.rs +++ b/src/wavereader.rs @@ -10,7 +10,7 @@ use super::bext::Bext; use super::audio_frame_reader::AudioFrameReader; use super::chunks::ReadBWaveChunks; - +use std::io::Cursor; use std::io::{Read, Seek}; @@ -118,18 +118,26 @@ impl WaveReader { Ok( data_length / (format.block_alignment as u64) ) } - /** - * Sample and frame format of this wave file. - */ + + /// Sample and frame format of this wave file. + /// pub fn format(&mut self) -> Result { self.chunk_reader(FMT__SIG, 0)?.read_wave_fmt() } - /** - * The Broadcast-WAV metadata record for this file. - */ - pub fn broadcast_extension(&mut self) -> Result { - self.chunk_reader(BEXT_SIG, 0)?.read_bext() + /// + /// The Broadcast-WAV metadata record for this file, if present. + /// + pub fn broadcast_extension(&mut self) -> Result, ParserError> { + let mut bext_buff : Vec = vec![ ]; + let result = self.read_chunk(BEXT_SIG, 0, &mut bext_buff)?; + if result > 0 { + let mut bext_cursor = Cursor::new(bext_buff); + Ok( Some( bext_cursor.read_bext()? ) ) + } else { + Ok( None) + } + } /// Describe the channels in this file