> > Depends.  Generating the risc code at REQBUFS time means that you'll limited
> > to a fixed set of buffers.  Depending on your application it might save you
> > a memcopy() if you can put it _anywhere_ and not only to one of the predefined
> > buffers.
> 
> Maybe I misunderstood, I thought you had to call REQBUFS before you could use
> the buffers for DMA?

REQBUF will just allocate "queue slots" in the dma-to-userspace case (which also
is a limit of the amount of userspace memory the driver is willing to lock down
for I/O).  One major benefit of dma-to-userspace is that you are *not* limited
to some preallocated, fixed set of buffers.  This means you can't do stuff at
REQBUF time.  The other point is that you can dma to any memory area (MIT-SHM
memory for example), not just the mmap()'ed buffers.

For mmap()'ed kernel buffers the driver could do the initialitation at REQBUF
time, depending on how he manages the buffer memory.

> > BTW:  This is how bttv works today.  It will write new risc code for every
> > single frame you are capturing.  So it can't be that slow as you can capture
> > full frame rate and have (on fast boxen) still enouth spare CPU time to
> > compress the video in real time...
> 
> Ah, well, I can't capture and compress video in real time.  I'd rather improve
> the software instead of buying a faster computer.

I don't expect you see a major difference.  If you want to benchmark it:
pick up bttv 0.8.x and time stuff with and without the patch below.
warning: patch is untested (should work throuth...).

And BTW:  What's bad with the suggested "you can keep stuff cached" hint
flag suggested?  The one described in the paragraph you have snipped in the
reply?

  Gerd

---------------------------- cut here --------------------------
--- bttv-0.8.10/bttv-driver.c~  Mon Jan 29 22:53:59 2001
+++ bttv-0.8.10/bttv-driver.c   Wed Jan 31 22:55:37 2001
@@ -1196,6 +1196,7 @@
                if (fh->mapped[frame]->dma->state == GROUP_STATE_IOERROR ||
                    fh->mapped[frame]->dma->state == GROUP_STATE_TIMEOUT)
                        retval = -EIO;
+#if 0
                /*
                  TODO: we should keep the kiovec + risc code cached
                  for some time, for streaming capture it is very likely
@@ -1204,6 +1205,7 @@
                */
                bttv_riscgroup_free(btv,fh->mapped[frame]->dma);
                fh->mapped[frame]->dma = NULL;
+#endif
                up(&fh->lock);
                return retval;
        }



_______________________________________________
Video4linux-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/video4linux-list

Reply via email to