{
vd->mmap.width=width;
vd->mmap.height=height;
vd->mmap.format=vd->picture.palette;
vd->frame_current=0;
vd->frame_using[0]=false;
vd->frame_using[1]=false;
return v4l_grab_frame(vd,0);
}
int v4l_grab_frame(v4l_device *vd,int frame)
{
if(vd->frame_using[frame])
{
fprintf(stderr,"v4l_grab_frame %d is already used\n",frame);
return -1;
}
vd->mmap.frame=frame;
if(ioctl(vd->fd,VIDIOCMCAPTURE,&vd->mmap)<0)
{
perror("v4l_grab_frame fail");
return -1;
}
vd->frame_using[frame]=true;
vd->frame_current=frame;
return 0;
}
int v4l_grab_sync(v4l_device *vd)
{
if(ioctl(vd->fd,VIDIOCSYNC,&vd->frame_current)<0)
{
perror("v4l_grab_sync fail");
return -1;
}
vd->frame_using[vd->frame_current]=false;
return 0;
}
#endif