Пример #1
0
        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));
        }
Пример #2
0
 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));
 }