From 7b96407e9bf1d2aa342212e55775caf31957364d Mon Sep 17 00:00:00 2001 From: Cat Date: Mon, 21 Nov 2016 15:24:36 +0100 Subject: [PATCH] LSP - Preview: Use source select box actually forces a source, not a mime type Embed - added forceSource option - player error messages clear the container html before appending --- embed/core.js | 25 +++++++++++++++++++------ embed/test.html | 5 +++-- embed/wrappers/html5.js | 41 ++++++++++++++++++++++++++++++++++++++++- lsp/minified.js | 6 +++--- lsp/mist.js | 4 ++-- 5 files changed, 67 insertions(+), 14 deletions(-) diff --git a/embed/core.js b/embed/core.js index d0bff1ce..1660a5e9 100644 --- a/embed/core.js +++ b/embed/core.js @@ -584,6 +584,12 @@ function mistPlay(streamName,options) { embedLog('Forcing '+options.forceType); forceType = options.forceType; } + var forceSource = false; + if (('forceSource' in options) && (options.forceSource)) { + forceSource = options.forceSource; + forceType = streaminfo.source[forceSource].type; + embedLog('Forcing source '+options.forceSource+': '+forceType+' @ '+streaminfo.source[forceSource].url); + } var forceSupportCheck = false; if (('forceSupportCheck' in options) && (options.forceSupportCheck)) { embedLog('Forcing a full support check'); @@ -620,14 +626,21 @@ function mistPlay(streamName,options) { return false; } function checkMime(p_shortname,mime) { - for (var s in streaminfo.source) { - if (streaminfo.source[s].type == mime) { - if (mistplayers[p_shortname].isBrowserSupported(mime,streaminfo.source[s],options)) { - embedLog('Found a working combo: '+mistplayers[p_shortname].name+' with '+mime+' @ '+streaminfo.source[s].url); + var loop; + if (forceSource) { + loop = [streaminfo.source[forceSource]]; + } + else { + loop = streaminfo.source; + } + for (var s in loop) { + if (loop[s].type == mime) { + if (mistplayers[p_shortname].isBrowserSupported(mime,loop[s],options)) { + embedLog('Found a working combo: '+mistplayers[p_shortname].name+' with '+mime+' @ '+loop[s].url); streaminfo.working[p_shortname].push(mime); if (!source) { mistPlayer = p_shortname; - source = streaminfo.source[s]; + source = loop[s]; } if (!forceSupportCheck) { return source; @@ -656,6 +669,7 @@ function mistPlay(streamName,options) { } } + options.target.innerHTML = ''; if (mistPlayer) { //create the options to send to the player var playerOpts = { @@ -785,7 +799,6 @@ function mistPlay(streamName,options) { //build the player player.options = playerOpts; var element = player.build(playerOpts); - options.target.innerHTML = ''; options.target.appendChild(element); element.setAttribute('data-player',mistPlayer); element.setAttribute('data-mime',source.type); diff --git a/embed/test.html b/embed/test.html index 74c3133c..78d8d869 100644 --- a/embed/test.html +++ b/embed/test.html @@ -21,8 +21,8 @@ - - + + @@ -86,6 +86,7 @@ target: c, forcePlayer: tryplayers[i], //forceType: 'flash/7', + //forceSource: 5, loop: true }); } diff --git a/embed/wrappers/html5.js b/embed/wrappers/html5.js index 3982f7e9..00669f85 100644 --- a/embed/wrappers/html5.js +++ b/embed/wrappers/html5.js @@ -144,7 +144,46 @@ p.prototype.build = function (options,callback) { //forward events ele.addEventListener('error',function(e){ - me.adderror(e.message); + var msg; + if ('message' in e) { + msg = e.message; + } + else { + msg = 'readyState: '; + switch (me.element.readyState) { + case 0: + msg += 'HAVE_NOTHING'; + break; + case 1: + msg += 'HAVE_METADATA'; + break; + case 2: + msg += 'HAVE_CURRENT_DATA'; + break; + case 3: + msg += 'HAVE_FUTURE_DATA'; + break; + case 4: + msg += 'HAVE_ENOUGH_DATA'; + break; + } + msg += ' networkState: '; + switch (me.element.networkState) { + case 0: + msg += 'NETWORK_EMPTY'; + break; + case 1: + msg += 'NETWORK_IDLE'; + break; + case 2: + msg += 'NETWORK_LOADING'; + break; + case 3: + msg += 'NETWORK_NO_SOURCE'; + break; + } + } + me.adderror(msg); },true); var events = ['abort','canplay','canplaythrough','durationchange','emptied','ended','interruptbegin','interruptend','loadeddata','loadedmetadata','loadstart','pause','play','playing','ratechange','seeked','seeking','stalled','volumechange','waiting']; for (var i in events) { diff --git a/lsp/minified.js b/lsp/minified.js index a374274b..cd4d6fb3 100644 --- a/lsp/minified.js +++ b/lsp/minified.js @@ -118,9 +118,9 @@ break;case "TS":case "TS.exe":a.push({label:"TS",type:"span",clipboard:true,read {type:"save",label:"Save and Preview","function":function(){ja("Preview")},classes:["saveandpreview"]}]}]));c.find("[name=name]").keyup(function(){W()});W();break;case "Preview":""==b&&UI.navto("Streams");r=":8080";for(g in mist.data.config.protocols)if(d=mist.data.config.protocols[g],"HTTP"==d.connector||"HTTP.exe"==d.connector)r=d.port?":"+d.port:":8080";var s=parseURL(mist.user.host),P=s.protocol+s.host+r+"/",I=$("
").css({display:"flex","flex-flow":"row wrap"}),s="";-1==b.indexOf("+")&&(s= $("