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] {
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];
}
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
},