From b0326ccd1eb499c779481e89874e876fc6bde830 Mon Sep 17 00:00:00 2001 From: Cat Date: Tue, 20 Dec 2016 16:57:56 +0100 Subject: [PATCH] LSP: thumbnailing; currently disabled --- CMakeLists.txt | 6 +++ embed/test.html | 1 + embed/wrappers/img.js | 22 ++++++++++ lsp/main.css | 7 ++++ lsp/minified.js | 15 +++---- lsp/mist.js | 62 +++++++++++++++++++++++++---- src/output/output_http_internal.cpp | 6 +++ 7 files changed, 105 insertions(+), 14 deletions(-) create mode 100644 embed/wrappers/img.js diff --git a/CMakeLists.txt b/CMakeLists.txt index 0d898d53..fb5ba476 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -165,6 +165,7 @@ set(libSources ${SOURCE_DIR}/lib/util.cpp ${SOURCE_DIR}/lib/vorbis.cpp ) + ######################################## # MistLib - Build # ######################################## @@ -319,6 +320,7 @@ add_executable(MistOutHTTP generated/polytrope.js.h generated/dashjs.js.h generated/videojs.js.h + generated/img.js.h generated/playerdash.js.h generated/playervideo.js.h generated/core.js.h @@ -418,6 +420,10 @@ add_custom_command(OUTPUT generated/videojs.js.h COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/videojs.js video_js generated/videojs.js.h DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/videojs.js ) +add_custom_command(OUTPUT generated/img.js.h + COMMAND ./sourcery ${SOURCE_DIR}/embed/wrappers/img.js img_js generated/img.js.h + DEPENDS sourcery ${SOURCE_DIR}/embed/wrappers/img.js +) add_custom_command(OUTPUT generated/playerdash.js.h COMMAND ./sourcery ${SOURCE_DIR}/embed/players/dash.js playerdash_js generated/playerdash.js.h DEPENDS sourcery ${SOURCE_DIR}/embed/players/dash.js diff --git a/embed/test.html b/embed/test.html index e3309ae4..ec097278 100644 --- a/embed/test.html +++ b/embed/test.html @@ -31,6 +31,7 @@ + diff --git a/embed/wrappers/img.js b/embed/wrappers/img.js new file mode 100644 index 00000000..7485dc41 --- /dev/null +++ b/embed/wrappers/img.js @@ -0,0 +1,22 @@ +mistplayers.img = { + name: 'HTML img tag', + mimes: ['html5/image/jpeg'], + priority: Object.keys(mistplayers).length + 1, + isMimeSupported: function (mimetype) { + return (this.mimes.indexOf(mimetype) == -1 ? false : true); + }, + isBrowserSupported: function (mimetype,source,options,streaminfo) { + //only use this if we are sure we just want an image + if ((options.forceType) || (options.forceSource) || (options.forcePlayer)) { return true; } + return false; + }, + player: function(){} +}; +var p = mistplayers.img.player; +p.prototype = new MistPlayer(); +p.prototype.build = function (options) { + var ele = this.element('img'); + ele.src = options.src; + ele.style.display = 'block'; + return ele; +} diff --git a/lsp/main.css b/lsp/main.css index 03317178..5b5f1f02 100644 --- a/lsp/main.css +++ b/lsp/main.css @@ -792,6 +792,13 @@ button.return:before { background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOmNjPSJodHRwOi8vY3JlYXRpdmVjb21tb25zLm9yZy9ucyMiIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgeG1sbnM6c3ZnPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2ZXJzaW9uPSIxLjEiIGlkPSJzdmcyIiBoZWlnaHQ9IjQ1IiB3aWR0aD0iNDUiPjxkZWZzIGlkPSJkZWZzNCIgLz48bWV0YWRhdGEgaWQ9Im1ldGFkYXRhNyI+PHJkZjpSREY+PGNjOldvcmsgcmRmOmFib3V0PSIiPjxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PjxkYzp0eXBlIHJkZjpyZXNvdXJjZT0iaHR0cDovL3B1cmwub3JnL2RjL2RjbWl0eXBlL1N0aWxsSW1hZ2UiIC8+PGRjOnRpdGxlPjwvZGM6dGl0bGU+PC9jYzpXb3JrPjwvcmRmOlJERj48L21ldGFkYXRhPjxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTEwMDcuMzYyMikiIGlkPSJsYXllcjEiPjxwYXRoIHRyYW5zZm9ybT0ibWF0cml4KDEuMDE0MTgyNywtMC41ODU1Mzg2NywwLjU4NTUzODY3LDEuMDE0MTgyNywtMC40ODQxOTgzMSwxMDIyLjg4OTMpIiBkPSJNIDEwLjMxMjUsLTYuMzQzNzUgQSAyLjk0MTYxODYsMi45NDE2MTg2IDAgMCAwIDcuOTA2MjUsLTQuODc1IGwgLTE0LjEyNSwyNC41IGEgMi45NDE2MTg2LDIuOTQxNjE4NiAwIDAgMCAyLjU2MjUsNC40MDYyNSBsIDI4LjI4MTI1LDAgQSAyLjk0MTYxODYsMi45NDE2MTg2IDAgMCAwIDI3LjE1NjI1LDE5LjYyNSBMIDEzLC00Ljg3NSBhIDIuOTQxNjE4NiwyLjk0MTYxODYgMCAwIDAgLTIuNjg3NSwtMS40Njg3NSB6IiBpZD0icGF0aDM4MDkiIHN0eWxlPSJmaWxsOiNmZmZmZmY7ZmlsbC1vcGFjaXR5OjE7ZmlsbC1ydWxlOmV2ZW5vZGQ7c3Ryb2tlOiMwMDAwMDA7c3Ryb2tlLW9wYWNpdHk6MSIgLz48L2c+PC9zdmc+"); background-repeat: no-repeat; background-position: center center; + line-height: 100px; +} +.preview_icons .image img { + max-width: 200px; + max-height: 100px; + min-width: 0px; + vertical-align: middle; } .preview_icons .image.folder { background-image: url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciICB2ZXJzaW9uPSIxLjEiICBpZD0ic3ZnMiIgIHZpZXdCb3g9IjAgMCA0NSA0NSIgIGhlaWdodD0iNDUiICB3aWR0aD0iNDUiPiA8ZGVmcyAgIGlkPSJkZWZzNCIgLz4gPG1ldGFkYXRhICAgaWQ9Im1ldGFkYXRhNyI+ICA8cmRmOlJERj4gICA8Y2M6V29yayAgICAgcmRmOmFib3V0PSIiPiAgICA8ZGM6Zm9ybWF0PmltYWdlL3N2Zyt4bWw8L2RjOmZvcm1hdD4gICAgPGRjOnR5cGUgICAgICByZGY6cmVzb3VyY2U9Imh0dHA6Ly9wdXJsLm9yZy9kYy9kY21pdHlwZS9TdGlsbEltYWdlIiAvPiAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4gICA8L2NjOldvcms+ICA8L3JkZjpSREY+IDwvbWV0YWRhdGE+IDxnICAgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCwtMTAwNy4zNjIyKSIgICBpZD0ibGF5ZXIxIj4gIDxwYXRoICAgIGlkPSJyZWN0NDE0NyIgICAgZD0ibSAyNi41MDAwMDEsMTAxNC4yOTk3IC01LjMzMzMzNCw1LjkyNzEgLTE4LjY2NjY2NywwIDAsMjkuNjM1NCAyNCwwIDE2LDAgYyAwLC0xMS44NTQyIDAsLTIzLjcwODMgMCwtMzUuNTYyNSB6IiAgICBzdHlsZT0ib3BhY2l0eToxO2ZpbGw6I2ZmZmZmZjtmaWxsLW9wYWNpdHk6MTtmaWxsLXJ1bGU6ZXZlbm9kZDtzdHJva2U6IzAwMDAwMDtzdHJva2Utd2lkdGg6MTtzdHJva2UtbWl0ZXJsaW1pdDo0O3N0cm9rZS1kYXNoYXJyYXk6bm9uZTtzdHJva2UtZGFzaG9mZnNldDowO3N0cm9rZS1vcGFjaXR5OjEiIC8+IDwvZz48L3N2Zz4="); diff --git a/lsp/minified.js b/lsp/minified.js index d2304f92..8ebabd65 100644 --- a/lsp/minified.js +++ b/lsp/minified.js @@ -76,13 +76,14 @@ type:"password",validate:["required",function(a,b){return a!=$(".match_password" delete mist.user.rawpassword}}]}]));break;case "Account created":UI.elements.menu.addClass("hide");c.append($("

").text("Your account has been created succesfully.")).append(UI.buildUI([{type:"text",text:"Would you like to enable all (currently) available protocols with their default settings?"},{type:"buttons",buttons:[{label:"Enable protocols",type:"save","function":function(){if(mist.data.config.protocols)c.append("Unable to enable all protocols as protocol settings already exist.
");else{c.append("Retrieving available protocols..
"); mist.send(function(a){var b=[],d;for(d in a.capabilities.connectors)if(a.capabilities.connectors[d].required)c.append('Could not enable protocol "'+d+'" because it has required settings.
');else{b.push({connector:d});c.append('Enabled protocol "'+d+'".
')}c.append("Saving protocol settings..
");mist.send(function(){c.append("Protocols enabled. Redirecting..");setTimeout(function(){UI.navto("Overview")},5E3)},{config:{protocols:b}})},{capabilities:true})}}},{label:"Skip",type:"cancel","function":function(){UI.navto("Overview")}}]}])); break;case "Overview":var f=$("").text("Loading.."),q=$(""),p=$("").addClass("logs"),l=$(""),u=$(""),h=$(""),i=$("");c.append(UI.buildUI([{type:"help",help:"You can find most basic information about your MistServer here.
You can also set the debug level and force a save to the config.json file that MistServer uses to save your settings. "},{type:"span",label:"Version",pointer:{main:mist.data.config,index:"version"}},{type:"span",label:"Version check",value:f, -LTSonly:!0},{type:"span",label:"Server time",value:u},{type:"span",label:"Configured streams",value:mist.data.streams?Object.keys(mist.data.streams).length:0},{type:"span",label:"Active streams",value:q},{type:"span",label:"Current connections",value:l},{type:"span",label:"Enabled protocols",value:h},{type:"span",label:"Disabled protocols",value:i},{type:"span",label:"Recent problems",value:p},$("
"),{type:"str",label:"Human readable name",pointer:{main:mist.data.config,index:"name"},help:"You can name your MistServer here for personal use. You'll still need to set host name within your network yourself."}, -{type:"debug",label:"Debug level",pointer:{main:mist.data.config,index:"debug"},help:"You can set the amount of debug information MistServer saves in the log. A full reboot of MistServer is required before some components of MistServer can post debug information."},{type:"checkbox",label:"Force configurations save",pointer:{main:mist.data,index:"save"},help:"Tick the box in order to force an immediate save to the config.json MistServer uses to save your settings. Saving will otherwise happen upon closing MistServer. Don't forget to press save after ticking the box."}, -{type:"buttons",buttons:[{type:"save",label:"Save","function":function(){var a={config:mist.data.config};if(mist.data.save)a.save=mist.data.save;mist.send(function(){UI.navto("Overview")},a)}}]}]));if(mist.data.LTS){var k=function(){var a=mist.stored.get().update||{};"uptodate"in a?a.error?f.addClass("red").text(a.error):a.uptodate?f.text("Your version is up to date.").addClass("green"):f.addClass("red").text("Version outdated!").append($("