Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Tim Hobbs 2014-04-07 09:27:24 -07:00
commit a84e40f79e
3 changed files with 62 additions and 40 deletions

View File

@ -229,16 +229,17 @@
clearInterval(this.timer); clearInterval(this.timer);
}; };
function getMaxVideoAudioChannels() { function getCodecLimits() {
return 6; return {
}
function getMaxAudioChannels() { maxVideoAudioChannels: 6,
return 2; maxAudioChannels: 2,
} maxVideoLevel: 41,
maxWidth: 1920,
maxHeight: 1080,
maxSampleRate: 44100
function getMaxVideoLevel() { };
return 41;
} }
function canDirectStream(mediaType, mediaSource, maxBitrate) { function canDirectStream(mediaType, mediaSource, maxBitrate) {
@ -248,6 +249,8 @@
return false; return false;
} }
var codecLimits = getCodecLimits();
if (mediaType == "Audio") { if (mediaType == "Audio") {
return ['mp3', 'aac'].indexOf(mediaSource.Container || '') != -1; return ['mp3', 'aac'].indexOf(mediaSource.Container || '') != -1;
@ -268,15 +271,15 @@
return false; return false;
} }
if (!videoStream.Level || videoStream.Level > getMaxVideoLevel()) { if (!videoStream.Level || videoStream.Level > codecLimits.maxVideoLevel) {
return false; return false;
} }
if (!videoStream.Width || videoStream.Width > 1920) { if (!videoStream.Width || videoStream.Width > codecLimits.maxWidth) {
return false; return false;
} }
if (!videoStream.Height || videoStream.Height > 1080) { if (!videoStream.Height || videoStream.Height > codecLimits.maxHeight) {
return false; return false;
} }
@ -297,12 +300,18 @@
return false; return false;
} }
var maxChannels = isVideo ? getMaxVideoAudioChannels() : getMaxAudioChannels(); var codecLimits = getCodecLimits();
var maxChannels = isVideo ? codecLimits.maxVideoAudioChannels : codecLimits.maxAudioChannels;
if (!audioStream.Channels || audioStream.Channels > maxChannels) { if (!audioStream.Channels || audioStream.Channels > maxChannels) {
return false; return false;
} }
if (!audioStream.SampleRate || audioStream.SampleRate > codecLimits.maxSampleRate) {
return false;
}
return true; return true;
} }
@ -542,11 +551,13 @@
var url; var url;
var codecLimits = getCodecLimits();
if (item.MediaType == 'Audio') { if (item.MediaType == 'Audio') {
url = ApiClient.serverAddress() + '/mediabrowser/audio/' + item.Id + '/stream.' + mediaSourceInfo.streamContainer + '?'; url = ApiClient.serverAddress() + '/mediabrowser/audio/' + item.Id + '/stream.' + mediaSourceInfo.streamContainer + '?';
url += '&static=' + mediaSourceInfo.isStatic.toString(); url += '&static=' + mediaSourceInfo.isStatic.toString();
url += '&maxaudiochannels=' + getMaxAudioChannels(); url += '&maxaudiochannels=' + codecLimits.maxAudioChannels;
if (startTimeTicks) { if (startTimeTicks) {
url += '&startTimeTicks=' + startTimeTicks.toString(); url += '&startTimeTicks=' + startTimeTicks.toString();
@ -556,7 +567,7 @@
url += '&audiobitrate=' + Math.min(maxBitrate, 320000).toString(); url += '&audiobitrate=' + Math.min(maxBitrate, 320000).toString();
} }
url += '&audiosamplerate=44100'; url += '&audiosamplerate=' + codecLimits.maxSampleRate;
url += '&mediasourceid=' + mediaSourceInfo.mediaSource.Id; url += '&mediasourceid=' + mediaSourceInfo.mediaSource.Id;
return url; return url;
@ -566,7 +577,7 @@
url = ApiClient.serverAddress() + '/mediabrowser/videos/' + item.Id + '/stream.' + mediaSourceInfo.streamContainer + '?'; url = ApiClient.serverAddress() + '/mediabrowser/videos/' + item.Id + '/stream.' + mediaSourceInfo.streamContainer + '?';
url += 'static=' + mediaSourceInfo.isStatic.toString(); url += 'static=' + mediaSourceInfo.isStatic.toString();
url += '&maxaudiochannels=' + getMaxVideoAudioChannels(); url += '&maxaudiochannels=' + codecLimits.maxVideoAudioChannels;
if (startTimeTicks) { if (startTimeTicks) {
url += '&startTimeTicks=' + startTimeTicks.toString(); url += '&startTimeTicks=' + startTimeTicks.toString();
@ -580,15 +591,15 @@
} }
url += '&profile=high'; url += '&profile=high';
url += '&level=' + getMaxVideoLevel(); url += '&level=' + codecLimits.maxVideoLevel;
url += '&maxwidth=1920'; url += '&maxwidth=' + codecLimits.maxWidth;
url += '&maxheight=1080'; url += '&maxheight=' + codecLimits.maxHeight;
url += '&videoCodec=h264'; url += '&videoCodec=h264';
url += '&audioCodec=aac'; url += '&audioCodec=aac';
url += '&audiosamplerate=44100'; url += '&audiosamplerate=' + codecLimits.maxSampleRate;
url += '&mediasourceid=' + mediaSourceInfo.mediaSource.Id; url += '&mediasourceid=' + mediaSourceInfo.mediaSource.Id;
return url; return url;

View File

@ -22,7 +22,6 @@
var fullscreenExited = false; var fullscreenExited = false;
var idleState = true; var idleState = true;
var remoteFullscreen = false; var remoteFullscreen = false;
var videoMenuVisible = false;
self.initVideoPlayer = function () { self.initVideoPlayer = function () {
video = playVideo(item, mediaSource, startPosition, user); video = playVideo(item, mediaSource, startPosition, user);
@ -263,7 +262,7 @@
video.removeClass("cursor-active").addClass("cursor-inactive"); video.removeClass("cursor-active").addClass("cursor-inactive");
videoControls.removeClass("active").addClass("inactive"); videoControls.removeClass("active").addClass("inactive");
}, 4000); }, 4000);
}; }
function requestFullScreen(element) { function requestFullScreen(element) {
@ -276,7 +275,7 @@
enterFullScreen(); enterFullScreen();
} }
}; }
function changeHandler(event) { function changeHandler(event) {
@ -284,7 +283,7 @@
fullscreenExited = self.isFullScreen() == false; fullscreenExited = self.isFullScreen() == false;
}); });
}; }
function enterFullScreen() { function enterFullScreen() {
@ -294,7 +293,7 @@
remoteFullscreen = true; remoteFullscreen = true;
}; }
function exitFullScreenToWindow() { function exitFullScreenToWindow() {
@ -304,7 +303,7 @@
remoteFullscreen = false; remoteFullscreen = false;
}; }
function toggleFlyout(flyout, button) { function toggleFlyout(flyout, button) {
@ -334,14 +333,14 @@
hideFlyout(flyout); hideFlyout(flyout);
} }
}; }
function hideFlyout(flyout) { function hideFlyout(flyout) {
flyout.slideUp().empty(); flyout.slideUp().empty();
$(document.body).off("mousedown.hidesearchhints"); $(document.body).off("mousedown.hidesearchhints");
}; }
function getChaptersFlyoutHtml() { function getChaptersFlyoutHtml() {
@ -400,7 +399,7 @@
} }
return html; return html;
}; }
function getAudioTracksHtml() { function getAudioTracksHtml() {
@ -468,7 +467,7 @@
} }
return html; return html;
}; }
function getSubtitleTracksHtml() { function getSubtitleTracksHtml() {
@ -541,7 +540,7 @@
} }
return html; return html;
}; }
function getQualityFlyoutHtml() { function getQualityFlyoutHtml() {
@ -582,7 +581,7 @@
} }
return html; return html;
}; }
function getInitialSubtitleStreamIndex(mediaStreams, user) { function getInitialSubtitleStreamIndex(mediaStreams, user) {
@ -621,7 +620,7 @@
} }
return null; return null;
}; }
function getInitialAudioStreamIndex(mediaStreams, user) { function getInitialAudioStreamIndex(mediaStreams, user) {
@ -651,7 +650,7 @@
// Just use the first audio stream // Just use the first audio stream
return audioStreams[0]; return audioStreams[0];
}; }
function getVideoQualityOptions(mediaStreams) { function getVideoQualityOptions(mediaStreams) {
@ -729,7 +728,7 @@
options[selectedIndex].selected = true; options[selectedIndex].selected = true;
return options; return options;
}; }
function playVideo(item, mediaSource, startPosition, user) { function playVideo(item, mediaSource, startPosition, user) {
@ -922,7 +921,7 @@
}, 300); }, 300);
// Pause stop timer // Pause stop timer
this.pauseStop = setTimeout(function () { self.pauseStop = setTimeout(function () {
self.stop(); self.stop();
}, 5 * 60 * 1000); // 5 minutes }, 5 * 60 * 1000); // 5 minutes
@ -936,8 +935,7 @@
}, 300); }, 300);
// Remove pause setop timer // Remove pause setop timer
window.clearTimeout(this.pauseStop); self.clearPauseStop();
delete this.pauseStop;
}).on("timeupdate", function () { }).on("timeupdate", function () {
@ -948,6 +946,8 @@
}).on("error", function () { }).on("error", function () {
self.clearPauseStop();
$("html").css("cursor", "default"); $("html").css("cursor", "default");
$(".ui-loader").hide(); $(".ui-loader").hide();
self.resetEnhancements(); self.resetEnhancements();
@ -1038,6 +1038,6 @@
currentMediaSource = mediaSource; currentMediaSource = mediaSource;
return videoElement[0]; return videoElement[0];
}; }
}; };
})(); })();

View File

@ -60,8 +60,19 @@
return Math.floor(10000000 * (mediaElement || currentMediaElement).currentTime) + self.startTimeTicksOffset; return Math.floor(10000000 * (mediaElement || currentMediaElement).currentTime) + self.startTimeTicksOffset;
}; };
self.clearPauseStop = function() {
if (self.pauseStop) {
console.log('clearing pause stop timer');
window.clearTimeout(self.pauseStop);
self.pauseStop = null;
}
};
self.onPlaybackStopped = function () { self.onPlaybackStopped = function () {
self.clearPauseStop();
$(this).off('ended.playbackstopped'); $(this).off('ended.playbackstopped');
self.currentTimeElement.empty(); self.currentTimeElement.empty();
@ -1159,7 +1170,7 @@
var getItemFields = "MediaSources,Chapters"; var getItemFields = "MediaSources,Chapters";
self.getCurrentTargetInfo = function() { self.getCurrentTargetInfo = function () {
return self.getTargets()[0]; return self.getTargets()[0];
}; };
} }