diff --git a/dashboard-ui/scripts/mediaplayer-video.js b/dashboard-ui/scripts/mediaplayer-video.js index e002d46472..bac9bbe85c 100644 --- a/dashboard-ui/scripts/mediaplayer-video.js +++ b/dashboard-ui/scripts/mediaplayer-video.js @@ -587,14 +587,14 @@ // Just use the first audio stream return audioStreams.length ? audioStreams[0].Index : null; }; - + function getVideoQualityOptions(mediaStreams) { var videoStream = mediaStreams.filter(function (stream) { return stream.Type == "Video"; })[0]; - var bitrateSetting = parseInt(localStorage.getItem('preferredVideoBitrate') || '') || 1500000; + var bitrateSetting = self.getBitrateSetting(); var maxAllowedWidth = Math.max(screen.height, screen.width); diff --git a/dashboard-ui/scripts/mediaplayer.js b/dashboard-ui/scripts/mediaplayer.js index 4254d1b529..a3273e001d 100644 --- a/dashboard-ui/scripts/mediaplayer.js +++ b/dashboard-ui/scripts/mediaplayer.js @@ -399,12 +399,37 @@ self.playlist = items; currentPlaylistIndex = 0; }; - - function getOptimalMediaVersion(versions) { - // TODO: Implement + self.getBitrateSetting = function() { + return parseInt(localStorage.getItem('preferredVideoBitrate') || '') || 1500000; + }; - return versions[0]; + function getOptimalMediaVersion(mediaType, versions) { + + var optimalVersion; + + if (mediaType == 'Video') { + + var bitrateSetting = self.getBitrateSetting(); + + var maxAllowedWidth = Math.max(screen.height, screen.width); + + optimalVersion = versions.filter(function (v) { + + var videoStream = v.MediaStreams.filter(function (s) { + return s.Type == 'Video'; + })[0]; + + var audioStream = v.MediaStreams.filter(function (s) { + return s.Type == 'Audio'; + })[0]; + + return self.canPlayVideoDirect(v, videoStream, audioStream, null, maxAllowedWidth, bitrateSetting); + + })[0]; + } + + return optimalVersion || versions[0]; } self.playInternal = function (item, startPosition, user) { @@ -424,7 +449,7 @@ if (item.MediaType === "Video") { currentItem = item; - currentMediaVersion = getOptimalMediaVersion(item.MediaVersions); + currentMediaVersion = getOptimalMediaVersion(item.MediaType, item.MediaVersions); videoPlayer(self, item, currentMediaVersion, startPosition, user); mediaElement = self.initVideoPlayer(); @@ -435,7 +460,7 @@ } else if (item.MediaType === "Audio") { currentItem = item; - currentMediaVersion = getOptimalMediaVersion(item.MediaVersions); + currentMediaVersion = getOptimalMediaVersion(item.MediaType, item.MediaVersions); mediaElement = playAudio(item, currentMediaVersion, startPosition); mediaControls.show(); diff --git a/dashboard-ui/scripts/site.js b/dashboard-ui/scripts/site.js index 7a42fbe5f2..21d83d50fc 100644 --- a/dashboard-ui/scripts/site.js +++ b/dashboard-ui/scripts/site.js @@ -162,8 +162,6 @@ var Dashboard = { updateSystemInfo: function (info) { - var isFirstLoad = !Dashboard.lastSystemInfo; - Dashboard.lastSystemInfo = info; Dashboard.ensureWebSocket(info);