From: Calin Crisan <ccrisan@gmail.com>
Date: Sun, 6 Dec 2015 23:05:09 +0000 (+0200)
Subject: added frame rate dimmer support
X-Git-Url: http://www.vanbest.org/gitweb/?a=commitdiff_plain;h=91e9037f5243aaf0b754c4ae145a01b8d95188fe;p=motioneye-debian

added frame rate dimmer support
---

diff --git a/motioneye/prefs.py b/motioneye/prefs.py
index 35f3e96..6d6c004 100644
--- a/motioneye/prefs.py
+++ b/motioneye/prefs.py
@@ -24,7 +24,8 @@ import settings
 
 _PREFS_FILE_NAME = 'prefs.json'
 _DEFAULT_PREFS = {
-    'layout_columns': 3
+    'layout_columns': 3,
+    'refresh_factor': 1
 }
 
 _prefs = None
@@ -89,10 +90,13 @@ def get(username, key=None):
         _load()
 
     if key:
-        return _prefs.get(username, {}).get(key, _DEFAULT_PREFS.get(key))
+        prefs = _prefs.get(username, {}).get(key, _DEFAULT_PREFS.get(key))
     
     else:
-        return _prefs.get(username, _DEFAULT_PREFS)
+        prefs = dict(_DEFAULT_PREFS)
+        prefs.update(_prefs.get(username, {}))
+        
+    return prefs
 
 
 def set(username, key, value):
diff --git a/motioneye/static/js/main.js b/motioneye/static/js/main.js
index e1e3986..22f5493 100644
--- a/motioneye/static/js/main.js
+++ b/motioneye/static/js/main.js
@@ -5,6 +5,7 @@ var refreshDisabled = {}; /* dictionary indexed by cameraId, tells if refresh is
 var fullScreenCameraId = null;
 var inProgress = false;
 var refreshInterval = 15; /* milliseconds */
+var refreshFactor = 1;
 var username = '';
 var password = '';
 var basePath = null;
@@ -699,6 +700,10 @@ function initUI() {
         setLayoutColumns(columns);
         savePrefs();
     });
+    $('#framerateDimmerSlider').change(function () {
+        refreshFactor = parseInt(this.value) / 100;
+        savePrefs();
+    });
     
     /* various change handlers */
     $('#storageDeviceSelect').change(function () {
@@ -1256,7 +1261,8 @@ function configUiValid() {
 
 function prefsUi2Dict() {
     var dict = {
-        'layout_columns': $('#layoutColumnsSlider').val()
+        'layout_columns': $('#layoutColumnsSlider').val(),
+        'refresh_factor': $('#framerateDimmerSlider').val() / 100
     };
 
     return dict;
@@ -1264,12 +1270,14 @@ function prefsUi2Dict() {
 
 function dict2PrefsUi(dict) {
     $('#layoutColumnsSlider').val(dict['layout_columns']);
+    $('#framerateDimmerSlider').val(dict['refresh_factor'] * 100);
 
     updateConfigUI();
 }
 
 function applyPrefs(dict) {
     setLayoutColumns(dict['layout_columns']);
+    refreshFactor = dict['refresh_factor'];
 }
 
 function savePrefs() {
@@ -4272,6 +4280,7 @@ function refreshCameraFrames() {
         
         var count = parseInt(1000 / (refreshInterval * this.config['streaming_framerate']));
         var serverSideResize = this.config['streaming_server_resize'];
+        count /= refreshFactor;
         
         if (this.img.error) {
             /* in case of error, decrease the refresh rate to 1 fps */
diff --git a/motioneye/templates/main.html b/motioneye/templates/main.html
index f7664ce..dd501a9 100644
--- a/motioneye/templates/main.html
+++ b/motioneye/templates/main.html
@@ -109,6 +109,11 @@
                         <td class="settings-item-value"><input type="text" class="range styled prefs" id="layoutColumnsSlider"></td>
                         <td><span class="help-mark" title="configures the number of columns to use when laying out the camera frames">?</span></td>
                     </tr>
+                    <tr class="settings-item" min="0" max="100" snap="2" ticksnum="6" decimals="0">
+                        <td class="settings-item-label"><span class="settings-item-label">Frame Rate Dimmer</span></td>
+                        <td class="settings-item-value"><input type="text" class="range styled prefs" id="framerateDimmerSlider"></td>
+                        <td><span class="help-mark" title="dims the actual frame refreshing rate to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
+                    </tr>
                 </table>
                 
                 <!-- General Settings -->