32,6 → 32,8 |
TASK FG_refresh(void) |
{ |
|
int err; |
|
while(1) { |
|
if (vmm.frame == 0) { |
46,8 → 48,9 |
*(BYTE *)(fbuf_pointer+1) = 255; |
} |
|
bttv_ioctl(&btv, VIDIOCMCAPTURE, &vmm); |
|
err = bttv_ioctl(&btv, VIDIOCMCAPTURE, &vmm); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
|
elaborate_frame_hook(fbuf_pointer); |
|
task_endcycle(); |
59,6 → 62,8 |
int FG_init(unsigned int period, unsigned int wcet, unsigned int width, |
unsigned int height, unsigned int color, unsigned int channel) { |
|
int err; |
|
struct video_window vw; |
struct video_picture p; |
struct video_channel ch; |
74,15 → 79,18 |
} |
|
bttv_start(&btv); |
|
bttv_ioctl(&btv, VIDIOCGWIN, &vw); |
|
err = bttv_ioctl(&btv, VIDIOCGWIN, &vw); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
vw.x = 0; |
vw.y = 0; |
vw.width = width; |
vw.height = height; |
bttv_ioctl(&btv, VIDIOCSWIN, &vw); |
err = bttv_ioctl(&btv, VIDIOCSWIN, &vw); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
|
bttv_ioctl(&btv, VIDIOCGPICT, &p); |
err = bttv_ioctl(&btv, VIDIOCGPICT, &p); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
if (color == FG_RGB24) { |
p.palette = VIDEO_PALETTE_RGB24; |
p.depth = 24; |
91,18 → 99,22 |
p.palette = VIDEO_PALETTE_GREY; |
p.depth = 8; |
} |
bttv_ioctl(&btv, VIDIOCSPICT, &p); |
err = bttv_ioctl(&btv, VIDIOCSPICT, &p); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
|
bttv_ioctl(&btv, VIDIOCGCHAN, &ch); |
err = bttv_ioctl(&btv, VIDIOCGCHAN, &ch); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
ch.channel = channel; |
ch.norm = 3; |
bttv_ioctl(&btv, VIDIOCSCHAN, &ch); |
err = bttv_ioctl(&btv, VIDIOCSCHAN, &ch); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
|
vmm.frame = 0; |
vmm.height = vw.height; |
vmm.width = vw.width; |
vmm.format = p.palette; |
bttv_ioctl(&btv, VIDIOCMCAPTURE, &vmm); |
err = bttv_ioctl(&btv, VIDIOCMCAPTURE, &vmm); |
if (err) kern_printf("(BTTV_IOCTL Error: %d)",err); |
|
elaborate_frame_hook = dummy_elaborate_frame; |
|