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

index fec73cb8a3c8828cdacad36644e3218141f9dd82..51e7a43fc9bb1877c6353bb24a851b37f30805c7 100644 (file)
@@ -847,6 +847,9 @@ class PictureHandler(BaseHandler):
         width = self.get_argument('width', None)
         height = self.get_argument('height', None)
         
+        width = width and float(width)
+        height = height and float(height)
+        
         camera_config = config.get_camera(camera_id)
         if utils.local_motion_camera(camera_config):
             picture = mediafiles.get_current_picture(camera_config,
index d008ad664932e2e30e0f3a85df3f45e9dd241870..bd8bbbe2a55da19ac7c6cae8fb3344e667e543ba 100644 (file)
@@ -741,6 +741,11 @@ def get_current_picture(camera_config, width, height):
     sio = StringIO.StringIO(jpg)
     image = Image.open(sio)
     
+    if width and width < 1: # given as percent
+        width = int(width * image.size[0])
+    if height and height < 1: # given as percent
+        height = int(height * image.size[1])
+
     width = width and int(width) or image.size[0]
     height = height and int(height) or image.size[1]
     
index 6d6c004d3cdebafe7e0a7ce1653c3e109632091c..e94ed7d9833f1f926e431be8bf61e371a97338ca 100644 (file)
@@ -25,7 +25,8 @@ import settings
 _PREFS_FILE_NAME = 'prefs.json'
 _DEFAULT_PREFS = {
     'layout_columns': 3,
-    'refresh_factor': 1
+    'framerate_factor': 1,
+    'resolution_factor': 1
 }
 
 _prefs = None
index 22f54939fdad50cc725de51dae9cdd396a6f06f5..40ead7331db2fc04e60d551fb30ece6aace276a0 100644 (file)
@@ -5,7 +5,8 @@ var refreshDisabled = {}; /* dictionary indexed by cameraId, tells if refresh is
 var fullScreenCameraId = null;
 var inProgress = false;
 var refreshInterval = 15; /* milliseconds */
-var refreshFactor = 1;
+var framerateFactor = 1;
+var resolutionFactor = 1;
 var username = '';
 var password = '';
 var basePath = null;
@@ -701,7 +702,11 @@ function initUI() {
         savePrefs();
     });
     $('#framerateDimmerSlider').change(function () {
-        refreshFactor = parseInt(this.value) / 100;
+        framerateFactor = parseInt(this.value) / 100;
+        savePrefs();
+    });
+    $('#resolutionDimmerSlider').change(function () {
+        resolutionFactor = parseInt(this.value) / 100;
         savePrefs();
     });
     
@@ -1262,7 +1267,8 @@ function configUiValid() {
 function prefsUi2Dict() {
     var dict = {
         'layout_columns': $('#layoutColumnsSlider').val(),
-        'refresh_factor': $('#framerateDimmerSlider').val() / 100
+        'framerate_factor': $('#framerateDimmerSlider').val() / 100,
+        'resolution_factor': $('#resolutionDimmerSlider').val() / 100
     };
 
     return dict;
@@ -1270,14 +1276,16 @@ function prefsUi2Dict() {
 
 function dict2PrefsUi(dict) {
     $('#layoutColumnsSlider').val(dict['layout_columns']);
-    $('#framerateDimmerSlider').val(dict['refresh_factor'] * 100);
+    $('#framerateDimmerSlider').val(dict['framerate_factor'] * 100);
+    $('#resolutionDimmerSlider').val(dict['resolution_factor'] * 100);
 
     updateConfigUI();
 }
 
 function applyPrefs(dict) {
     setLayoutColumns(dict['layout_columns']);
-    refreshFactor = dict['refresh_factor'];
+    framerateFactor = dict['framerate_factor'];
+    resolutionFactor = dict['resolution_factor'];
 }
 
 function savePrefs() {
@@ -4246,7 +4254,10 @@ function refreshCameraFrames() {
         }
         
         var path = basePath + 'picture/' + cameraId + '/current/?_=' + timestamp;
-        if (serverSideResize) {
+        if (resolutionFactor != 1) {
+            path += '&width=' + resolutionFactor;
+        }
+        else if (serverSideResize) {
             path += '&width=' + img.width;
         }
         
@@ -4280,7 +4291,7 @@ function refreshCameraFrames() {
         
         var count = parseInt(1000 / (refreshInterval * this.config['streaming_framerate']));
         var serverSideResize = this.config['streaming_server_resize'];
-        count /= refreshFactor;
+        count /= framerateFactor;
         
         if (this.img.error) {
             /* in case of error, decrease the refresh rate to 1 fps */
index dd501a9d0e95a20d4f42e65d79545462619c7e7a..50612e22836cf549abe5f8ca1d909716150dc3e4 100644 (file)
                     <tr class="settings-item" min="1" max="4" snap="1" ticksnum="4" decimals="0" id="layoutColumnsRow">
                         <td class="settings-item-label"><span class="settings-item-label">Layout Columns</span></td>
                         <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>
+                        <td><span class="help-mark" title="configures the number of columns used to lay 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>
+                        <td><span class="help-mark" title="dims the global frame rate to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
+                    </tr>
+                    <tr class="settings-item" min="1" max="100" snap="2" ticks="1|20|40|60|80|100" decimals="0">
+                        <td class="settings-item-label"><span class="settings-item-label">Resolution Dimmer</span></td>
+                        <td class="settings-item-value"><input type="text" class="range styled prefs" id="resolutionDimmerSlider"></td>
+                        <td><span class="help-mark" title="dims the actual resolution of all cameras to save network bandwidth and traffic (doesn't work on simple MJPEG cameras)">?</span></td>
                     </tr>
                 </table>
                 
+                <tr class="settings-item advanced-setting">
+                    <td colspan="100"><div class="settings-item-separator" style="margin: 0px 0px 1.5em 0px;"></div></td>
+                </tr>
+
                 <!-- General Settings -->
                 <div class="settings-section-title" id="generalSectionDiv">
                     <span class="help-mark" title="general settings, not related to any camera">?</span>