1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

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