public static bool IsDynamicPlayist(M3U8Parser parser)
 {
     if (null != M3U8TagInstanceExtensions.Tag(parser.GlobalTags, M3U8Tags.ExtXEndList))
     {
         return(false);
     }
     return(Enumerable.All <M3U8Parser.M3U8Uri>(parser.Playlist, (Func <M3U8Parser.M3U8Uri, bool>)(p =>
     {
         ExtinfTagInstance extinfTagInstance = M3U8Tags.ExtXInf.Find((IEnumerable <M3U8TagInstance>)p.Tags);
         return extinfTagInstance != null && extinfTagInstance.Duration >= new Decimal(0);
     })));
 }
        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);
        }