> Here are my questions and problems: > > 1) In my app, I stop the video using the usual: > > int enable = 0; > ioctl (puv->fd, VIDIOCCAPTURE, &enable); > > This works fine, *except* if I open /dev/vbi at some point before doing > this - then the video does not seem to actually be stopped upon return > from ioctl(). For example, if I stop video as above and then clear (to > black) the screen (root) window, I frequently get video over the black > pixels, usually at the bottom of the screen. Only half the video lines > are painted, so I assume I am getting the end of a field. I don't have > to read() from /dev/vbi for this to happen - merely opening /dev/vbi > will cause the problem. I never have this problem if I don't open > /dev/vbi. Seems to be a driver bug, try Gerd's bttv driver from (http://www.strusel007.de/linux/bttv/) maybe this will fix the problem. > Any hints on how to know when the video is actually stopped? > > 2) To not lose VBI info it seems you must read() from /dev/vbi before > the next field (60 / sec) - or is it frame (30 / sec). Is there a > version where the VBI data is buffered so that will not occur? Also, > you must read 64KB from /dev/vbi even though only some of the lines are > interesting; it would be nice to only buffer some of the lines, e.g. > selected by an ioctl(). > > Has anyone done anything like this? If not, can someone point me to > what code I would need to modify to do this, perhaps with some hints? > Any driver improvements would of course be GPL. The v4l2 api spec has been adopted for vbi in v4l for the 2.4 series kernels. Perhaps you could implement this for bttv. Alternatively, you can port your app to v4l2, and use bttv2 (shamless plug!). The API specifications are available from http://www.thedirks.org/v4l2/, and bttv2 from http://bttv-v4l2.sourceforge.net . This allows you to select specific lines, and how many buffers you want. -justin