From dc6c106f0c5eb310a4b98205f7b385d111cd574a Mon Sep 17 00:00:00 2001
From: Richard Hosking <hovis@videolan.org>
Date: Sun, 2 Dec 2007 12:53:35 +0000
Subject: [PATCH] v4l2: Fixed dynamic video metric updates.  Better handling of
 defaults.

---
 modules/access/v4l2.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)

diff --git a/modules/access/v4l2.c b/modules/access/v4l2.c
index 48452ba3da43..999404045f2a 100644
--- a/modules/access/v4l2.c
+++ b/modules/access/v4l2.c
@@ -2375,12 +2375,15 @@ static int VideoControl( demux_t *p_demux, int i_fd,
     struct v4l2_control control;
     memset( &queryctrl, 0, sizeof( queryctrl ) );
 
+    if( i_value == -1 )
+        return VLC_SUCCESS;
+
     queryctrl.id = i_cid;
 
     if( ioctl( i_fd, VIDIOC_QUERYCTRL, &queryctrl ) < 0
         || queryctrl.flags & V4L2_CTRL_FLAG_DISABLED )
     {
-        msg_Warn( p_demux, "%s (%x) control is not supported.", psz_label,
+        msg_Err( p_demux, "%s (%x) control is not supported.", psz_label,
                  i_value );
         return VLC_EGENERIC;
     }
@@ -2420,31 +2423,30 @@ static int VideoControlCallback( vlc_object_t *p_this,
     if( i_fd < 0 )
         return VLC_EGENERIC;
 
-    if( !strcmp( psz_var, "brightness" ) )
+    if( !strcmp( psz_var, "v4l2-brightness" ) )
     {
         p_sys->i_brightness = newval.i_int;
         return VideoControl( p_demux, i_fd,
                     "brightness", V4L2_CID_BRIGHTNESS, p_sys->i_brightness );
     }
-    else if( !strcmp( psz_var, "contrast" ) )
+    else if( !strcmp( psz_var, "v4l2-contrast" ) )
     {
         p_sys->i_contrast = newval.i_int;
         return VideoControl( p_demux, i_fd,
                     "contrast", V4L2_CID_CONTRAST, p_sys->i_contrast );
     }
-    else if( !strcmp( psz_var, "saturation" ) )
+    else if( !strcmp( psz_var, "v4l2-saturation" ) )
     {
         p_sys->i_saturation = newval.i_int;
         return VideoControl( p_demux, i_fd,
                     "saturation", V4L2_CID_SATURATION, p_sys->i_saturation );
     }
-    else if( !strcmp( psz_var, "hue" ) )
+    else if( !strcmp( psz_var, "v4l2-hue" ) )
     {
         p_sys->i_hue = newval.i_int;
         return VideoControl( p_demux, i_fd,
                     "hue", V4L2_CID_HUE, p_sys->i_hue );
     }
-    else
-        return VLC_EGENERIC;
-    return VLC_SUCCESS;
+
+    return VLC_EGENERIC;
 }
-- 
GitLab