+ let mut duration = 0;
+ if hdr.layer == 2 { // check for Xing/LAME info
+ let mpeg1 = hdr.srate >= 32000;
+ let offset = match (mpeg1, hdr.channels) {
+ (true, 1) => 24,
+ (true, _) => 36,
+ (false, 1) => 13,
+ (false, _) => 21,
+ };
+ if self.buf.len() >= offset + 12 && (&self.buf[offset..][..4] == b"Xing" || &self.buf[offset..][..4] == b"Info") {
+ let flags = read_u32be(&self.buf[offset + 4..]).unwrap_or(0);
+ if (flags & 1) != 0 {
+ duration = u64::from(read_u32be(&self.buf[offset + 8..]).unwrap_or(0));
+ }
+ }
+ }