private IRepresentationStream CreateTemplateRepresentationStream() { Dynamic.SegmentTemplate seg = SegmentTemplate(); SegmentTimeline segTimeline = GetFirst(seg.SegmentTimelines); uint startNumber = seg.StartNumber ?? 1; Dynamic.TimelineItem[] timeline = null; if (segTimeline == null) { timeline = FromDuration(startNumber, seg); } else { timeline = FromTimeline(startNumber, seg, segTimeline); } if (timeline == null) { return(null); } // Live content elements from Segment Base... var presentationTimeOffset = seg.PresentationTimeOffset ?? 0; TimeSpan availabilityTimeOffset = seg.AvailabilityTimeOffset.HasValue ? TimeSpan.FromSeconds(seg.AvailabilityTimeOffset.Value) : TimeSpan.Zero; return(new Dynamic.TemplateRepresentationStream(CalcURL().Uri, seg.Initialization, seg.Media, Bandwidth, Id, seg.Timescale ?? 1, timeline, presentationTimeOffset, seg.TimeShiftBufferDepth, availabilityTimeOffset, seg.AvailabilityTimeComplete, (segTimeline != null), seg.StartNumber ?? 0, seg.Duration)); }
private Dynamic.TimelineItem[] FromTimeline(uint startNumber, Dynamic.SegmentTemplate seg, SegmentTimeline segmentTimeline) { return(Dynamic.Timeline.FromXml(startNumber, Period.Start ?? TimeSpan.Zero, Period.End, seg.Timescale ?? 1, segmentTimeline.Ss)); }