From 0a029d5c5ca7a153f22765e7498d507bb01b3f95 Mon Sep 17 00:00:00 2001 From: Cat Date: Tue, 24 Oct 2017 15:22:02 +0200 Subject: [PATCH 1/3] Embed: videojs track switching fix --- embed/wrappers/videojs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/embed/wrappers/videojs.js b/embed/wrappers/videojs.js index 825bbeb6..9ceaf6fa 100644 --- a/embed/wrappers/videojs.js +++ b/embed/wrappers/videojs.js @@ -206,7 +206,7 @@ if (document.fullscreenEnabled || document.webkitFullscreenEnabled || document.m }; } p.prototype.updateSrc = function(src){ - if (videojs in this) { + if ("videojs" in this) { if (src == '') { this.videojs.dispose(); return; From e75ae50c0c1db450218b8416e7ef41b514f5202c Mon Sep 17 00:00:00 2001 From: Cat Date: Tue, 24 Oct 2017 16:21:57 +0200 Subject: [PATCH 2/3] Embed: support for new subtitle track format --- embed/core.js | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/embed/core.js b/embed/core.js index ff9a1e19..b12ded02 100644 --- a/embed/core.js +++ b/embed/core.js @@ -455,13 +455,13 @@ MistPlayer.prototype.buildMistControls = function(){ if ('name' in tracks[i][j]) { name = tracks[i][j].name; } + else if ('desc' in tracks[i][j]) { + name = tracks[i][j].desc; + } else if ('lang' in tracks[i][j]) { name = tracks[i][j].lang; o.setAttribute('data-lang',tracks[i][j].lang); } - else if ('desc' in tracks[i][j]) { - name = tracks[i][j].desc; - } else { name = 'Track '+(Number(j)+1); } @@ -1148,20 +1148,25 @@ function mistPlay(streamName,options) { var skip = false; switch (t.type) { case 'video': - t.desc = [t.width+'x'+t.height,/*Math.round(t.bps/1024)+'kbps',*/t.fpks/1e3+'fps',t.codec]; + t.desc = [t.width+'x'+t.height,Math.round(t.bps/1024)+'kbps',t.fpks/1e3+'fps',t.codec]; if (t.lang) { - t.desc.unshift(t.lang); + t.desc.unshift(t.language); } break; case 'audio': - t.desc = [(t.channels == 2 ? 'Stereo' : (t.channels == 1 ? 'Mono' : t.channels+' channels')),/*Math.round(t.bps/1024)+'kbps',*/Math.round(t.rate/1000)+'kHz',t.codec]; + t.desc = [(t.channels == 2 ? 'Stereo' : (t.channels == 1 ? 'Mono' : t.channels+' channels')),Math.round(t.bps/1024)+'kbps',Math.round(t.rate/1000)+'kHz',t.codec]; if (t.lang) { - t.desc.unshift(t.lang); + t.desc.unshift(t.language); } break; + case 'meta': case 'subtitle': - t.desc = [t.lang,t.codec]; - break; + //subtitles are type meta and codec subtitle in Mist > v2.13, still support type subtitle though + if ((t.type == 'subtitle') || (t.codec == 'subtitle')) { + t.type = "subtitle"; + t.desc = [t.language]; + break; + } default: skip = true; break; From ba11c868c94023e61ba40a3966a6a66c89cdddfa Mon Sep 17 00:00:00 2001 From: Cat Date: Thu, 2 Nov 2017 13:29:38 +0100 Subject: [PATCH 3/3] Embed: changed track naming to only list the difference, or a number if all have equal meta --- embed/core.js | 81 ++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 71 insertions(+), 10 deletions(-) diff --git a/embed/core.js b/embed/core.js index b12ded02..19b37e27 100644 --- a/embed/core.js +++ b/embed/core.js @@ -1148,23 +1148,29 @@ function mistPlay(streamName,options) { var skip = false; switch (t.type) { case 'video': - t.desc = [t.width+'x'+t.height,Math.round(t.bps/1024)+'kbps',t.fpks/1e3+'fps',t.codec]; - if (t.lang) { - t.desc.unshift(t.language); - } + t.desc = [ + ("lang" in t ? t.language : "unknown"), + t.width+'x'+t.height, + (t.bps == 0 ? "unknown": (t.bps > 1024*1024/8 ? Math.round(t.bps/1024/1024*8)+'mbps': Math.round(t.bps/1024*8)+'kbps')), + (t.fpks == 0 ? "unknown" : t.fpks/1e3+'fps'), + t.codec + ]; break; case 'audio': - t.desc = [(t.channels == 2 ? 'Stereo' : (t.channels == 1 ? 'Mono' : t.channels+' channels')),Math.round(t.bps/1024)+'kbps',Math.round(t.rate/1000)+'kHz',t.codec]; - if (t.lang) { - t.desc.unshift(t.language); - } + t.desc = [ + ("lang" in t ? t.language : "unknown"), + (t.channels == 2 ? 'Stereo' : (t.channels == 1 ? 'Mono' : "Surround ("+t.channels+'ch)')), + (t.bps == 0 ? "unknown": (t.bps > 1024*1024/8 ? Math.round(t.bps/1024/1024*8)+'mbps': Math.round(t.bps/1024*8)+'kbps')), + Math.round(t.rate/1000)+'kHz', + t.codec + ]; break; case 'meta': case 'subtitle': //subtitles are type meta and codec subtitle in Mist > v2.13, still support type subtitle though if ((t.type == 'subtitle') || (t.codec == 'subtitle')) { t.type = "subtitle"; - t.desc = [t.language]; + t.desc = [("lang" in t ? t.language : "unknown")]; break; } default: @@ -1172,9 +1178,64 @@ function mistPlay(streamName,options) { break; } if (skip) { continue; } - t.desc = t.desc.join(' '); tracks[t.type].push(t); } + //loop through the tracks again and compare them to one another to decide what to display as description + for (var cat in tracks) { + if (tracks[cat].length == 1) { + //there is only one track, show all info that isn't "unknown" + for (var i in tracks[cat]) { + var t = tracks[cat][i]; + for (var j = t.desc.length-1; j >= 0; j--) { + if ((t.desc[j] == "unknown") && (t.desc.length > 1)) { + t.desc.splice(j,1); + } + } + t.desc = t.desc.join(" "); + } + } + else { + var equal = false; + var show = []; + //sort by track id + tracks[cat].sort(function(a,b){ + return a.trackid - b.trackid; + }); + + for (var i in tracks[cat]) { + var t = tracks[cat][i]; + if (equal == false) { + //set equal to the first track description + equal = t.desc; + continue; + } + for (var j in t.desc) { + //compare each value to the one in equal, if it's not the same, mark it + if ((t.desc[j] != equal[j]) && (show.indexOf(j) < 0)) { + show.push(j); + } + } + } + if (show.length) { + for (var i in tracks[cat]) { + var t = tracks[cat][i]; + //gather indexes in show + var str = []; + for (var j in show) { + str.push(t.desc[show[j]]); + } + t.desc = str.join(" "); + } + } + else { + //all info is the same, show a track index + for (var i in tracks[cat]) { + var t = tracks[cat][i]; + t.desc = "Track "+(Number(i)+1); + } + } + } + } player.tracks = tracks; if (tracks.subtitle.length) { var vttsrc = false;