- fn synth_audio(&mut self, dsp: &mut DSP, abuf: &mut NABufferType, srate_idx: usize) {
+ fn decode_sbr(&mut self, buf: &[u8], has_crc: bool, cbs: &SBRCodebooks, srate: u32) -> DecoderResult<()> {
+ let mut br = BitReader::new(buf, BitReaderMode::BE);
+ if has_crc {
+ let _bs_sbr_crc_bits = br.read(10)?;
+ }
+ if br.read_bool()? {
+ if let Ok(hdr) = SBRHeader::read(&mut br) {
+ if self.sbr_hdr.differs_from(&hdr) {
+ self.do_sbr = self.sbr_state.init(&hdr, srate).is_ok();
+ self.sbr_ch[0].reset();
+ self.sbr_ch[1].reset();
+ }
+ self.sbr_hdr = hdr;
+ } else {
+ self.do_sbr = false;
+ }
+ }
+ if self.do_sbr {
+ if !self.pair {
+ sbr_read_sce(&mut br, self.sbr_hdr.amp_res, &self.sbr_state, cbs, &mut self.sbr_ch[0])?;
+ } else {
+ sbr_read_cpe(&mut br, self.sbr_hdr.amp_res, &self.sbr_state, cbs, &mut self.sbr_ch)?;
+ }
+ }
+
+ Ok(())
+ }
+ fn synth_audio(&mut self, dsp: &mut DSP, abuf: &mut NABufferType, srate_idx: usize, upsample: bool) {