/// <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> /// <param name="codec">Video codec.</param> /// <param name="level">Video level.</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 = GetOutputVideoCodecProfile(state, "h264"); return(HlsCodecStringHelpers.GetH264String(profile, level)); } if (string.Equals(codec, "h265", StringComparison.OrdinalIgnoreCase) || string.Equals(codec, "hevc", StringComparison.OrdinalIgnoreCase)) { string profile = GetOutputVideoCodecProfile(state, "hevc"); return(HlsCodecStringHelpers.GetH265String(profile, level)); } return(string.Empty); }
/// <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(HlsCodecStringHelpers.GetAACString(profile)); } if (string.Equals(state.ActualOutputAudioCodec, "mp3", StringComparison.OrdinalIgnoreCase)) { return(HlsCodecStringHelpers.GetMP3String()); } if (string.Equals(state.ActualOutputAudioCodec, "ac3", StringComparison.OrdinalIgnoreCase)) { return(HlsCodecStringHelpers.GetAC3String()); } if (string.Equals(state.ActualOutputAudioCodec, "eac3", StringComparison.OrdinalIgnoreCase)) { return(HlsCodecStringHelpers.GetEAC3String()); } if (string.Equals(state.ActualOutputAudioCodec, "flac", StringComparison.OrdinalIgnoreCase)) { return(HlsCodecStringHelpers.GetFLACString()); } if (string.Equals(state.ActualOutputAudioCodec, "alac", StringComparison.OrdinalIgnoreCase)) { return(HlsCodecStringHelpers.GetALACString()); } return(string.Empty); }