[vlc-commits] Do not use v4l2_open() since v4l2_open_fd() is used

Rémi Denis-Courmont git at videolan.org
Wed Aug 31 23:02:53 CEST 2011


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Wed Aug 31 17:42:01 2011 +0300| [905d235f1c53c0ea55d75fc01d855e4180d937fd] | committer: Rémi Denis-Courmont

Do not use v4l2_open() since v4l2_open_fd() is used

When libv4l2 is used:
 * open the device with close-on-exec descriptor flag,
 * convert from UTF-8 to local path.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=905d235f1c53c0ea55d75fc01d855e4180d937fd
---

 modules/access/v4l2.c |   32 +++++++++++---------------------
 1 files changed, 11 insertions(+), 21 deletions(-)

diff --git a/modules/access/v4l2.c b/modules/access/v4l2.c
index 67666fd..1c14c78 100644
--- a/modules/access/v4l2.c
+++ b/modules/access/v4l2.c
@@ -578,7 +578,6 @@ struct demux_sys_t
 
 #ifdef HAVE_LIBV4L2
     /* */
-    int (*pf_open)(const char *, int, ...);
     int (*pf_close)( int );
     int (*pf_dup)( int );
     int (*pf_ioctl)( int, unsigned long int, ... );
@@ -592,7 +591,6 @@ struct demux_sys_t
 #ifdef HAVE_LIBV4L2
 static void use_kernel_v4l2( demux_sys_t *p_sys )
 {
-    p_sys->pf_open = vlc_open;
     p_sys->pf_close = close;
     p_sys->pf_dup = dup;
     p_sys->pf_ioctl = ioctl;
@@ -604,7 +602,6 @@ static void use_kernel_v4l2( demux_sys_t *p_sys )
 
 static void use_libv4l2( demux_sys_t *p_sys )
 {
-    p_sys->pf_open = v4l2_open;
     p_sys->pf_close = v4l2_close;
     p_sys->pf_dup = v4l2_dup;
     p_sys->pf_ioctl = v4l2_ioctl;
@@ -614,7 +611,6 @@ static void use_libv4l2( demux_sys_t *p_sys )
     p_sys->b_libv4l2 = true;
 }
 
-#   define v4l2_open (p_sys->pf_open)
 #   define v4l2_close (p_sys->pf_close)
 #   define v4l2_dup (p_sys->pf_dup)
 #   define v4l2_ioctl (p_sys->pf_ioctl)
@@ -622,7 +618,6 @@ static void use_libv4l2( demux_sys_t *p_sys )
 #   define v4l2_mmap (p_sys->pf_mmap)
 #   define v4l2_munmap (p_sys->pf_munmap)
 #else
-#   define v4l2_open vlc_open
 #   define v4l2_close close
 #   define v4l2_dup dup
 #   define v4l2_ioctl ioctl
@@ -1812,7 +1807,6 @@ static void GetMaxDimensions( demux_t *p_demux, int i_fd,
  *****************************************************************************/
 static int OpenVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys, bool b_demux )
 {
-    int i_fd;
     struct v4l2_cropcap cropcap;
     struct v4l2_crop crop;
     struct v4l2_format fmt;
@@ -1821,10 +1815,11 @@ static int OpenVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys, bool b_demux )
     const char *psz_device = p_sys->psz_device;
     es_format_t es_fmt;
 
-    if( ( i_fd = v4l2_open( psz_device, O_RDWR ) ) < 0 )
+    int i_fd = vlc_open( psz_device, O_RDWR );
+    if( i_fd == -1 )
     {
-        msg_Err( p_obj, "cannot open device (%m)" );
-        goto open_failed;
+        msg_Err( p_obj, "cannot open device %s (%m)", psz_device );
+        return -1;
     }
 
 #ifdef HAVE_LIBV4L2
@@ -2370,9 +2365,8 @@ static int OpenVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys, bool b_demux )
     return i_fd;
 
 open_failed:
-    if( i_fd >= 0 ) v4l2_close( i_fd );
+    v4l2_close( i_fd );
     return -1;
-
 }
 
 /*****************************************************************************
@@ -2381,12 +2375,11 @@ open_failed:
 static bool ProbeVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys,
                                  const char *psz_device )
 {
-    int i_fd;
-
-    if( ( i_fd = v4l2_open( psz_device, O_RDWR ) ) < 0 )
+    int i_fd = vlc_open( psz_device, O_RDWR );
+    if( i_fd == -1 )
     {
-        msg_Err( p_obj, "cannot open video device '%s' (%m)", psz_device );
-        goto open_failed;
+        msg_Err( p_obj, "cannot open video device %s: %m", psz_device );
+        return -1;
     }
 
 #ifdef HAVE_LIBV4L2
@@ -2735,14 +2728,11 @@ static bool ProbeVideoDev( vlc_object_t *p_obj, demux_sys_t *p_sys,
             }
         }
     }
-
-
-    if( i_fd >= 0 ) v4l2_close( i_fd );
+    v4l2_close( i_fd );
     return true;
 
 open_failed:
-
-    if( i_fd >= 0 ) v4l2_close( i_fd );
+    v4l2_close( i_fd );
     return false;
 
 }



More information about the vlc-commits mailing list