Re: Low performance with FlyVideo98/bttv/v4l2

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



> Can you provide a little more detail on how to use mmap()? I have done the
> actual mmap part but how do i use the buffers? Also - i am using v4l2 - is
> it different from what you have specified below? Can i still do this?
>  
> > // initialize
> > ioctl(VIDIOCMCAPTURE, frame0);
> > 
> > while {
> >   ioctl(VIDIOCMCAPTURE, frame1);
> >   ioctl(VIDIOCMSYNC, frame0);
> >   ioctl(VIDIOCMCAPTURE, frame1);
> >   ioctl(VIDIOCMSYNC, frame0);
> > }

I'm using VFL1 presently.

Check out this excellent resource:

http://alpha.dyndns.org/ov511/v4l_api.html


Here's how to set up the buffer:

  struct video_mbuf BufferInfo;
  struct video_mmap MemoryInfo;
  int fd;

  fd = open("/dev/video0", O_RDWR);
  //
  // Set up the window and picture here
  //
  ioctl(fd, VIDIOCGMBUF, &BufferInfo);
  buffer = (unsigned char *)mmap(0, BufferInfo.size, PROT_READ | 
    PROT_WRITE, MAP_SHARED, fd, 0);
  //
  // Set the following appropriately:
  //
  MemoryInfo.format = VIDEO_PALETTE_YUV420P;
  MemoryInfo.width  = 320;
  MemoryInfo.height = 240;

  MemoryInfo.frame  = 0;
  ioctl(fd, VIDIOCMCAPTURE, &MemoryInfo);

  while (capturing) {
    MemoryInfo.frame  = 1;
    ioctl(fd, VIDIOCMCAPTURE, &MemoryInfo);
    MemoryInfo.frame  = 0;
    ioctl(fd, VIDIOCSYNC, &MemoryInfo);
    memcpy(frame0, buffer + BufferInfo.offsets[0], 3 * 320 * 240 / 2);
    //
    // Now process frame0.  If using threads, make sure to protect the
    // pointers as needed with mutexes.
    //
    MemoryInfo.frame  = 1;
    ioctl(fd, VIDIOCMCAPTURE, &MemoryInfo);
    MemoryInfo.frame  = 0;
    ioctl(fd, VIDIOCSYNC, &MemoryInfo);
    memcpy(frame1, buffer + BufferInfo.offsets[1], 3 * 320 * 240 / 2);
    //
    // Now process frame1.
    //
  }






[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