diff options
| -rw-r--r-- | MediaBrowser.Api/Playback/Hls/BaseHlsService.cs | 36 |
1 files changed, 34 insertions, 2 deletions
diff --git a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs index 2fb7f8142..787727cd3 100644 --- a/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs +++ b/MediaBrowser.Api/Playback/Hls/BaseHlsService.cs @@ -120,8 +120,9 @@ namespace MediaBrowser.Api.Playback.Hls await WaitForMinimumSegmentCount(playlist, 3).ConfigureAwait(false); } - var audioBitrate = GetAudioBitrateParam(state) ?? 0; - var videoBitrate = GetVideoBitrateParam(state) ?? 0; + int audioBitrate; + int videoBitrate; + GetPlaylistBitrates(state, out audioBitrate, out videoBitrate); var appendBaselineStream = false; var baselineStreamBitrate = 64000; @@ -145,6 +146,37 @@ namespace MediaBrowser.Api.Playback.Hls } } + /// <summary> + /// Gets the playlist bitrates. + /// </summary> + /// <param name="state">The state.</param> + /// <param name="audioBitrate">The audio bitrate.</param> + /// <param name="videoBitrate">The video bitrate.</param> + private void GetPlaylistBitrates(StreamState state, out int audioBitrate, out int videoBitrate) + { + var audioBitrateParam = GetAudioBitrateParam(state); + var videoBitrateParam = GetVideoBitrateParam(state); + + if (!audioBitrateParam.HasValue) + { + if (state.AudioStream != null) + { + audioBitrateParam = state.AudioStream.BitRate; + } + } + + if (!videoBitrateParam.HasValue) + { + if (state.VideoStream != null) + { + videoBitrateParam = state.VideoStream.BitRate; + } + } + + audioBitrate = audioBitrateParam ?? 0; + videoBitrate = videoBitrateParam ?? 0; + } + private string GetMasterPlaylistFileText(string firstPlaylist, int bitrate, bool includeBaselineStream, int baselineStreamBitrate) { var builder = new StringBuilder(); |
