47,6 → 47,8 |
|
//#define COLOR |
|
#define FRAME_GRABBER_NUMBER 0 |
|
#define FG_PERIOD 40000 |
#define FG_WCET 30000 |
#define FG_W 320 |
73,24 → 75,26 |
task_nopreempt(); |
|
/* Init videodev driver */ |
VIDEODEV26_open(0); |
VIDEODEV26_open(FRAME_GRABBER_NUMBER); |
|
VIDEODEV26_ioctl(0,VIDIOCGCHAN,(unsigned long)&chan); |
/* Select the input channel */ |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGCHAN,(unsigned long)&chan); |
|
chan.channel = (int)(arg); |
chan.type = VIDEO_VC_TUNER; |
chan.norm = VIDEO_TYPE_CAMERA; |
|
VIDEODEV26_ioctl(0,VIDIOCSCHAN,(unsigned long)&chan); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSCHAN,(unsigned long)&chan); |
|
VIDEODEV26_ioctl(0,VIDIOCGTUNER,(unsigned long)&tuner); |
/* Enable the tuner */ |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGTUNER,(unsigned long)&tuner); |
|
tuner.mode = VIDEO_MODE_PAL; |
|
VIDEODEV26_ioctl(0,VIDIOCSTUNER,(unsigned long)&tuner); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSTUNER,(unsigned long)&tuner); |
|
/* Select palette and depth */ |
VIDEODEV26_ioctl(0,VIDIOCGPICT,(unsigned long)&vpic); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGPICT,(unsigned long)&vpic); |
|
#ifdef COLOR |
vpic.palette = VIDEO_PALETTE_RGB24; |
105,7 → 109,7 |
vpic.contrast = 32000; |
vpic.colour = 32000; |
|
VIDEODEV26_ioctl(0,VIDIOCSPICT,(unsigned long)&vpic); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSPICT,(unsigned long)&vpic); |
|
/* Double Buffering Strategy */ |
|
140,7 → 144,7 |
#endif |
|
/* Set grabbing window */ |
VIDEODEV26_ioctl(0,VIDIOCGWIN,(unsigned long)&win); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCGWIN,(unsigned long)&win); |
|
win.x = 0; |
win.y = 0; |
147,7 → 151,7 |
win.width = FG_W; |
win.height = FG_H; |
|
VIDEODEV26_ioctl(0,VIDIOCSWIN,(unsigned long)&win); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSWIN,(unsigned long)&win); |
|
task_preempt(); |
|
158,11 → 162,11 |
|
task_nopreempt(); |
|
VIDEODEV26_ioctl(0,VIDIOCSFBUF,(unsigned long)&(fbuf[save])); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCSFBUF,(unsigned long)&(fbuf[save])); |
|
/* Start grabbing */ |
on = 1; |
VIDEODEV26_ioctl(0,VIDIOCCAPTURE,(unsigned long)&on); |
VIDEODEV26_ioctl(FRAME_GRABBER_NUMBER,VIDIOCCAPTURE,(unsigned long)&on); |
|
task_preempt(); |
|
225,7 → 229,10 |
SOFT_TASK_MODEL st; |
PID grab_task_pid; |
|
if (argc < 2) return -1; |
if (argc < 2) { |
sys_shutdown_message("ERROR: Enter the input channel [ex: %s 0]\n",argv[0]); |
sys_end(); |
} |
|
soft_task_default_model(st); |
soft_task_def_period(st,40000); |
235,7 → 242,7 |
|
grab_task_pid = task_create("GrabTask",grab_task,&st,NULL); |
if (grab_task_pid == NIL) { |
cprintf("ERROR: Cannot create grab task\n"); |
sys_shutdown_message("ERROR: Cannot create grab task\n"); |
sys_end(); |
} |
|