From 44aa097c90437d6047ac37b2bac9fcd51f53f121 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Fri, 7 Jan 2022 12:47:03 +0200 Subject: [PATCH] Use `u64` instead of `i32` for byte ranges and sequence numbers Fixes https://github.com/rutgersc/m3u8-rs/issues/39 --- README.md | 4 ++-- src/parser.rs | 8 ++++---- src/playlist.rs | 8 ++++---- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 9e5f36d..2032919 100644 --- a/README.md +++ b/README.md @@ -94,9 +94,9 @@ pub struct MasterPlaylist { pub struct MediaPlaylist { pub version: usize, pub target_duration: f32, - pub media_sequence: i32, + pub media_sequence: u64, pub segments: Vec, - pub discontinuity_sequence: i32, + pub discontinuity_sequence: u64, pub end_list: bool, pub playlist_type: MediaPlaylistType, pub i_frames_only: bool, diff --git a/src/parser.rs b/src/parser.rs index 71b825e..f83c15b 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -343,8 +343,8 @@ enum MediaPlaylistTag { Version(usize), Segment(SegmentTag), TargetDuration(f32), - MediaSequence(i32), - DiscontinuitySequence(i32), + MediaSequence(u64), + DiscontinuitySequence(u64), EndList, PlaylistType(MediaPlaylistType), IFramesOnly, @@ -644,11 +644,11 @@ fn consume_line(i: &[u8]) -> IResult<&[u8], String> { )(i) } -fn number(i: &[u8]) -> IResult<&[u8], i32> { +fn number(i: &[u8]) -> IResult<&[u8], u64> { map_res(take_while1(is_digit), |s| { // Can't fail because we validated it above already let s = str::from_utf8(s).unwrap(); - str::parse::(s) + str::parse::(s) })(i) } diff --git a/src/playlist.rs b/src/playlist.rs index 5e02161..052542a 100644 --- a/src/playlist.rs +++ b/src/playlist.rs @@ -401,10 +401,10 @@ pub struct MediaPlaylist { /// `#EXT-X-TARGETDURATION:` pub target_duration: f32, /// `#EXT-X-MEDIA-SEQUENCE:` - pub media_sequence: i32, + pub media_sequence: u64, pub segments: Vec, /// `#EXT-X-DISCONTINUITY-SEQUENCE:` - pub discontinuity_sequence: i32, + pub discontinuity_sequence: u64, /// `#EXT-X-ENDLIST` pub end_list: bool, /// `#EXT-X-PLAYLIST-TYPE` @@ -637,8 +637,8 @@ impl Map { /// URI line that follows it in the Playlist. #[derive(Debug, Default, PartialEq, Clone)] pub struct ByteRange { - pub length: i32, - pub offset: Option, + pub length: u64, + pub offset: Option, } impl ByteRange {