📄 usbvision.h
字号:
};#define CODEC_SAA7113 7113#define CODEC_SAA7111 7111#define CODEC_BT819 819#define BRIDGE_NT1003 1003#define BRIDGE_NT1004 1004/* Supported Devices: A table for usbvision.c*/static struct usbvision_device_data_st { int idVendor; int idProduct; int Interface; /* to handle special interface number like BELKIN and Hauppauge WinTV-USB II */ int Codec; int VideoChannels; int VideoNorm; int AudioChannels; int Radio; int vbi; int Tuner; int TunerType; int Vin_Reg1; int Vin_Reg2; int X_Offset; int Y_Offset; int Dvi_yuv; char *ModelString;} usbvision_device_data[] = { {}, /* CUSTOM USBVISION DEVICE do not move, must be first */ {0x0A6F, 0x0400, -1, CODEC_SAA7113, 4, VIDEO_MODE_NTSC, 1, 0, 1, 0, 0, -1, -1, -1, -1, -1, "Xanboo"}, {0x050D, 0x0208, 0, CODEC_SAA7113, 2, VIDEO_MODE_PAL, 1, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Belkin USBView II"}, {0x0573, 0x0003, -1, CODEC_SAA7111, 2, VIDEO_MODE_NTSC, 1, 0, 1, 0, 0, -1, -1, -1, -1, -1, "USBGear USBG-V1 resp. HAMA USB"}, {0x0573, 0x0400, -1, CODEC_SAA7113, 4, VIDEO_MODE_NTSC, 0, 0, 1, 0, 0, -1, -1, 0, 3, 7, "D-Link V100"}, {0x0573, 0x2000, -1, CODEC_SAA7111, 2, VIDEO_MODE_NTSC, 1, 0, 1, 0, 0, -1, -1, -1, -1, -1, "X10 USB Camera"}, {0x0573, 0x2d01, -1, CODEC_SAA7113, 2, VIDEO_MODE_NTSC, 0, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Hauppauge USB-Live Model 600"}, {0x0573, 0x2101, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL, 2, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Zoran Co. PMD (Nogatech) AV-grabber Manhattan"}, {0x0573, 0x4100, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, -1, 20, -1, "Nogatech USB-TV (NTSC) FM"}, {0x0573, 0x4450, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "PixelView PlayTv-USB PRO (PAL) FM"}, {0x0573, 0x4550, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "ZTV ZT-721 2.4GHz USB A/V Receiver"}, {0x0573, 0x4d00, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC, 1, 0, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, -1, 20, -1, "Hauppauge WinTv-USB USA"}, {0x0573, 0x4d01, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC, 1, 0, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, -1, -1, -1, "Hauppauge WinTv-USB"}, {0x0573, 0x4d02, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC, 1, 0, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (NTSC)"}, {0x0573, 0x4d03, -1, CODEC_SAA7111, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM, -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (SECAM) "}, {0x0573, 0x4d10, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (NTSC) FM"}, {0x0573, 0x4d11, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (PAL) FM"}, {0x0573, 0x4d12, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, -1, -1, -1, "Hauppauge WinTv-USB (PAL) FM"}, {0x0573, 0x4d2a, 0, CODEC_SAA7113, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_MICROTUNE_4049FM5, -1, -1, 0, 3, 7, "Hauppague WinTv USB (NTSC) FM Model 602 40201 Rev B285"}, {0x0573, 0x4d2b, 0, CODEC_SAA7113, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_MICROTUNE_4049FM5, -1, -1, 0, 3, 7, "Hauppague WinTv USB (NTSC) FM Model 602 40201 Rev B282"}, {0x0573, 0x4d20, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB II (PAL) FM Model 40201 Rev B226"}, {0x0573, 0x4d21, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 0, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB II (PAL)"}, {0x0573, 0x4d22, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 0, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB II (PAL) MODEL 566"}, {0x0573, 0x4d23, -1, CODEC_SAA7113, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB (SECAM) 4D23"}, {0x0573, 0x4d26, -1, CODEC_SAA7113, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB (SECAM) Model 40209 Rev B243"}, {0x0573, 0x4d28, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 0, 1, 1, TUNER_ALPS_TSBE1_PAL, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB (PAL) Model 40204 Rev B283"}, {0x0573, 0x4d30, -1, CODEC_SAA7113, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB (NTSC) FM Model 40211 Rev B123"}, {0x0573, 0x4d31, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB III (PAL) FM Model 568"}, {0x0573, 0x4d32, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB III (PAL) FM Model 573"}, {0x0573, 0x4d35, 0, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_MICROTUNE_4049FM5, -1, -1, 0, 3, 7, "Hauppauge WinTv-USB III (PAL) FM Model 40219 Rev B252"}, {0x0768, 0x0006, -1, CODEC_SAA7113, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, 5, 5, -1, "Camtel Technology USB TV Genie Pro FM Model TVB330"}, {0x07d0, 0x0001, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL, 0, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Digital Video Creator I"}, {0x07d0, 0x0002, -1, CODEC_SAA7111, 2, VIDEO_MODE_NTSC, 0, 0, 1, 0, 0, -1, -1, 82, 20, 7, "Global Village GV-007 (NTSC)"}, {0x07d0, 0x0003, -1, CODEC_SAA7113, 2, VIDEO_MODE_NTSC, 0, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Dazzle DVC-50 (NTSC)"}, {0x07d0, 0x0004, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL, 0, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Dazzle DVC-80 (PAL)"}, {0x07d0, 0x0005, -1, CODEC_SAA7113, 2, VIDEO_MODE_SECAM, 0, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Dazzle FUSION (SECAM)"}, {0x2304, 0x0109, -1, CODEC_SAA7111, 3, VIDEO_MODE_SECAM, 1, 0, 1, 1, TUNER_PHILIPS_SECAM, -1, -1, -1, -1, -1, "Pinnacle Studio PCTV USB (SECAM)"}, {0x2304, 0x0110, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_PHILIPS_PAL, -1, -1, -1, -1, -1, "Pinnacle Studio PCTV USB (PAL) FM"}, {0x2304, 0x0111, -1, CODEC_SAA7111, 3, VIDEO_MODE_PAL, 1, 0, 1, 1, TUNER_PHILIPS_PAL, -1, -1, -1, -1, -1, "Miro PCTV USB"}, {0x2304, 0x0112, -1, CODEC_SAA7111, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_PHILIPS_NTSC_M, -1, -1, -1, -1, -1, "Pinnacle Studio PCTV USB (NTSC) FM"}, {0x2304, 0x0210, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_TEMIC_4009FR5_PAL, -1, -1, 0, 3, 7, "Pinnacle Studio PCTV USB (PAL) FM"}, {0x2304, 0x0212, -1, CODEC_SAA7113, 3, VIDEO_MODE_NTSC, 1, 1, 1, 1, TUNER_TEMIC_4039FR5_NTSC, -1, -1, 0, 3, 7, "Pinnacle Studio PCTV USB (NTSC) FM"}, {0x2304, 0x0214, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_TEMIC_4009FR5_PAL, -1, -1, 0, 3, 7, "Pinnacle Studio PCTV USB (PAL) FM"}, {0x2304, 0x0300, -1, CODEC_SAA7113, 2, VIDEO_MODE_NTSC, 1, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Pinnacle Studio Linx Video input cable (NTSC)"}, {0x2304, 0x0301, -1, CODEC_SAA7113, 2, VIDEO_MODE_PAL, 1, 0, 1, 0, 0, -1, -1, 0, 3, 7, "Pinnacle Studio Linx Video input cable (PAL)"}, {0x2304, 0x0419, -1, CODEC_SAA7113, 3, VIDEO_MODE_PAL, 1, 1, 1, 1, TUNER_TEMIC_4009FR5_PAL, -1, -1, 0, 3, 7, "Pinnacle PCTV Bungee USB (PAL) FM"}, {} /* Terminating entry */};/* Supported Devices: A table for the usb.c*/static struct usb_device_id usbvision_table [] = { { }, /* CUSTOM USBVISION DEVICE do not move, must be first */ { USB_DEVICE(0x0A6F, 0x0400) }, /* Xanboo */ { USB_DEVICE(0x050d, 0x0208) }, /* Belkin USBView II */ { USB_DEVICE(0x0573, 0x0003) }, /* USBGear USBG-V1 */ { USB_DEVICE(0x0573, 0x0400) }, /* D-Link V100 */ { USB_DEVICE(0x0573, 0x2000) }, /* X10 USB Camera */ { USB_DEVICE(0x0573, 0x2d01) }, /* Hauppauge USB-Live Model 600 */ { USB_DEVICE(0x0573, 0x2101) }, /* Zoran Co. PMD (Nogatech) AV-grabber Manhattan */ { USB_DEVICE(0x0573, 0x4100) }, /* Nogatech USB-TV FM (NTSC) */ { USB_DEVICE(0x0573, 0x4450) }, /* PixelView PlayTv-USB PRO (PAL) FM */ { USB_DEVICE(0x0573, 0x4550) }, /* ZTV ZT-721 2.4GHz USB A/V Receiver */ { USB_DEVICE(0x0573, 0x4d00) }, /* Hauppauge WinTv-USB USA */ { USB_DEVICE(0x0573, 0x4d01) }, /* Hauppauge WinTv-USB */ { USB_DEVICE(0x0573, 0x4d02) }, /* Hauppauge WinTv-USB UK */ { USB_DEVICE(0x0573, 0x4d03) }, /* Hauppauge WinTv-USB France */ { USB_DEVICE(0x0573, 0x4d10) }, /* Hauppauge WinTv-USB with FM USA radio */ { USB_DEVICE(0x0573, 0x4d11) }, /* Hauppauge WinTv-USB (PAL) with FM radio */ { USB_DEVICE(0x0573, 0x4d12) }, /* Hauppauge WinTv-USB UK with FM Radio */ { USB_DEVICE(0x0573, 0x4d2b) }, /* Hauppague WinTv USB Model 602 40201 Rev B282 */ { USB_DEVICE(0x0573, 0x4d2a) }, /* Hauppague WinTv USB Model 602 40201 Rev B285 */ { USB_DEVICE(0x0573, 0x4d20) }, /* Hauppauge WinTv-USB II (PAL) FM Model 40201 Rev B226 */ { USB_DEVICE(0x0573, 0x4d21) }, /* Hauppauge WinTv-USB II (PAL) with FM radio*/ { USB_DEVICE(0x0573, 0x4d22) }, /* Hauppauge WinTv-USB II (PAL) Model 566 */ { USB_DEVICE(0x0573, 0x4d23) }, /* Hauppauge WinTv-USB France 4D23*/ { USB_DEVICE(0x0573, 0x4d26) }, /* Hauppauge WinTv-USB Model 40209 rev B243 */ { USB_DEVICE(0x0573, 0x4d28) }, /* Hauppauge WinTv-USB Model 40204 rev B283 */ { USB_DEVICE(0x0573, 0x4d30) }, /* Hauppauge WinTv-USB FM Model 40211 rev B123 */ { USB_DEVICE(0x0573, 0x4d31) }, /* Hauppauge WinTv-USB III (PAL) with FM radio Model 568 */ { USB_DEVICE(0x0573, 0x4d32) }, /* Hauppauge WinTv-USB III (PAL) FM Model 573 */ { USB_DEVICE(0x0573, 0x4d35) }, /* Hauppauge WinTv-USB III (PAL) FM Model 40219 Rev B252 */ { USB_DEVICE(0x0768, 0x0006) }, /* Camtel Technology USB TV Genie Pro FM Model TVB330 */ { USB_DEVICE(0x07d0, 0x0001) }, /* Digital Video Creator I */ { USB_DEVICE(0x07d0, 0x0002) }, /* Global Village GV-007 (NTSC) */ { USB_DEVICE(0x07d0, 0x0003) }, /* Dazzle DVC-50 (NTSC) */ { USB_DEVICE(0x07d0, 0x0004) }, /* Dazzle DVC-80 (PAL) */ { USB_DEVICE(0x07d0, 0x0005) }, /* Dazzle Fusion (SECAM) */ { USB_DEVICE(0x2304, 0x0109) }, /* Pinnacle Studio PCTV USB (SECAM) */ { USB_DEVICE(0x2304, 0x0110) }, /* Pinnacle Studio PCTV USB (PAL) */ { USB_DEVICE(0x2304, 0x0111) }, /* Miro PCTV USB */ { USB_DEVICE(0x2304, 0x0112) }, /* Pinnacle Studio PCTV USB (NTSC) with FM radio */ { USB_DEVICE(0x2304, 0x0210) }, /* Pinnacle Studio PCTV USB (PAL) with FM radio */ { USB_DEVICE(0x2304, 0x0212) }, /* Pinnacle Studio PCTV USB (NTSC) with FM radio */ { USB_DEVICE(0x2304, 0x0214) }, /* Pinnacle Studio PCTV USB (PAL) with FM radio */ { USB_DEVICE(0x2304, 0x0300) }, /* Pinnacle Studio Linx Video input cable (NTSC) */ { USB_DEVICE(0x2304, 0x0301) }, /* Pinnacle Studio Linx Video input cable (PAL) */ { USB_DEVICE(0x2304, 0x0419) }, /* Pinnacle PCTV Bungee USB (PAL) FM */ { } /* Terminating entry */};#define USBVISION_I2C_CLIENTS_MAX 8struct usb_usbvision { struct video_device *vdev; /* Video Device */ struct video_device *rdev; /* Radio Device */ struct video_device *vbi; /* VBI Device */ struct video_audio audio_dev; /* Current audio params */ /* i2c Declaration Section*/ struct i2c_adapter i2c_adap; struct i2c_algo_usb_data i2c_algo; struct i2c_client i2c_client; int i2c_state, i2c_ok; struct i2c_client *i2c_clients[USBVISION_I2C_CLIENTS_MAX]; struct urb *ctrlUrb; unsigned char ctrlUrbBuffer[8]; int ctrlUrbBusy;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,4,20) devrequest ctrlUrbSetup;#else struct usb_ctrlrequest ctrlUrbSetup;#endif wait_queue_head_t ctrlUrb_wq; // Processes waiting struct semaphore ctrlUrbLock; int have_tuner; int tuner_type; int bridgeType; // NT1003 or NT1004 int channel; int radio; int video_inputs; // # of inputs unsigned long freq; int AudioMute; int AudioChannel; int isocMode; // format of video data for the usb isoc-transfer unsigned int nr; // Number of the device < MAX_USBVISION /* Device structure */ struct usb_device *dev; unsigned char iface; /* Video interface number */ unsigned char ifaceAltActive, ifaceAltInactive; /* Alt settings */ unsigned char Vin_Reg2_Preset; struct semaphore lock; struct timer_list powerOffTimer;#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,0) struct tq_struct powerOffTask;#else struct work_struct powerOffWork;#endif int power; /* is the device powered on? */ int user; /* user count for exclusive use */ int usbvision_used; /* Is this structure in use? */ int initialized; /* Had we already sent init sequence? */ int DevModel; /* What type of USBVISION device we got? */ int streaming; /* Are we streaming Isochronous? */ int last_error; /* What calamity struck us? */ int curwidth; /* width of the frame the device is currently set to*/ int curheight; /* height of the frame the device is currently set to*/ int stretch_width; /* stretch-factor for frame width (from usb to screen)*/ int stretch_height; /* stretch-factor for frame height (from usb to screen)*/ char *fbuf; /* Videodev buffer area for mmap*/ int max_frame_size; /* Bytes in one video frame */ int fbuf_size; /* Videodev buffer size */ int curFrameNum; // number of current frame in frame buffer mode struct usbvision_frame *curFrame; // pointer to current frame, set by usbvision_find_header struct usbvision_frame frame[USBVISION_NUMFRAMES]; // frame buffer int curSbufNum; // number of current receiving sbuf struct usbvision_sbuf sbuf[USBVISION_NUMSBUF]; // S buffering volatile int remove_pending; /* If set then about to exit */ /* Scratch space from the Isochronous Pipe.*/ unsigned char *scratch; int scratch_read_ptr; int scratch_write_ptr; int scratch_headermarker[USBVISION_NUM_HEADERMARKER]; int scratch_headermarker_read_ptr; int scratch_headermarker_write_ptr; int isocstate; struct video_picture vpic; /* Picture settings */ struct video_capability vcap; /* Video capabilities */ struct video_channel vchan; /* May be used for tuner support */ unsigned char video_endp; /* 0x82 for USBVISION devices based */ // Overlay stuff: struct video_buffer vid_buf; struct video_window vid_win; int vid_buf_valid; // Status: video buffer is valid (set) int vid_win_valid; // Status: video window is valid (set) int overlay; /*Status: Are we overlaying? */ unsigned int clipmask[USBVISION_CLIPMASK_SIZE / 4]; unsigned char *overlay_base; /* Virtual base address of video buffer */ unsigned char *overlay_win; /* virt start address of overlay window */ struct usbvision_frame overlay_frame; // Decompression stuff: unsigned char *IntraFrameBuffer; /* Buffer for reference frame */ int BlockPos; //for test only int requestIntra; // 0 = normal; 1 = intra frame is requested; int lastIsocFrameNum; // check for lost isoc frames int isocPacketSize; // need to calculate usedBandwidth int usedBandwidth; // used bandwidth 0-100%, need to set comprLevel int comprLevel; // How strong (100) or weak (0) is compression int lastComprLevel; // How strong (100) or weak (0) was compression int usb_bandwidth; /* Mbit/s */ /* /proc entries, relative to /proc/video/usbvision/ */ struct proc_dir_entry *proc_devdir; /* Per-device proc directory */ struct proc_dir_entry *proc_info; /* <minor#>/info entry */ struct proc_dir_entry *proc_register; /* <minor#>/register entry */ struct proc_dir_entry *proc_frame; /* <minor#>/frame entry */ struct proc_dir_entry *proc_button; /* <minor#>/button entry */ struct proc_dir_entry *proc_control; /* <minor#>/control entry */ /* Statistics that can be overlayed on the screen */ unsigned long isocUrbCount; // How many URBs we received so far unsigned long urb_length; /* Length of last URB */ unsigned long isocDataCount; /* How many bytes we received */ unsigned long header_count; /* How many frame headers we found */ unsigned long scratch_ovf_count; /* How many times we overflowed scratch */ unsigned long isocSkipCount; /* How many empty ISO packets received */ unsigned long isocErrCount; /* How many bad ISO packets received */ unsigned long isocPacketCount; // How many packets we totally got unsigned long timeInIrq; // How long do we need for interrupt int isocMeasureBandwidthCount; int frame_num; // How many video frames we send to user int maxStripLen; // How big is the biggest strip int comprBlockPos; int stripLenErrors; // How many times was BlockPos greater than StripLen int stripMagicErrors; int stripLineNumberErrors; int ComprBlockTypes[4];};static struct usbvision_v4l_format_st { int supported; int bytes_per_pixel; int depth; int format; char *desc;} usbvision_v4l_format[] = { { 0 }, { 1, 1, 8, VIDEO_PALETTE_GREY , "GREY" }, { 0, 0, 0, VIDEO_PALETTE_HI240 , "HI240" }, { 1, 2, 16, VIDEO_PALETTE_RGB565 , "RGB565" }, { 1, 3, 24, VIDEO_PALETTE_RGB24 , "RGB24" }, { 1, 4, 32, VIDEO_PALETTE_RGB32 , "RGB32" }, { 1, 2, 16, VIDEO_PALETTE_RGB555 , "RGB555" }, { 1, 2, 16, VIDEO_PALETTE_YUV422 , "YUV422" }, { 0, 0, 0, VIDEO_PALETTE_YUYV , "YUYV" }, { 0, 0, 0, VIDEO_PALETTE_UYVY , "UYVY" }, { 0, 0, 0, VIDEO_PALETTE_YUV420 , "YUV420" }, { 0, 0, 0, VIDEO_PALETTE_YUV411 , "YUV411" }, { 0, 0, 0, VIDEO_PALETTE_RAW , "RAW" }, { 1, 2, 16, VIDEO_PALETTE_YUV422P, "YUV422P" }, { 0, 0, 0, VIDEO_PALETTE_YUV411P, "YUV411P" }, { 1, 2, 12, VIDEO_PALETTE_YUV420P, "YUV420P" }, // 1.5 ! { 0, 0, 0, VIDEO_PALETTE_YUV410P, "YUV410P" }, { 0 /* END OF LIST */ },};#define USBVISION_SUPPORTED_PALETTES 16#endif /* __LINUX_USBVISION_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -