Re: Force NVrec to use V4L2

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]




On 29 Dec 2001, Dirk Meul wrote:

> Hi Steve,
> 
> with changes you mentioned nothing changed for me :-(
> 
> Starting NVrec.c, version 20011228 (NVrec-20011228).
> v4lgen core init - Device /dev/v4l/video0
> v4l2 core init - Size: 384x288 from /dev/v4l/video0
> v4l2 core init - trying format YUV420
> v4l2 core init - could not request parameters: Invalid argument
> 
> [v4l2_core.c]
> ...
> vct->fd = open(fdev, O_RDWR);
> ...
> vct->bufs[i * vct->planes] = (unsigned char *)mmap(NULL,
> vct->cbuf.length, PROT_READ|PROT_WRITE, MAP_SHARED, vct->fd,
> vct->cbuf.offset);
> ...
> 
> Something missed?

Hi Dirk,

Sorry - I forgot that I also made some changes in Gerd's bttv 0.8 - to add
an implementation of VIDIOC_G_PARM.

I though I'd submitted that to Gerd but don't see this in the current
0.8.31 source, although other adjustments are there.

Here's a patch to add the VIDIOC_G_PARM for 0.8.31 - needed for NVrec to
work.

I ported this change forward from the 0.8.28 I use - compiled but not
tested.  I also had some changes to mmap flags - but 0.8.31 code has
changed in that area so I can't immediately see if the 0.8.31 has the
changes.  Let me know how you get on.

In the meantime I will clean up and make a proper patch submission to
Gerd.

Regards,
Steve
diff -U3 -r bttv-0.8.31/bttv-driver.c bttv-0.8.31-sld/bttv-driver.c
--- bttv-0.8.31/bttv-driver.c	Fri Nov 16 15:13:59 2001
+++ bttv-0.8.31-sld/bttv-driver.c	Sat Dec 29 13:24:49 2001
@@ -2420,6 +2420,27 @@
 	case VIDIOC_S_CTRL:
 		return set_control(btv,arg);
 	
+	case VIDIOC_G_PARM:
+	case VIDIOC_S_PARM:
+	{
+		struct v4l2_standard std;
+		struct v4l2_streamparm *p = arg;
+
+		down(&fh->lock);
+#ifdef FIXME
+		/* FIXME: BTTV2 code: Where's equivalent info in bttv structures...? */
+		p->type = (btvo->vbi)?V4L2_BUF_TYPE_VBI:V4L2_BUF_TYPE_CAPTURE;
+#else
+		p->type = V4L2_BUF_TYPE_CAPTURE;
+#endif
+		p->parm.capture.capability = 0;
+		p->parm.capture.capturemode = 0;
+		v4l2_video_std_construct(&std,bttv_tvnorms[btv->tvnorm].v4l2_id,0);
+		p->parm.capture.timeperframe = v4l2_video_std_tpf(&std);
+		up(&fh->lock);
+		return 0;
+	}
+
 	case VIDIOC_ENUMSTD:
 	case VIDIOC_G_STD:
 	case VIDIOC_S_STD:

[Index of Archives]     [Linux DVB]     [Video Disk Recorder]     [Asterisk]     [Photo]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Free Photo Albums]     [Fedora Users]     [Fedora Women]     [ALSA Users]     [ALSA Devel]     [Linux USB]

Powered by Linux