65,10 → 65,10 |
TASK grab_task(void *arg) { |
|
struct video_picture vpic; |
struct video_buffer fbuf; |
struct video_buffer fbuf[2]; |
struct video_window win; |
struct video_channel chan; |
int on; |
int on,display,temp,save; |
|
task_nopreempt(); |
|
87,14 → 87,21 |
|
VIDEODEV26_ioctl(0,VIDIOCSPICT,(unsigned long)&vpic); |
|
fbuf.base = malloc(320*200); |
fbuf.height = 200; |
fbuf.width = 320; |
fbuf.bytesperline = 320; |
fbuf.depth = 8; |
|
VIDEODEV26_ioctl(0,VIDIOCSFBUF,(unsigned long)&fbuf); |
|
fbuf[0].base = malloc(320*200); |
fbuf[0].height = 200; |
fbuf[0].width = 320; |
fbuf[0].bytesperline = 320; |
fbuf[0].depth = 8; |
|
fbuf[1].base = malloc(320*200); |
fbuf[1].height = 200; |
fbuf[1].width = 320; |
fbuf[1].bytesperline = 320; |
fbuf[1].depth = 8; |
|
VIDEODEV26_ioctl(0,VIDIOCSFBUF,(unsigned long)&(fbuf[0])); |
VIDEODEV26_ioctl(0,VIDIOCSFBUF,(unsigned long)&(fbuf[1])); |
|
VIDEODEV26_ioctl(0,VIDIOCGWIN,(unsigned long)&win); |
|
win.x = 0; |
105,21 → 112,26 |
VIDEODEV26_ioctl(0,VIDIOCSWIN,(unsigned long)&win); |
|
task_preempt(); |
|
|
display = 1; |
save = 0; |
|
while(1) { |
|
task_nopreempt(); |
|
VIDEODEV26_ioctl(0,VIDIOCSFBUF,(unsigned long)&fbuf); |
VIDEODEV26_ioctl(0,VIDIOCSFBUF,(unsigned long)&(fbuf[save])); |
|
on = 1; |
VIDEODEV26_ioctl(0,VIDIOCCAPTURE,(unsigned long)&on); |
|
|
task_preempt(); |
|
task_endcycle(); |
elaborate_image(fbuf[display].base); |
|
elaborate_image(fbuf.base); |
temp = display; |
display = save; |
save = temp; |
|
task_endcycle(); |
|
154,7 → 166,7 |
PID grab_task_pid; |
|
soft_task_default_model(st); |
soft_task_def_period(st,100000); |
soft_task_def_period(st,50000); |
soft_task_def_met(st,40000); |
soft_task_def_arg(st, (void *)(1)); |
soft_task_def_ctrl_jet(st); |