!C99Shell v.2.1 [PHP 7 Update] [1.12.2019]!

Software: Apache/2.2.8 (Ubuntu) PHP/5.2.4-2ubuntu5.12 with Suhosin-Patch mod_ssl/2.2.8 OpenSSL/0.9.8g. PHP/5.2.4-2ubuntu5.12 

uname -a: Linux forum.circlefusion.com 2.6.24-19-server #1 SMP Wed Jun 18 15:18:00 UTC 2008 i686 

uid=33(www-data) gid=33(www-data) groups=33(www-data) 

Safe-mode: OFF (not secure)

/usr/src/linux-headers-2.6.24-28/drivers/media/video/   drwxr-xr-x
Free 1.04 GB of 97.11 GB (1.07%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     ov511.h (15.97 KB)      -rw-r--r--
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#ifndef __LINUX_OV511_H
#define __LINUX_OV511_H

#include <asm/uaccess.h>
#include <linux/videodev.h>
#include <media/v4l2-common.h>
#include <linux/usb.h>
#include <linux/mutex.h>

#define OV511_DEBUG    /* Turn on debug messages */

#ifdef OV511_DEBUG
    #define PDEBUG(level, fmt, args...) \
        if (debug >= (level)) info("[%s:%d] " fmt, \
        __FUNCTION__, __LINE__ , ## args)
#else
    #define PDEBUG(level, fmt, args...) do {} while(0)
#endif

/* This macro restricts an int variable to an inclusive range */
#define RESTRICT_TO_RANGE(v,mi,ma) { \
    if ((v) < (mi)) (v) = (mi); \
    else if ((v) > (ma)) (v) = (ma); \
}

/* --------------------------------- */
/* DEFINES FOR OV511 AND OTHER CHIPS */
/* --------------------------------- */

/* USB IDs */
#define VEND_OMNIVISION    0x05A9
#define PROD_OV511    0x0511
#define PROD_OV511PLUS    0xA511
#define PROD_OV518    0x0518
#define PROD_OV518PLUS    0xA518

#define VEND_MATTEL    0x0813
#define PROD_ME2CAM    0x0002

/* --------------------------------- */
/*     OV51x REGISTER MNEMONICS      */
/* --------------------------------- */

/* Camera interface register numbers */
#define R511_CAM_DELAY        0x10
#define R511_CAM_EDGE        0x11
#define R511_CAM_PXCNT        0x12
#define R511_CAM_LNCNT        0x13
#define R511_CAM_PXDIV        0x14
#define R511_CAM_LNDIV        0x15
#define R511_CAM_UV_EN        0x16
#define R511_CAM_LINE_MODE    0x17
#define R511_CAM_OPTS        0x18

/* Snapshot mode camera interface register numbers */
#define R511_SNAP_FRAME        0x19
#define R511_SNAP_PXCNT        0x1A
#define R511_SNAP_LNCNT        0x1B
#define R511_SNAP_PXDIV        0x1C
#define R511_SNAP_LNDIV        0x1D
#define R511_SNAP_UV_EN        0x1E
#define R511_SNAP_OPTS        0x1F

/* DRAM register numbers */
#define R511_DRAM_FLOW_CTL    0x20
#define R511_DRAM_ARCP        0x21
#define R511_DRAM_MRC        0x22
#define R511_DRAM_RFC        0x23

/* ISO FIFO register numbers */
#define R51x_FIFO_PSIZE        0x30    /* 2 bytes wide w/ OV518(+) */
#define R511_FIFO_OPTS        0x31

/* Parallel IO register numbers */
#define R511_PIO_OPTS        0x38
#define R511_PIO_DATA        0x39
#define R511_PIO_BIST        0x3E
#define R518_GPIO_IN        0x55    /* OV518(+) only */
#define R518_GPIO_OUT        0x56    /* OV518(+) only */
#define R518_GPIO_CTL        0x57    /* OV518(+) only */
#define R518_GPIO_PULSE_IN    0x58    /* OV518(+) only */
#define R518_GPIO_PULSE_CLEAR    0x59    /* OV518(+) only */
#define R518_GPIO_PULSE_POL    0x5a    /* OV518(+) only */
#define R518_GPIO_PULSE_EN    0x5b    /* OV518(+) only */
#define R518_GPIO_RESET        0x5c    /* OV518(+) only */

/* I2C registers */
#define R511_I2C_CTL        0x40
#define R518_I2C_CTL        0x47    /* OV518(+) only */
#define R51x_I2C_W_SID        0x41
#define R51x_I2C_SADDR_3    0x42
#define R51x_I2C_SADDR_2    0x43
#define R51x_I2C_R_SID        0x44
#define R51x_I2C_DATA        0x45
#define R51x_I2C_CLOCK        0x46
#define R51x_I2C_TIMEOUT    0x47

/* I2C snapshot registers */
#define R511_SI2C_SADDR_3    0x48
#define R511_SI2C_DATA        0x49

/* System control registers */
#define R51x_SYS_RESET        0x50
        /* Reset type definitions */
#define     OV511_RESET_UDC        0x01
#define     OV511_RESET_I2C        0x02
#define     OV511_RESET_FIFO    0x04
#define     OV511_RESET_OMNICE    0x08
#define     OV511_RESET_DRAM    0x10
#define     OV511_RESET_CAM_INT    0x20
#define     OV511_RESET_OV511    0x40
#define     OV511_RESET_NOREGS    0x3F /* All but OV511 & regs */
#define     OV511_RESET_ALL        0x7F

#define R511_SYS_CLOCK_DIV    0x51
#define R51x_SYS_SNAP        0x52
#define R51x_SYS_INIT             0x53
#define R511_SYS_PWR_CLK    0x54 /* OV511+/OV518(+) only */
#define R511_SYS_LED_CTL    0x55 /* OV511+ only */
#define R511_SYS_USER        0x5E
#define R511_SYS_CUST_ID    0x5F

/* OmniCE (compression) registers */
#define R511_COMP_PHY        0x70
#define R511_COMP_PHUV        0x71
#define R511_COMP_PVY        0x72
#define R511_COMP_PVUV        0x73
#define R511_COMP_QHY        0x74
#define R511_COMP_QHUV        0x75
#define R511_COMP_QVY        0x76
#define R511_COMP_QVUV        0x77
#define R511_COMP_EN        0x78
#define R511_COMP_LUT_EN    0x79
#define R511_COMP_LUT_BEGIN    0x80

/* --------------------------------- */
/*         ALTERNATE NUMBERS         */
/* --------------------------------- */

/* Alternate numbers for various max packet sizes (OV511 only) */
#define OV511_ALT_SIZE_992    0
#define OV511_ALT_SIZE_993    1
#define OV511_ALT_SIZE_768    2
#define OV511_ALT_SIZE_769    3
#define OV511_ALT_SIZE_512    4
#define OV511_ALT_SIZE_513    5
#define OV511_ALT_SIZE_257    6
#define OV511_ALT_SIZE_0    7

/* Alternate numbers for various max packet sizes (OV511+ only) */
#define OV511PLUS_ALT_SIZE_0    0
#define OV511PLUS_ALT_SIZE_33    1
#define OV511PLUS_ALT_SIZE_129    2
#define OV511PLUS_ALT_SIZE_257    3
#define OV511PLUS_ALT_SIZE_385    4
#define OV511PLUS_ALT_SIZE_513    5
#define OV511PLUS_ALT_SIZE_769    6
#define OV511PLUS_ALT_SIZE_961    7

/* Alternate numbers for various max packet sizes (OV518(+) only) */
#define OV518_ALT_SIZE_0    0
#define OV518_ALT_SIZE_128    1
#define OV518_ALT_SIZE_256    2
#define OV518_ALT_SIZE_384    3
#define OV518_ALT_SIZE_512    4
#define OV518_ALT_SIZE_640    5
#define OV518_ALT_SIZE_768    6
#define OV518_ALT_SIZE_896    7

/* --------------------------------- */
/*     OV7610 REGISTER MNEMONICS     */
/* --------------------------------- */

/* OV7610 registers */
#define OV7610_REG_GAIN          0x00    /* gain setting (5:0) */
#define OV7610_REG_BLUE          0x01    /* blue channel balance */
#define OV7610_REG_RED           0x02    /* red channel balance */
#define OV7610_REG_SAT           0x03    /* saturation */
                    /* 04 reserved */
#define OV7610_REG_CNT           0x05    /* Y contrast */
#define OV7610_REG_BRT           0x06    /* Y brightness */
                    /* 08-0b reserved */
#define OV7610_REG_BLUE_BIAS     0x0C    /* blue channel bias (5:0) */
#define OV7610_REG_RED_BIAS      0x0D    /* read channel bias (5:0) */
#define OV7610_REG_GAMMA_COEFF   0x0E    /* gamma settings */
#define OV7610_REG_WB_RANGE      0x0F    /* AEC/ALC/S-AWB settings */
#define OV7610_REG_EXP           0x10    /* manual exposure setting */
#define OV7610_REG_CLOCK         0x11    /* polarity/clock prescaler */
#define OV7610_REG_COM_A         0x12    /* misc common regs */
#define OV7610_REG_COM_B         0x13    /* misc common regs */
#define OV7610_REG_COM_C         0x14    /* misc common regs */
#define OV7610_REG_COM_D         0x15    /* misc common regs */
#define OV7610_REG_FIELD_DIVIDE  0x16    /* field interval/mode settings */
#define OV7610_REG_HWIN_START    0x17    /* horizontal window start */
#define OV7610_REG_HWIN_END      0x18    /* horizontal window end */
#define OV7610_REG_VWIN_START    0x19    /* vertical window start */
#define OV7610_REG_VWIN_END      0x1A    /* vertical window end */
#define OV7610_REG_PIXEL_SHIFT   0x1B    /* pixel shift */
#define OV7610_REG_ID_HIGH       0x1C    /* manufacturer ID MSB */
#define OV7610_REG_ID_LOW        0x1D    /* manufacturer ID LSB */
                    /* 0e-0f reserved */
#define OV7610_REG_COM_E         0x20    /* misc common regs */
#define OV7610_REG_YOFFSET       0x21    /* Y channel offset */
#define OV7610_REG_UOFFSET       0x22    /* U channel offset */
                    /* 23 reserved */
#define OV7610_REG_ECW           0x24    /* Exposure white level for AEC */
#define OV7610_REG_ECB           0x25    /* Exposure black level for AEC */
#define OV7610_REG_COM_F         0x26    /* misc settings */
#define OV7610_REG_COM_G         0x27    /* misc settings */
#define OV7610_REG_COM_H         0x28    /* misc settings */
#define OV7610_REG_COM_I         0x29    /* misc settings */
#define OV7610_REG_FRAMERATE_H   0x2A    /* frame rate MSB + misc */
#define OV7610_REG_FRAMERATE_L   0x2B    /* frame rate LSB */
#define OV7610_REG_ALC           0x2C    /* Auto Level Control settings */
#define OV7610_REG_COM_J         0x2D    /* misc settings */
#define OV7610_REG_VOFFSET       0x2E    /* V channel offset adjustment */
#define OV7610_REG_ARRAY_BIAS     0x2F    /* Array bias -- don't change */
                    /* 30-32 reserved */
#define OV7610_REG_YGAMMA        0x33    /* misc gamma settings (7:6) */
#define OV7610_REG_BIAS_ADJUST   0x34    /* misc bias settings */
#define OV7610_REG_COM_L         0x35    /* misc settings */
                    /* 36-37 reserved */
#define OV7610_REG_COM_K         0x38    /* misc registers */

/* --------------------------------- */
/*           I2C ADDRESSES           */
/* --------------------------------- */

#define OV7xx0_SID   0x42
#define OV6xx0_SID   0xC0
#define OV8xx0_SID   0xA0
#define KS0127_SID   0xD8
#define SAA7111A_SID 0x48

/* --------------------------------- */
/*       MISCELLANEOUS DEFINES       */
/* --------------------------------- */

#define I2C_CLOCK_PRESCALER     0x03

#define FRAMES_PER_DESC        10    /* FIXME - What should this be? */
#define MAX_FRAME_SIZE_PER_DESC    993    /* For statically allocated stuff */
#define PIXELS_PER_SEG        256    /* Pixels per segment */

#define OV511_ENDPOINT_ADDRESS    1    /* Isoc endpoint number */

#define OV511_NUMFRAMES    2
#if OV511_NUMFRAMES > VIDEO_MAX_FRAME
    #error "OV511_NUMFRAMES is too high"
#endif

#define OV511_NUMSBUF        2

/* Control transfers use up to 4 bytes */
#define OV511_CBUF_SIZE        4

/* Size of usb_make_path() buffer */
#define OV511_USB_PATH_LEN    64

/* Bridge types */
enum {
    BRG_UNKNOWN,
    BRG_OV511,
    BRG_OV511PLUS,
    BRG_OV518,
    BRG_OV518PLUS,
};

/* Bridge classes */
enum {
    BCL_UNKNOWN,
    BCL_OV511,
    BCL_OV518,
};

/* Sensor types */
enum {
    SEN_UNKNOWN,
    SEN_OV76BE,
    SEN_OV7610,
    SEN_OV7620,
    SEN_OV7620AE,
    SEN_OV6620,
    SEN_OV6630,
    SEN_OV6630AE,
    SEN_OV6630AF,
    SEN_OV8600,
    SEN_KS0127,
    SEN_KS0127B,
    SEN_SAA7111A,
};

enum {
    STATE_SCANNING,        /* Scanning for start */
    STATE_HEADER,        /* Parsing header */
    STATE_LINES,        /* Parsing lines */
};

/* Buffer states */
enum {
    BUF_NOT_ALLOCATED,
    BUF_ALLOCATED,
};

/* --------- Definition of ioctl interface --------- */

#define OV511_INTERFACE_VER 101

/* LED options */
enum {
    LED_OFF,
    LED_ON,
    LED_AUTO,
};

/* Raw frame formats */
enum {
    RAWFMT_INVALID,
    RAWFMT_YUV400,
    RAWFMT_YUV420,
    RAWFMT_YUV422,
    RAWFMT_GBR422,
};

struct ov511_i2c_struct {
    unsigned char slave; /* Write slave ID (read ID - 1) */
    unsigned char reg;   /* Index of register */
    unsigned char value; /* User sets this w/ write, driver does w/ read */
    unsigned char mask;  /* Bits to be changed. Not used with read ops */
};

/* ioctls */
#define OV511IOC_WI2C     _IOW('v', BASE_VIDIOCPRIVATE + 5, \
                   struct ov511_i2c_struct)
#define OV511IOC_RI2C    _IOWR('v', BASE_VIDIOCPRIVATE + 6, \
                   struct ov511_i2c_struct)
/* ------------- End IOCTL interface -------------- */

struct usb_ov511;        /* Forward declaration */

struct ov511_sbuf {
    struct usb_ov511 *ov;
    unsigned char *data;
    struct urb *urb;
    spinlock_t lock;
    int n;
};

enum {
    FRAME_UNUSED,        /* Unused (no MCAPTURE) */
    FRAME_READY,        /* Ready to start grabbing */
    FRAME_GRABBING,        /* In the process of being grabbed into */
    FRAME_DONE,        /* Finished grabbing, but not been synced yet */
    FRAME_ERROR,        /* Something bad happened while processing */
};

struct ov511_regvals {
    enum {
        OV511_DONE_BUS,
        OV511_REG_BUS,
        OV511_I2C_BUS,
    } bus;
    unsigned char reg;
    unsigned char val;
};

struct ov511_frame {
    int framenum;        /* Index of this frame */
    unsigned char *data;    /* Frame buffer */
    unsigned char *tempdata; /* Temp buffer for multi-stage conversions */
    unsigned char *rawdata;    /* Raw camera data buffer */
    unsigned char *compbuf;    /* Temp buffer for decompressor */

    int depth;        /* Bytes per pixel */
    int width;        /* Width application is expecting */
    int height;        /* Height application is expecting */

    int rawwidth;        /* Actual width of frame sent from camera */
    int rawheight;        /* Actual height of frame sent from camera */

    int sub_flag;        /* Sub-capture mode for this frame? */
    unsigned int format;    /* Format for this frame */
    int compressed;        /* Is frame compressed? */

    volatile int grabstate;    /* State of grabbing */
    int scanstate;        /* State of scanning */

    int bytes_recvd;    /* Number of image bytes received from camera */

    long bytes_read;    /* Amount that has been read() */

    wait_queue_head_t wq;    /* Processes waiting */

    int snapshot;        /* True if frame was a snapshot */
};

#define DECOMP_INTERFACE_VER 4

/* Compression module operations */
struct ov51x_decomp_ops {
    int (*decomp_400)(unsigned char *, unsigned char *, unsigned char *,
              int, int, int);
    int (*decomp_420)(unsigned char *, unsigned char *, unsigned char *,
              int, int, int);
    int (*decomp_422)(unsigned char *, unsigned char *, unsigned char *,
              int, int, int);
    struct module *owner;
};

struct usb_ov511 {
    struct video_device *vdev;
    struct usb_device *dev;

    int customid;
    char *desc;
    unsigned char iface;
    char usb_path[OV511_USB_PATH_LEN];

    /* Determined by sensor type */
    int maxwidth;
    int maxheight;
    int minwidth;
    int minheight;

    int brightness;
    int colour;
    int contrast;
    int hue;
    int whiteness;
    int exposure;
    int auto_brt;        /* Auto brightness enabled flag */
    int auto_gain;        /* Auto gain control enabled flag */
    int auto_exp;        /* Auto exposure enabled flag */
    int backlight;        /* Backlight exposure algorithm flag */
    int mirror;        /* Image is reversed horizontally */

    int led_policy;        /* LED: off|on|auto; OV511+ only */

    struct mutex lock;    /* Serializes user-accessible operations */
    int user;        /* user count for exclusive use */

    int streaming;        /* Are we streaming Isochronous? */
    int grabbing;        /* Are we grabbing? */

    int compress;        /* Should the next frame be compressed? */
    int compress_inited;    /* Are compression params uploaded? */

    int lightfreq;        /* Power (lighting) frequency */
    int bandfilt;        /* Banding filter enabled flag */

    unsigned char *fbuf;    /* Videodev buffer area */
    unsigned char *tempfbuf; /* Temporary (intermediate) buffer area */
    unsigned char *rawfbuf;    /* Raw camera data buffer area */

    int sub_flag;        /* Pix Array subcapture on flag */
    int subx;        /* Pix Array subcapture x offset */
    int suby;        /* Pix Array subcapture y offset */
    int subw;        /* Pix Array subcapture width */
    int subh;        /* Pix Array subcapture height */

    int curframe;        /* Current receiving sbuf */
    struct ov511_frame frame[OV511_NUMFRAMES];

    struct ov511_sbuf sbuf[OV511_NUMSBUF];

    wait_queue_head_t wq;    /* Processes waiting */

    int snap_enabled;    /* Snapshot mode enabled */

    int bridge;        /* Type of bridge (BRG_*) */
    int bclass;        /* Class of bridge (BCL_*) */
    int sensor;        /* Type of image sensor chip (SEN_*) */

    int packet_size;    /* Frame size per isoc desc */
    int packet_numbering;    /* Is ISO frame numbering enabled? */

    /* Framebuffer/sbuf management */
    int buf_state;
    struct mutex buf_lock;

    struct ov51x_decomp_ops *decomp_ops;

    /* Stop streaming while changing picture settings */
    int stop_during_set;

    int stopped;        /* Streaming is temporarily paused */

    /* Video decoder stuff */
    int input;        /* Composite, S-VIDEO, etc... */
    int num_inputs;        /* Number of inputs */
    int norm;         /* NTSC / PAL / SECAM */
    int has_decoder;    /* Device has a video decoder */
    int pal;        /* Device is designed for PAL resolution */

    /* I2C interface */
    struct mutex i2c_lock;      /* Protect I2C controller regs */
    unsigned char primary_i2c_slave;  /* I2C write id of sensor */

    /* Control transaction stuff */
    unsigned char *cbuf;        /* Buffer for payload */
    struct mutex cbuf_lock;
};

/* Used to represent a list of values and their respective symbolic names */
struct symbolic_list {
    int num;
    char *name;
};

#define NOT_DEFINED_STR "Unknown"

/* Returns the name of the matching element in the symbolic_list array. The
 * end of the list must be marked with an element that has a NULL name.
 */
static inline char *
symbolic(struct symbolic_list list[], int num)
{
    int i;

    for (i = 0; list[i].name != NULL; i++)
            if (list[i].num == num)
                return (list[i].name);

    return (NOT_DEFINED_STR);
}

/* Compression stuff */

#define OV511_QUANTABLESIZE    64
#define OV518_QUANTABLESIZE    32

#define OV511_YQUANTABLE { \
    0, 1, 1, 2, 2, 3, 3, 4, \
    1, 1, 1, 2, 2, 3, 4, 4, \
    1, 1, 2, 2, 3, 4, 4, 4, \
    2, 2, 2, 3, 4, 4, 4, 4, \
    2, 2, 3, 4, 4, 5, 5, 5, \
    3, 3, 4, 4, 5, 5, 5, 5, \
    3, 4, 4, 4, 5, 5, 5, 5, \
    4, 4, 4, 4, 5, 5, 5, 5  \
}

#define OV511_UVQUANTABLE { \
    0, 2, 2, 3, 4, 4, 4, 4, \
    2, 2, 2, 4, 4, 4, 4, 4, \
    2, 2, 3, 4, 4, 4, 4, 4, \
    3, 4, 4, 4, 4, 4, 4, 4, \
    4, 4, 4, 4, 4, 4, 4, 4, \
    4, 4, 4, 4, 4, 4, 4, 4, \
    4, 4, 4, 4, 4, 4, 4, 4, \
    4, 4, 4, 4, 4, 4, 4, 4  \
}

#define OV518_YQUANTABLE { \
    5, 4, 5, 6, 6, 7, 7, 7, \
    5, 5, 5, 5, 6, 7, 7, 7, \
    6, 6, 6, 6, 7, 7, 7, 8, \
    7, 7, 6, 7, 7, 7, 8, 8  \
}

#define OV518_UVQUANTABLE { \
    6, 6, 6, 7, 7, 7, 7, 7, \
    6, 6, 6, 7, 7, 7, 7, 7, \
    6, 6, 6, 7, 7, 7, 7, 8, \
    7, 7, 7, 7, 7, 7, 8, 8  \
}

#endif

:: Command execute ::

Enter:
 
Select:
 

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c99shell v.2.1 [PHP 7 Update] [1.12.2019] maintained by KaizenLouie and updated by cermmik | C99Shell Github (MySQL update) | Generation time: 0.0101 ]--