Ejemplo n.º 1
0
        /// <summary>
        /// Gets a formatted string of the output video codec, for use in the CODECS field.
        /// </summary>
        /// <seealso cref="AppendPlaylistCodecsField(StringBuilder, StreamState)"/>
        /// <seealso cref="GetPlaylistAudioCodecs(StreamState)"/>
        /// <param name="state">StreamState of the current stream.</param>
        /// <returns>Formatted video codec string.</returns>
        private string GetPlaylistVideoCodecs(StreamState state, string codec, int level)
        {
            if (level == 0)
            {
                // This is 0 when there's no requested H.26X level in the device profile
                // and the source is not encoded in H.26X
                Logger.LogError("Got invalid H.26X level when building CODECS field for HLS master playlist");
                return(string.Empty);
            }

            if (string.Equals(codec, "h264", StringComparison.OrdinalIgnoreCase))
            {
                string profile = state.GetRequestedProfiles("h264").FirstOrDefault();

                return(HlsCodecStringFactory.GetH264String(profile, level));
            }
            else if (string.Equals(codec, "h265", StringComparison.OrdinalIgnoreCase) ||
                     string.Equals(codec, "hevc", StringComparison.OrdinalIgnoreCase))
            {
                string profile = state.GetRequestedProfiles("h265").FirstOrDefault();

                return(HlsCodecStringFactory.GetH265String(profile, level));
            }

            return(string.Empty);
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Gets a formatted string of the output audio codec, for use in the CODECS field.
        /// </summary>
        /// <seealso cref="AppendPlaylistCodecsField(StringBuilder, StreamState)"/>
        /// <seealso cref="GetPlaylistVideoCodecs(StreamState, string, int)"/>
        /// <param name="state">StreamState of the current stream.</param>
        /// <returns>Formatted audio codec string.</returns>
        private string GetPlaylistAudioCodecs(StreamState state)
        {
            if (string.Equals(state.ActualOutputAudioCodec, "aac", StringComparison.OrdinalIgnoreCase))
            {
                string profile = state.GetRequestedProfiles("aac").FirstOrDefault();

                return(HlsCodecStringFactory.GetAACString(profile));
            }
            else if (string.Equals(state.ActualOutputAudioCodec, "mp3", StringComparison.OrdinalIgnoreCase))
            {
                return(HlsCodecStringFactory.GetMP3String());
            }
            else if (string.Equals(state.ActualOutputAudioCodec, "ac3", StringComparison.OrdinalIgnoreCase))
            {
                return(HlsCodecStringFactory.GetAC3String());
            }
            else if (string.Equals(state.ActualOutputAudioCodec, "eac3", StringComparison.OrdinalIgnoreCase))
            {
                return(HlsCodecStringFactory.GetEAC3String());
            }

            return(string.Empty);
        }