00001
00002
00003
00004
00005
00011 #ifdef HAVE_CONFIG_H
00012 #include <config.h>
00013 #endif
00014
00015 #if defined(HAVE_V4L2)
00016
00017 #ifndef V4L2Camera_H
00018 #define V4L2Camera_H
00019
00020 #include <sys/mman.h>
00021 #include <sys/ioctl.h>
00022 #include <sys/time.h>
00023 #include <fcntl.h>
00024 #include <stdlib.h>
00025 #include <unistd.h>
00026 #include <stdio.h>
00027 #include <errno.h>
00028 #include <iostream>
00029 #include <string.h>
00030 #include <assert.h>
00031
00032 #include <linux/fs.h>
00033 #include <linux/kernel.h>
00034 #include <linux/videodev2.h>
00035
00036 #include "Camera.h"
00037 #include "FW/labImage.h"
00038
00039 #define DEFAULT_VIDEO_DEVICE "/dev/video0"
00040 #define VIDEO_STANDARD "PAL"
00041 #define DEFAULT_IMAGE_WIDTH 160
00042 #define DEFAULT_IMAGE_HEIGHT 120
00043 #define STREAMBUFS 4
00044
00045 class V4L2Camera : public Camera {
00049 struct {
00050 v4l2_buffer vidbuf;
00051 char *data;
00052 } vimage[STREAMBUFS];
00053
00055 int vid_fd;
00056
00058 struct v4l2_format fmt;
00059
00061 int pic_size_x;
00063 int pic_size_y;
00065 int pic_size;
00066
00068 int x_offset;
00070 int y_offset;
00071
00073 int autobrightness;
00074
00075 public:
00076 virtual bool open(void);
00077 virtual void close(void);
00078 virtual void read(Picture *p_frame);
00079 virtual void setBrightness(int value);
00080 virtual void setContrast(int value);
00081 virtual void setSaturation(int value);
00082 virtual void setAutoBrightness(bool on);
00083 virtual int getBrightness(void);
00084 virtual int getContrast(void);
00085 virtual int getSaturation(void);
00086 virtual bool getAutoBrightness(void);
00087
00088 virtual bool iscolor(void);
00089 virtual void get_info(CamInfo *info);
00090 virtual int map_to_v4l2_format(pixel_format format);
00091 };
00092
00093 #endif
00094
00095 #endif