private static bool IsYesNo(M3U8TagInstance tag, M3U8ValueAttribute <string> attribute, bool defaultValue = false)
        {
            var attributeValueInstance = tag.Attribute(attribute);

            if (attributeValueInstance == null || string.IsNullOrWhiteSpace(attributeValueInstance.Value))
            {
                return(defaultValue);
            }
            return(0 == string.CompareOrdinal("YES", attributeValueInstance.Value.ToUpperInvariant()));
        }
        private static void AddMedia(Uri playlist, M3U8TagInstance gt, IDictionary <string, MediaGroup> audioStreams)
        {
            var key       = gt.Attribute(ExtMediaSupport.AttrGroupId).Value;
            var uriString = gt.AttributeObject(ExtMediaSupport.AttrUri);
            Uri uri       = null;

            if (null != uriString)
            {
                uri = new Uri(playlist, new Uri(uriString, UriKind.RelativeOrAbsolute));
            }

            var str = gt.AttributeObject(ExtMediaSupport.AttrLanguage);
            var playlistSubStream1 = new PlaylistSubStream
            {
                Type         = gt.AttributeObject(ExtMediaSupport.AttrType),
                Name         = key,
                Playlist     = uri,
                IsAutoselect = IsYesNo(gt, ExtMediaSupport.AttrAutoselect),
                Language     = str?.Trim().ToLower()
            };

            var        playlistSubStream2 = playlistSubStream1;
            MediaGroup mediaGroup;

            if (!audioStreams.TryGetValue(key, out mediaGroup))
            {
                mediaGroup = new MediaGroup()
                {
                    Default = playlistSubStream2
                };
                audioStreams[key] = mediaGroup;
            }
            if (IsYesNo(gt, ExtMediaSupport.AttrDefault))
            {
                mediaGroup.Default = playlistSubStream2;
            }
            var index = gt.Attribute(ExtMediaSupport.AttrName).Value;

            mediaGroup.Streams[index] = playlistSubStream2;
        }
示例#3
0
        private static void AddMedia(Uri playlist, M3U8TagInstance gt, Dictionary <string, HlsProgramManager.MediaGroup> audioStreams)
        {
            string key       = M3U8TagInstanceExtensions.Attribute <string>(gt, ExtMediaSupport.AttrGroupId).Value;
            string uriString = M3U8TagInstanceExtensions.AttributeObject <string>(gt, ExtMediaSupport.AttrUri);
            Uri    uri       = (Uri)null;

            if (null != uriString)
            {
                uri = new Uri(playlist, new Uri(uriString, UriKind.RelativeOrAbsolute));
            }
            string            str = M3U8TagInstanceExtensions.AttributeObject <string>(gt, ExtMediaSupport.AttrLanguage);
            PlaylistSubStream playlistSubStream1 = new PlaylistSubStream();

            playlistSubStream1.Type         = M3U8TagInstanceExtensions.AttributeObject <string>(gt, ExtMediaSupport.AttrType);
            playlistSubStream1.Name         = key;
            playlistSubStream1.Playlist     = uri;
            playlistSubStream1.IsAutoselect = HlsProgramManager.IsYesNo(gt, ExtMediaSupport.AttrAutoselect, false);
            playlistSubStream1.Language     = str == null ? (string)null : str.Trim().ToLower();
            PlaylistSubStream playlistSubStream2 = playlistSubStream1;

            HlsProgramManager.MediaGroup mediaGroup;
            if (!audioStreams.TryGetValue(key, out mediaGroup))
            {
                mediaGroup = new HlsProgramManager.MediaGroup()
                {
                    Default = (SubStream)playlistSubStream2
                };
                audioStreams[key] = mediaGroup;
            }
            if (HlsProgramManager.IsYesNo(gt, ExtMediaSupport.AttrDefault, false))
            {
                mediaGroup.Default = (SubStream)playlistSubStream2;
            }
            string index = M3U8TagInstanceExtensions.Attribute <string>(gt, ExtMediaSupport.AttrName).Value;

            mediaGroup.Streams[index] = (SubStream)playlistSubStream2;
        }