Re: some buffer/capture questions

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



>  The first is that the BTTV driver or system calls seem to react on SIGINT,
>  since we use Ctrl-C to stop capturing. This works okay for the MJPEG/zoran
>  devices but for the BTTV devices (in my case, a Hauppage winTV), it gives
>  an error "interrupted system call". Is this correct (that the driver is
>  catching SIGINT signals) and can I stop it?

Yes, this is correct.  The driver sleeps interruptible until the irq
handler signals that the hardware finished the capture.  If a signal
arrives the signal gets delivered to the application and the system call
returns with -EINTR.

You have to restart the system call like this:

 retry:
    if (-1 == (rc = xioctl(h->fd,VIDIOCSYNC,h->buf_v4l+frame))) {
	if (errno == EINTR && !alarms)
	    goto retry;
    }

Asking the glibc do this automagically (sigaction.sa_flags |= SA_RESTART)
should work too.

>  Secondly, my winTV only gives me two YUV buffers after the VIDIOCGMBUF. Is
>  there a way to increase this number?

there is a insmod option (gbuffers).

>  Ohwell, also a question. I van only open() my device once - I'd like to
>  open it twice to actually see what I'm recording and to record video at the
>  same time. Are there BTTV-devices that can be opened more than once or is
>  this a V4L limitation?

It is a videodev.c limitation.  bttv 0.8.x can handle multiple opens at
the same time, but this requires a patched kernel (patches are available
from http://bytesex.org/patches/)

>  At last a question for gstreamer. They use a v4lsrc which can do both
>  read() and mmap() captures. Can all v4l- (or bttv-)devices do both read()
>  and mmap()?

bttv 0.7.x can do _only_ mmap().  bttv 0.8.x can handle both.  Most
other drivers support mmap() too because there are quite a few apps
which can deal with mmap() only.  xawtv tries to use mmap() first,
failing that it falls back to use read().

  Gerd

-- 
Netscape is unable to locate the server localhost:8000.
Please check the server name and try again.





[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