private void HandleByteRange(SubStreamSegment segment, ByterangeTagInstance byteRange) { if (byteRange.Offset.HasValue) { segment.Offset = byteRange.Offset.Value; this._byteRangeOffset = byteRange.Offset.Value; } else { segment.Offset = this._byteRangeOffset; } segment.Length = byteRange.Length; this._byteRangeOffset += byteRange.Length; }
private ISegment CreateStreamSegment(M3U8Parser.M3U8Uri uri, CancellationToken cancellationToken) { SubStreamSegment segment = new SubStreamSegment(M3U8ParserExtensions.ResolveUrl(this._parser, uri.Uri), this._parser.BaseUrl); if (this._mediaSequence.HasValue) { SubStreamSegment subStreamSegment = segment; long? nullable1 = this._mediaSequence; long num = (long)this._segmentIndex; long? nullable2 = nullable1.HasValue ? new long?(nullable1.GetValueOrDefault() + num) : new long?(); subStreamSegment.MediaSequence = nullable2; } ++this._segmentIndex; M3U8TagInstance[] m3U8TagInstanceArray = uri.Tags; if (m3U8TagInstanceArray == null || 0 == m3U8TagInstanceArray.Length) { return((ISegment)segment); } ExtinfTagInstance extinfTagInstance = M3U8Tags.ExtXInf.Find((IEnumerable <M3U8TagInstance>)m3U8TagInstanceArray); if (null != extinfTagInstance) { segment.Duration = new TimeSpan?(TimeSpan.FromSeconds((double)extinfTagInstance.Duration)); } ByterangeTagInstance byteRange = M3U8Tags.ExtXByteRange.Find((IEnumerable <M3U8TagInstance>)m3U8TagInstanceArray); if (null != byteRange) { this.HandleByteRange(segment, byteRange); } IEnumerable <ExtKeyTagInstance> all = M3U8Tags.ExtXKey.FindAll((IEnumerable <M3U8TagInstance>)m3U8TagInstanceArray); if (null != all) { this.HandleKey(segment, all, cancellationToken); } return((ISegment)segment); }