fix: target duration should be float

This commit is contained in:
2025-06-17 10:47:15 +01:00
parent 65be582b75
commit 6803eefca2
4 changed files with 9 additions and 9 deletions

View File

@ -42,7 +42,7 @@
//! //!
//! let playlist = MediaPlaylist { //! let playlist = MediaPlaylist {
//! version: Some(6), //! version: Some(6),
//! target_duration: 3, //! target_duration: 3.,
//! media_sequence: 338559, //! media_sequence: 338559,
//! discontinuity_sequence: 1234, //! discontinuity_sequence: 1234,
//! end_list: true, //! end_list: true,
@ -74,7 +74,7 @@
//! WRITE_OPT_FLOAT_PRECISION.store(5, Ordering::Relaxed); //! WRITE_OPT_FLOAT_PRECISION.store(5, Ordering::Relaxed);
//! //!
//! let playlist = MediaPlaylist { //! let playlist = MediaPlaylist {
//! target_duration: 3, //! target_duration: 3.,
//! segments: vec![ //! segments: vec![
//! MediaSegmentType::Full(MediaSegment { //! MediaSegmentType::Full(MediaSegment {
//! duration: 2.9, //! duration: 2.9,

View File

@ -344,7 +344,7 @@ fn parse_media_playlist_tags(i: &[u8]) -> IResult<&[u8], Vec<MediaPlaylistTag>>
enum MediaPlaylistTag { enum MediaPlaylistTag {
Version(usize), Version(usize),
Segment(SegmentTag), Segment(SegmentTag),
TargetDuration(u64), TargetDuration(f32),
MediaSequence(u64), MediaSequence(u64),
DiscontinuitySequence(u64), DiscontinuitySequence(u64),
EndList, EndList,
@ -367,7 +367,7 @@ fn media_playlist_tag(i: &[u8]) -> IResult<&[u8], MediaPlaylistTag> {
alt(( alt((
map(version_tag, MediaPlaylistTag::Version), map(version_tag, MediaPlaylistTag::Version),
map( map(
pair(tag("#EXT-X-TARGETDURATION:"), number), pair(tag("#EXT-X-TARGETDURATION:"), float),
|(_, duration)| MediaPlaylistTag::TargetDuration(duration), |(_, duration)| MediaPlaylistTag::TargetDuration(duration),
), ),
map( map(

View File

@ -735,7 +735,7 @@ impl SessionData {
pub struct MediaPlaylist { pub struct MediaPlaylist {
pub version: Option<usize>, pub version: Option<usize>,
/// `#EXT-X-TARGETDURATION:<s>` /// `#EXT-X-TARGETDURATION:<s>`
pub target_duration: u64, pub target_duration: f32,
/// `#EXT-X-MEDIA-SEQUENCE:<number>` /// `#EXT-X-MEDIA-SEQUENCE:<number>`
pub media_sequence: u64, pub media_sequence: u64,
pub segments: Vec<MediaSegmentType>, pub segments: Vec<MediaSegmentType>,

View File

@ -203,7 +203,7 @@ fn create_and_parse_master_playlist_empty() {
fn create_segment_float_inf() { fn create_segment_float_inf() {
let playlist = Playlist::MediaPlaylist(MediaPlaylist { let playlist = Playlist::MediaPlaylist(MediaPlaylist {
version: Some(6), version: Some(6),
target_duration: 3, target_duration: 3.0,
media_sequence: 338559, media_sequence: 338559,
discontinuity_sequence: 1234, discontinuity_sequence: 1234,
end_list: true, end_list: true,
@ -335,7 +335,7 @@ fn create_and_parse_media_playlist_empty() {
#[test] #[test]
fn create_and_parse_media_playlist_single_segment() { fn create_and_parse_media_playlist_single_segment() {
let mut playlist_original = Playlist::MediaPlaylist(MediaPlaylist { let mut playlist_original = Playlist::MediaPlaylist(MediaPlaylist {
target_duration: 2, target_duration: 2.,
segments: vec![MediaSegmentType::Full(MediaSegment { segments: vec![MediaSegmentType::Full(MediaSegment {
uri: "20140311T113819-01-338559live.ts".into(), uri: "20140311T113819-01-338559live.ts".into(),
duration: 2.002, duration: 2.002,
@ -352,7 +352,7 @@ fn create_and_parse_media_playlist_single_segment() {
fn create_and_parse_media_playlist_full() { fn create_and_parse_media_playlist_full() {
let mut playlist_original = Playlist::MediaPlaylist(MediaPlaylist { let mut playlist_original = Playlist::MediaPlaylist(MediaPlaylist {
version: Some(4), version: Some(4),
target_duration: 3, target_duration: 3.,
media_sequence: 338559, media_sequence: 338559,
discontinuity_sequence: 1234, discontinuity_sequence: 1234,
end_list: true, end_list: true,
@ -480,7 +480,7 @@ fn parsing_binary_data_should_fail_cleanly() {
fn create_and_parse_media_playlist_llhls() { fn create_and_parse_media_playlist_llhls() {
let mut playlist_original = Playlist::MediaPlaylist(MediaPlaylist { let mut playlist_original = Playlist::MediaPlaylist(MediaPlaylist {
version: Some(9), version: Some(9),
target_duration: 2, target_duration: 2.,
media_sequence: 338559, media_sequence: 338559,
discontinuity_sequence: 1234, discontinuity_sequence: 1234,
end_list: false, end_list: false,