X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-mpeg%2Fsrc%2Fcodecs%2Faac%2Fmod.rs;h=655b45ba5d9823597362d84a304742cbc85fd9a5;hp=65148534a0d929ca517c71cf4650cf9346ad6dcb;hb=HEAD;hpb=0399d1ff36852b260e4a170475963a623bf63abd diff --git a/nihav-mpeg/src/codecs/aac/mod.rs b/nihav-mpeg/src/codecs/aac/mod.rs index 6514853..e37e812 100644 --- a/nihav-mpeg/src/codecs/aac/mod.rs +++ b/nihav-mpeg/src/codecs/aac/mod.rs @@ -330,12 +330,14 @@ impl ChannelPair { self.ms_used[g][sfb] = br.read_bool()?; } } + } else { + self.ms_used = [[false; MAX_SFBS]; MAX_WINDOWS]; } self.ics[1].info = self.ics[0].info; } self.ics[0].decode_ics(br, codebooks, m4atype, common_window, true)?; self.ics[1].decode_ics(br, codebooks, m4atype, common_window, true)?; - if common_window && self.ms_mask_present != 0 { + if common_window { let mut g = 0; for w in 0..self.ics[0].info.num_windows { if w > 0 && !self.ics[0].info.scale_factor_grouping[w - 1] { @@ -348,7 +350,7 @@ impl ChannelPair { let invert = (self.ms_mask_present == 1) && self.ms_used[g][sfb]; let dir = self.ics[1].get_intensity_dir(g, sfb) ^ invert; let scale = 0.5f32.powf(0.25 * (f32::from(self.ics[1].scales[g][sfb]) + f32::from(INTENSITY_SCALE_MIN))); - if !dir { + if dir { for i in start..end { self.ics[1].coeffs[i] = scale * self.ics[0].coeffs[i]; } @@ -628,8 +630,8 @@ impl AACDecoder { 4 => { // ID_DSE let _id = br.read(4)?; let align = br.read_bool()?; - let mut count = br.read(8)? as u32; - if count == 255 { count += br.read(8)? as u32; } + let mut count = br.read(8)?; + if count == 255 { count += br.read(8)?; } if align { br.align(); } br.skip(count * 8)?; // no SBR payload or such },