mirror of
https://github.com/rutgersc/m3u8-rs.git
synced 2024-12-22 14:36:28 +00:00
Expose unknown tags
This commit is contained in:
parent
302ff22f31
commit
3e74f7787f
2 changed files with 29 additions and 14 deletions
|
@ -69,7 +69,8 @@ pub struct MasterPlaylist {
|
|||
pub session_key: Option<SessionKey>,
|
||||
pub start: Option<Start>,
|
||||
pub independent_segments: bool,
|
||||
pub alternatives: Vec<AlternativeMedia> // EXT-X-MEDIA tags
|
||||
pub alternatives: Vec<AlternativeMedia>, // EXT-X-MEDIA tags
|
||||
pub unknown_tags: Vec<ExtTag>
|
||||
}
|
||||
|
||||
impl MasterPlaylist {
|
||||
|
@ -105,8 +106,8 @@ impl MasterPlaylist {
|
|||
MasterPlaylistTag::IndependentSegments => {
|
||||
master_playlist.independent_segments = true;
|
||||
}
|
||||
MasterPlaylistTag::Unknown(_) => {
|
||||
// println!("Unknown master tag \n{:?}\n", t);
|
||||
MasterPlaylistTag::Unknown(unknown) => {
|
||||
master_playlist.unknown_tags.push(unknown);
|
||||
}
|
||||
_ => (),
|
||||
}
|
||||
|
@ -142,6 +143,9 @@ impl MasterPlaylist {
|
|||
if self.independent_segments {
|
||||
writeln!(w, "#EXT-X-INDEPENDENT-SEGMENTS")?;
|
||||
}
|
||||
for unknown_tag in &self.unknown_tags {
|
||||
write!(w, "#EXT-{}:{}\n", unknown_tag.tag, unknown_tag.rest)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -405,6 +409,8 @@ pub struct MediaPlaylist {
|
|||
pub start: Option<Start>,
|
||||
/// `#EXT-X-INDEPENDENT-SEGMENTS`
|
||||
pub independent_segments: bool,
|
||||
/// `#EXT-X-`
|
||||
pub unknown_tags: Vec<ExtTag>
|
||||
}
|
||||
|
||||
impl MediaPlaylist {
|
||||
|
@ -469,6 +475,9 @@ impl MediaPlaylist {
|
|||
SegmentTag::DateRange(d) => {
|
||||
next_segment.daterange = Some(d);
|
||||
}
|
||||
SegmentTag::Unknown(t) => {
|
||||
media_playlist.unknown_tags.push(t);
|
||||
}
|
||||
SegmentTag::Uri(u) => {
|
||||
next_segment.key = encryption_key.clone();
|
||||
next_segment.map = map.clone();
|
||||
|
@ -516,6 +525,9 @@ impl MediaPlaylist {
|
|||
for segment in &self.segments {
|
||||
segment.write_to(w)?;
|
||||
}
|
||||
for unknown_tag in &self.unknown_tags {
|
||||
write!(w, "#EXT-{}:{}\n", unknown_tag.tag, unknown_tag.rest)?;
|
||||
}
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
@ -789,8 +801,9 @@ impl Start {
|
|||
}
|
||||
|
||||
/// A simple `#EXT-` tag
|
||||
#[derive(Debug, Default, Clone)]
|
||||
#[derive(Debug, Default, PartialEq, Clone)]
|
||||
pub struct ExtTag {
|
||||
pub tag: String,
|
||||
pub rest: String,
|
||||
}
|
||||
|
||||
|
|
|
@ -350,6 +350,7 @@ fn create_and_parse_master_playlist_full() {
|
|||
precise: Some("YES".into()),
|
||||
}),
|
||||
independent_segments: true,
|
||||
unknown_tags: vec![],
|
||||
});
|
||||
let playlist_parsed = print_create_and_parse_playlist(&mut playlist_original);
|
||||
assert_eq!(playlist_original, playlist_parsed);
|
||||
|
@ -417,6 +418,7 @@ fn create_and_parse_media_playlist_full() {
|
|||
daterange: None,
|
||||
},
|
||||
],
|
||||
unknown_tags: vec![],
|
||||
});
|
||||
let playlist_parsed = print_create_and_parse_playlist(&mut playlist_original);
|
||||
assert_eq!(playlist_original, playlist_parsed);
|
||||
|
|
Loading…
Reference in a new issue