diff --git a/Cargo.lock b/Cargo.lock index 11de0ca..ed1aa35 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -7,7 +7,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "mp4" -version = "0.3.0" +version = "0.4.0" dependencies = [ "byteorder 1.3.2 (registry+https://github.com/rust-lang/crates.io-index)", ] diff --git a/Cargo.toml b/Cargo.toml index 4652005..63b3c43 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mp4" -version = "0.3.0" +version = "0.4.0" authors = ["Alf "] edition = "2018" diff --git a/src/atoms.rs b/src/atoms.rs index 88567f9..2fa45f5 100644 --- a/src/atoms.rs +++ b/src/atoms.rs @@ -390,11 +390,7 @@ fn parse_mvhd_box(f: &mut BufReader, _offset: u64, size: u32) -> Result().unwrap(); let duration = f.read_u32::().unwrap(); let rate = f.read_u32::().unwrap(); - - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); + skip(f, current, size); Ok(MvhdBox{ version, @@ -433,11 +429,8 @@ fn parse_trak_box(f: &mut BufReader, _offset: u64, size: u32) -> Result break } } + skip(f, current, size); - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); Ok(trak) } @@ -474,11 +467,7 @@ fn parse_tkhd_box(f: &mut BufReader, _offset: u64, size: u32) -> Result().unwrap() >> 8; let height = f.read_u32::().unwrap() >> 8; - - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); + skip(f, current, size); Ok(TkhdBox { version, @@ -514,11 +503,8 @@ fn parse_edts_box(f: &mut BufReader, _offset: u64, size: u32) -> Result break } } + skip(f, current, size); - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); Ok(edts) } @@ -539,11 +525,7 @@ fn parse_elst_box(f: &mut BufReader, _offset: u64, size: u32) -> Result, _offset: u64, size: u32) -> Result break } } + skip(f, current, size); - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); Ok(mdia) } @@ -600,11 +579,7 @@ fn parse_mdhd_box(f: &mut BufReader, _offset: u64, size: u32) -> Result().unwrap(); let language = f.read_u16::().unwrap(); let language_string = get_language_string(language); - - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); + skip(f, current, size); Ok(MdhdBox { version, @@ -653,11 +628,7 @@ fn parse_hdlr_box(f: &mut BufReader, _offset: u64, size: u32) -> Result t, _ => String::from("null"), }; - - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); + skip(f, current, size); Ok(HdlrBox { version, @@ -695,11 +666,8 @@ fn parse_minf_box(f: &mut BufReader, _offset: u64, size: u32) -> Result break } } + skip(f, current, size); - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); Ok(minf) } @@ -713,11 +681,7 @@ fn parse_vmhd_box(f: &mut BufReader, _offset: u64, size: u32) -> Result().unwrap(); let op_color = f.read_u16::().unwrap(); - - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); + skip(f, current, size); Ok(VmhdBox { version, @@ -769,11 +733,7 @@ fn parse_stts_box(f: &mut BufReader, _offset: u64, size: u32) -> Result, _offset: u64, size: u32) -> Result break } } + skip(f, current, size); - // Skip remaining bytes. - let after = f.seek(SeekFrom::Current(0)).unwrap(); - let remaining_bytes = (size as u64 - (after - current)) as i64; - f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); Ok(StsdBox { version, flags, }) } + +fn skip(f: &mut BufReader, current: u64, size: u32) { + let after = f.seek(SeekFrom::Current(0)).unwrap(); + let remaining_bytes = (size as u64 - (after - current)) as i64; + f.seek(SeekFrom::Current(remaining_bytes - HEADER_SIZE as i64)).unwrap(); +}