changeset 10319:2e9b7465d242

more flexible device name guessing
author alex
date Sat, 21 Jun 2003 23:22:38 +0000
parents 2b3ef078e819
children d83e4e54985c
files libvo/vo_zr.c
diffstat 1 files changed, 25 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/libvo/vo_zr.c	Sat Jun 21 20:01:35 2003 +0000
+++ b/libvo/vo_zr.c	Sat Jun 21 23:22:38 2003 +0000
@@ -109,39 +109,37 @@
 
 
 int zoran_getcap(zr_info_t *zr) {
-	char* dev;
+	char* dev = NULL;
 
 	if (zr->device)
 		dev = zr->device;
-	else {  /* code borrowed from mjpegtools lavplay.c // 20020416 too */
+	else {
 		struct stat vstat;
+		const char *devs[] = {
+		    "/dev/video",
+		    "/dev/video0",
+		    "/dev/v4l/video0",
+		    "/dev/v4l0",
+		    "/dev/v4l",
+		    NULL
+		};
+		int i = 0;
+		
+		do
+		{
+		    if ((stat(devs[i], &vstat) == 0) && S_ISCHR(vstat.st_mode))
+		    {
+			dev = devs[i];
+			mp_msg(MSGT_VO, MSGL_V, "zr: found video device %s\n", dev);
+			break;
+		    }
+		} while (devs[++i] != NULL);
 
-#undef VIDEV		
-#define VIDEV "/dev/video"		
-		if (stat(VIDEV, &vstat) == 0 && S_ISCHR(vstat.st_mode))
-			dev = VIDEV;
-#undef VIDEV		
-#define VIDEV "/dev/video0"		
-		else if (stat(VIDEV, &vstat) == 0 && S_ISCHR(vstat.st_mode))
-			dev = VIDEV;
-#undef VIDEV		
-#define VIDEV "/dev/v4l/video0"		
-		else if (stat(VIDEV, &vstat) == 0 && S_ISCHR(vstat.st_mode))
-			dev = VIDEV;
-#undef VIDEV		
-#define VIDEV "/dev/v4l0"		
-		else if (stat(VIDEV, &vstat) == 0 && S_ISCHR(vstat.st_mode))
-			dev = VIDEV;
-#undef VIDEV		
-#define VIDEV "/dev/v4l"		
-		else if (stat(VIDEV, &vstat) == 0 && S_ISCHR(vstat.st_mode))
-			dev = VIDEV;
-#undef VIDEV		
-		else {
-			mp_msg(MSGT_VO, MSGL_ERR, "zr: unable to find video device\n");
-			return 1;
+		if (!dev)
+		{
+		    mp_msg(MSGT_VO, MSGL_ERR, "zr: unable to find video device\n");
+		    return 1;
 		}
-		mp_msg(MSGT_VO, MSGL_V, "zr: found video device %s\n", dev);
 	}
 			
 	zr->vdes = open(dev, O_RDWR);