From 8f9d87bbc90bec00c3497c42b52c0cb4b29ddcc1 Mon Sep 17 00:00:00 2001 From: Arjun Roychowdhury Date: Thu, 5 Nov 2015 10:09:11 -0500 Subject: gapless playback control as well as control for image quality in event view --- www/js/DataModel.js | 24 +++++++++++++++++++++++- www/js/DevOptionsCtrl.js | 6 ++++++ www/js/EventCtrl.js | 46 +++++++++++++++++++++++++++++++--------------- www/js/app.js | 1 + 4 files changed, 61 insertions(+), 16 deletions(-) (limited to 'www/js') diff --git a/www/js/DataModel.js b/www/js/DataModel.js index c6a7dba7..4afd4ad4 100644 --- a/www/js/DataModel.js +++ b/www/js/DataModel.js @@ -35,6 +35,7 @@ angular.module('zmApp.controllers') 'streamingurl': "", 'maxFPS': "3", // image streaming FPS 'montageQuality': "50", // montage streaming quality in % + 'singleImageQuality': "50", // single streaming quality in % 'useSSL':false, // "1" if HTTPS 'keepAwake':true, // don't dim/dim during live view 'isUseAuth':true, // true if user wants ZM auth @@ -50,6 +51,7 @@ angular.module('zmApp.controllers') 'persistMontageOrder':false, 'onTapScreen':'events', 'enableh264':true, + 'gapless':false, }; @@ -209,6 +211,12 @@ angular.module('zmApp.controllers') window.localStorage.getItem("montageQuality"); } + + if (window.localStorage.getItem("singleImageQuality") != undefined) { + loginData.singleImageQuality = + window.localStorage.getItem("singleImageQuality"); + + } if (window.localStorage.getItem("password") != undefined) { loginData.password = @@ -278,6 +286,14 @@ angular.module('zmApp.controllers') console.log("montageQuality " + loginData.montageQuality); } + + if (window.localStorage.getItem("singleImageQuality") != undefined) { + loginData.singleImageQuality = + window.localStorage.getItem("singleImageQuality"); + + + } + if (window.localStorage.getItem("useSSL") != undefined) { var sslvalue = window.localStorage.getItem("useSSL"); loginData.useSSL = (sslvalue == "1") ? true:false; @@ -302,6 +318,10 @@ angular.module('zmApp.controllers') loginData.enableh264 = (enableh264 == "1") ? true:false; } + if (window.localStorage.getItem("gapless") != undefined) { + var gapless = window.localStorage.getItem("gapless"); + loginData.gapless = (gapless == "1") ? true:false; + } if (window.localStorage.getItem("usePin") != undefined) { var pinValue = window.localStorage.getItem("usePin"); @@ -436,7 +456,8 @@ angular.module('zmApp.controllers') window.localStorage.setItem("canSwipeMonitors", loginData.canSwipeMonitors?"1":"0"); window.localStorage.setItem("persistMontageOrder", loginData.persistMontageOrder?"1":"0"); - window.localStorage.setItem("enableh264", loginData.enableh264?"1":"0"); + window.localStorage.setItem("enableh264", loginData.enableh264?"1":"0"); + window.localStorage.setItem("gapless", loginData.gapless?"1":"0"); window.localStorage.setItem("pinCode", loginData.pinCode); @@ -445,6 +466,7 @@ angular.module('zmApp.controllers') window.localStorage.setItem("keepAwake", loginData.keepAwake?"1":"0"); window.localStorage.setItem("maxMontage", loginData.maxMontage); window.localStorage.setItem("montageQuality", loginData.montageQuality); + window.localStorage.setItem("singleImageQuality", loginData.singleImageQuality); window.localStorage.setItem("refreshSec", loginData.refreshSec); diff --git a/www/js/DevOptionsCtrl.js b/www/js/DevOptionsCtrl.js index fe92877d..57e694df 100644 --- a/www/js/DevOptionsCtrl.js +++ b/www/js/DevOptionsCtrl.js @@ -82,6 +82,12 @@ angular.module('zmApp.controllers').controller('zmApp.DevOptionsCtrl', ['$scope' (parseInt($scope.loginData.montageQuality) > 70)) { $scope.loginData.montageQuality = zm.defaultMontageQuality.toString(); } + + + if ((parseInt($scope.loginData.singleImageQuality) < zm.safeImageQuality) || + (parseInt($scope.loginData.singleImageQuality) > 100)) { + $scope.loginData.singleImageQuality = zm.safeImageQuality.toString(); + } ZMDataModel.zmDebug("SaveDevOptions: Saving to disk"); diff --git a/www/js/EventCtrl.js b/www/js/EventCtrl.js index 5e9cff09..0f16ed31 100644 --- a/www/js/EventCtrl.js +++ b/www/js/EventCtrl.js @@ -657,21 +657,30 @@ angular.module('zmApp.controllers') { // currentEvent is updated with the currently playing event in prepareModalEvent() ZMDataModel.zmLog ("Playback of event " + currentEvent.Event.Id + " is finished"); - neighborEvents(currentEvent.Event.Id) - .then(function (success) { - - // lets give a second before gapless transition to the next event - $timeout ( function() { - $scope.nextId = success.next; - $scope.prevId = success.prev; - ZMDataModel.zmDebug ("Gapless move to event " + $scope.nextId); - jumpToEvent($scope.nextId, 1); - },1000); - }, - function (error) { - ZMDataModel.zmDebug("Error in neighbor call " + JSON.stringify(error)); - }); + if ($scope.loginData.gapless) + { + + neighborEvents(currentEvent.Event.Id) + .then(function (success) { + + // lets give a second before gapless transition to the next event + $timeout ( function() { + $scope.nextId = success.next; + $scope.prevId = success.prev; + ZMDataModel.zmDebug ("Gapless move to event " + $scope.nextId); + jumpToEvent($scope.nextId, 1); + },1000); + }, + function (error) { + ZMDataModel.zmDebug("Error in neighbor call " + + JSON.stringify(error)); + }); + } + else + { + ZMDataModel.zmDebug ("not going to next event, gapless is off"); + } } //------------------------------------------------------------------------- @@ -1226,7 +1235,14 @@ angular.module('zmApp.controllers') } - + $scope.toggleGapless = function() + { + + $scope.loginData.gapless = !$scope.loginData.gapless; + ZMDataModel.setLogin($scope.loginData); + + }; + //-------------------------------------------------------- //Navigate to next/prev event in full screen mode //-------------------------------------------------------- diff --git a/www/js/app.js b/www/js/app.js index eda3db27..dcc80ae6 100644 --- a/www/js/app.js +++ b/www/js/app.js @@ -43,6 +43,7 @@ angular.module('zmApp', [ loginInterval: 300000, //5m*60s*1000 - ZM auto login after 5 mins loadingTimeout: 15000, safeMontageLimit: 10, + safeImageQuality:10, maxFPS: 30, defaultFPS: 3, maxMontageQuality: 70, -- cgit v1.2.3