]> www.vanbest.org Git - motioneye-debian/commitdiff
added frame rate dimmer support
authorCalin Crisan <ccrisan@gmail.com>
Sun, 6 Dec 2015 23:05:09 +0000 (01:05 +0200)
committerCalin Crisan <ccrisan@gmail.com>
Sun, 6 Dec 2015 23:05:09 +0000 (01:05 +0200)
motioneye/prefs.py
motioneye/static/js/main.js
motioneye/templates/main.html

index 35f3e961ccfa4758b6414c6ea7ecd85ef0f6824e..6d6c004d3cdebafe7e0a7ce1653c3e109632091c 100644 (file)
@@ -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):
index e1e3986459dc30eb8edfb503f4a2ee656f45dd21..22f54939fdad50cc725de51dae9cdd396a6f06f5 100644 (file)
@@ -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 */
index f7664ce972a2a20915a33ac48c3cfdc33fdcf60a..dd501a9d0e95a20d4f42e65d79545462619c7e7a 100644 (file)
                         <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 -->