X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=sndplay%2Fsrc%2Fdemux.rs;h=c35167c97ae7bbae7803fe054b833f3b5974a2cc;hb=0d3a25c7795795c4590e496bf7f58fe9ede2b4af;hp=de9a06739df8bae6721d63ae64bee1b5974cd173;hpb=695000c46091c478a9ed4bd7e5d3e7860eaad2c6;p=nihav-player.git diff --git a/sndplay/src/demux.rs b/sndplay/src/demux.rs index de9a067..c35167c 100644 --- a/sndplay/src/demux.rs +++ b/sndplay/src/demux.rs @@ -81,7 +81,7 @@ impl<'a> DemuxerObject<'a> { if !is_raw { let res = detect::detect_format(name, br); let (dmx_name, _) = res.unwrap_or(("", detect::DetectionScore::No)); - if dmx_name != "" { + if !dmx_name.is_empty() { println!("trying demuxer {} on {}", dmx_name, name); if let Some(dmx_fact) = reg.dmx_reg.find_demuxer(dmx_name) { br.seek(SeekFrom::Start(0)).unwrap(); @@ -89,7 +89,7 @@ impl<'a> DemuxerObject<'a> { return DemuxerObject::Normal(dmx); } } - if dmx_name != "" { + if !dmx_name.is_empty() { println!("trying raw demuxer {} on {}", dmx_name, name); if let Some(rdmx_fact) = reg.rdmx_reg.find_demuxer(dmx_name) { br.seek(SeekFrom::Start(0)).unwrap(); @@ -126,7 +126,8 @@ impl<'a> DemuxerObject<'a> { } br.seek(SeekFrom::Start(0)).unwrap(); let mut buf = vec![0; 1048576]; - let size = br.peek_buf(&mut buf).unwrap(); + let size = br.read_buf_some(&mut buf).unwrap(); + br.seek(SeekFrom::Start(0)).unwrap(); let mut pname = ""; for pinfo in reg.pkt_reg.iter() { @@ -137,7 +138,7 @@ impl<'a> DemuxerObject<'a> { break; } } - if pname != "" { + if !pname.is_empty() { println!("found raw stream of type {} for {}", pname, name); let pcreate = reg.pkt_reg.find_packetiser(pname).unwrap(); let mut packetiser = (pcreate)(); @@ -150,10 +151,7 @@ impl<'a> DemuxerObject<'a> { } } pub fn is_none(&self) -> bool { - match *self { - DemuxerObject::None => true, - _ => false, - } + matches!(*self, DemuxerObject::None) } pub fn get_duration(&self) -> u64 { match *self { @@ -298,6 +296,10 @@ pub fn detect_tags(br: &mut ByteReader) -> (bool, u64, Option) { } start += size + 10; br.read_skip(size as usize).unwrap(); + while let Ok(0) = br.read_byte() { + start += 1; + } + br.seek(SeekFrom::Start(start)).unwrap(); is_raw = true; } else { break;