From 79eb9803e4d1b86060bbfd13f8dd42f9b57ae8ba Mon Sep 17 00:00:00 2001 From: aymeric Date: Fri, 26 Sep 2008 14:05:48 +0000 Subject: [PATCH] add suppport for detecting 2 v4l cards git-svn-id: svn+ssh://svn.savannah.nongnu.org/linphone/trunk@52 3f6dc0c8-ddfe-455d-9043-3cd528dc4637 --- linphone/mediastreamer2/src/msv4l.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/linphone/mediastreamer2/src/msv4l.c b/linphone/mediastreamer2/src/msv4l.c index c57cf693f..1b2fa7fe8 100644 --- a/linphone/mediastreamer2/src/msv4l.c +++ b/linphone/mediastreamer2/src/msv4l.c @@ -992,6 +992,13 @@ static MSFilterMethod methods[]={ { 0 , NULL } }; +static int v4l_set_devfile(MSFilter *f, void *arg){ + V4lState *s=(V4lState*)f->data; + if (s->dev) ms_free(s->dev); + s->dev=ms_strdup((char*)arg); + return 0; +} + MSFilterDesc ms_v4l_desc={ .id=MS_V4L_ID, .name="MSV4l", @@ -1012,6 +1019,7 @@ MS_FILTER_DESC_EXPORT(ms_v4l_desc) static MSFilter *v4l_create_reader(MSWebCam *obj){ MSFilter *f=ms_filter_new_from_desc(&ms_v4l_desc); V4lState *s=(V4lState*)f->data; + v4l_set_devfile(f,obj->name); s->force_v1=TRUE; return f; } @@ -1043,6 +1051,17 @@ static void v4l_detect(MSWebCamManager *obj){ } close(fd); } + devname="/dev/video1"; + fd=open(devname,O_RDWR); + if (fd!=-1){ + if (ioctl (fd, VIDIOCGCAP, &cap)==0) { + /* is a V4Lv1 */ + MSWebCam *cam=ms_web_cam_new(&v4l_desc); + cam->name=ms_strdup(devname); + ms_web_cam_manager_add_cam(obj,cam); + } + close(fd); + } }