pub struct DateRange {
pub id: String,
pub start_date: String,
pub class: Option<String>,
pub duration: Option<f64>,
pub planned_duration: Option<f64>,
pub scte35: Option<Scte35Attr>,
}Expand description
An EXT-X-DATERANGE tag.
Fields§
§id: StringID (quoted).
start_date: StringSTART-DATE (quoted, ISO-8601/RFC3339).
class: Option<String>CLASS (quoted), if present.
duration: Option<f64>DURATION in seconds.
planned_duration: Option<f64>PLANNED-DURATION in seconds.
scte35: Option<Scte35Attr>SCTE-35 attribute, if present.
Implementations§
Source§impl DateRange
impl DateRange
Sourcepub fn to_tag_line(&self) -> String
pub fn to_tag_line(&self) -> String
Serialize to a single #EXT-X-DATERANGE: line. Attribute order is fixed
(ID, START-DATE, CLASS, DURATION, PLANNED-DURATION, SCTE35-*) so that
parse_tag_line round-trips byte-identically.
Examples found in repository?
examples/scte35_to_hls.rs (line 44)
14fn main() {
15 // Real Unified Streaming splice: ID 2002, out-of-network, break_duration 24 s.
16 let hex = "FC302100000000000000FFF01005000007D27FEF7F7E0020F580C0000000000088B9661D";
17 let raw: Vec<u8> = (0..hex.len())
18 .step_by(2)
19 .map(|i| u8::from_str_radix(&hex[i..i + 2], 16).unwrap())
20 .collect();
21
22 // Wall-clock anchor: assume PTS 0 == 2024-01-15T12:00:00.000Z (ms since epoch).
23 let utc_epoch_ms: i64 = 1_705_320_000_000; // 2024-01-15 12:00:00 UTC
24 let anchor = TimeAnchor {
25 pts_90k: 0,
26 utc_epoch_ms,
27 };
28
29 let mut timeline = Timeline::with_anchor(anchor);
30
31 // Parse the SCTE-35 section and unroll PTS wrap.
32 let event = timeline.push_scte35(&raw).expect("valid splice");
33
34 // Convert to a DATERANGE.
35 let daterange = timeline.to_daterange(&event).expect("anchor is set");
36
37 println!("Event kind : {}", event.kind);
38 println!("Event id : {:?}", event.id);
39 println!(
40 "Duration : {:?}s",
41 event.duration.map(|d| d.as_seconds_f64())
42 );
43 println!();
44 println!("{}", daterange.to_tag_line());
45}Sourcepub fn parse_tag_line(s: &str) -> Result<DateRange>
pub fn parse_tag_line(s: &str) -> Result<DateRange>
Parse one #EXT-X-DATERANGE: line.
Trait Implementations§
Source§impl<'de> Deserialize<'de> for DateRange
impl<'de> Deserialize<'de> for DateRange
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
impl StructuralPartialEq for DateRange
Auto Trait Implementations§
impl Freeze for DateRange
impl RefUnwindSafe for DateRange
impl Send for DateRange
impl Sync for DateRange
impl Unpin for DateRange
impl UnsafeUnpin for DateRange
impl UnwindSafe for DateRange
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more