Mark McClelland wrote: > > Gerd Knorr wrote: > > >It's a tradeoff. I have two choices to implement that: > > > > (1) dma to userspace. This is what the current devel bttv versions > > (0.8.x) do. It's the most efficient way to do it, but the drawback > > is that neither non-blocking reads nor partial reads can be handled > > this way. > > > This is the problem with V4L read(), as I see it. The most efficient > read() / select() implementations end up being a lot like mmap() / > VIDIOCSYNC, which makes me want to drop support for one or the other. > (That cannot be done without breaking a lot of apps, though). If/when Linux gets async IO that will be true, but until then there's no way to queue multiple reads, so mmap() is needed for that reason, as well as for backwards compatability (although I guess we *could* break compatability in 2.5). Ben