📄 usbvideo_drv.h
字号:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* usbvideo_drv.h
*
* Project:
* --------
* Maui_Software
*
* Description:
* ------------
* This file intends for usb video class driver definitions
*
* Author:
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
*
* removed!
* removed!
* removed!
* removed!
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#ifndef USBVIDEO_DRV_H
#define USBVIDEO_DRV_H
#include "usbvideo_custom.h"
#include "usbvideo_if.h"
//#define WEBCAM_TEST_DMA_DELAY
/***********************************************
video class specific command definition
************************************************/
/* device descriptor parameter */
#define USBVIDEO_DEVICE_CODE 0xEF
#define USBVIDEO_SUBCLASS_CODE 0x02
#define USBVIDEO_PROTOCOL_CODE 0x01
/*Scriptor length*/
#define USBVIDEO_VC_INTERFACE_LENGTH 13
#define USBVIDEO_VC_CT_LENGTH 17
#define USBVIDEO_VC_OT_LENGTH 9
#define USBVIDEO_VC_PU_LENGTH 11
//#define USBVIDEO_VC_PU_LENGTH 12 /* for 1.1 version*/
#define USBVIDEO_VC_INTR_LENGTH 5
#define USBVIDEO_VS_INTERFACE_LENGTH 14
#define USBVIDEO_VS_MJPEG_FORMAT_LENGTH 11
#define USBVIDEO_VS_MJPEG_FRAME_LENGTH 38
#define USBVIDEO_VS_STILL_LENGTH 6
#define USBVIDEO_VS_COLOR_MATCHING_LENGTH 6
/* video interface class code */
#define USBVIDEO_CC_VIDEO 0x0e
/* video interface subclass code */
#define USBVIDEO_SC_UNDEFINED 0x00
#define USBVIDEO_SC_VIDEOCONTROL 0x01
#define USBVIDEO_SC_VIDEOSTREAMING 0x02
#define USBVIDEO_SC_VIDEO_INTERFACE_COLLECTION 0x03
/* video interface protocol code */
#define USBVIDEO_PC_PROTOCOL_UNDEFINED 0x00
/* class specific descriptor types*/
#define USBVIDEO_CS_UNDEFINED 0x20
#define USBVIDEO_CS_DEVICE 0x21
#define USBVIDEO_CS_CONFIGURATION 0x22
#define USBVIDEO_CS_STRING 0x23
#define USBVIDEO_CS_INTERFACE 0x24
#define USBVIDEO_CS_ENDPOINT 0x25
/* class specifiv VC interface descriptor subtypes*/
#define USBVIDEO_VC_DESCRIPTOR_UNDEFINED 0x00
#define USBVIDEO_VC_HEADER 0x01
#define USBVIDEO_VC_INPUT_TERMINAL 0x02
#define USBVIDEO_VC_OUTPUT_TERMINAL 0x03
#define USBVIDEO_VC_SELECTOR_UNIT 0x04
#define USBVIDEO_VC_PROCESSING_UNIT 0x05
#define USBVIDEO_VC_EXTENSION_UNIT 0x06
/* class specifiv VS interface descriptor subtypes*/
#define USBVIDEO_VS_UNDEFINED 0x00
#define USBVIDEO_VS_INPUT_HEADER 0x01
#define USBVIDEO_VS_OUTPUT_HEADER 0x02
#define USBVIDEO_VS_STILL_IMAGE_FRAME 0x03
#define USBVIDEO_VS_FORMAT_UNCOMPRESSED 0x04
#define USBVIDEO_VS_FRAME_UNCOMPRESSED 0x05
#define USBVIDEO_VS_FORMAT_MJPEG 0x06
#define USBVIDEO_VS_FRAME_MJPEG 0x07
#define USBVIDEO_VS_FORMAT_MPEG1 0x08
#define USBVIDEO_VS_FORMAT_MPEG2PS 0x09
#define USBVIDEO_VS_FORMAT_MPEG2TS 0x0a
#define USBVIDEO_VS_FORMAT_MPEG4SL 0x0b
#define USBVIDEO_VS_FORMAT_DV 0x0c
#define USBVIDEO_VS_COLORFORMAT 0x0d
#define USBVIDEO_VS_FORMAT_VENDOR 0x0e
#define USBVIDEO_VS_FRAME_VENDOR 0x0f
/* USB terminal types */
#define USBVIDEO_TT_VENDOR_SPECIFIC 0x0100
#define USBVIDEO_TT_STREAMING 0x0101
/* input terminal types */
#define USBVIDEO_ITT_VENDOR_SPECIFIC 0x0200
#define USBVIDEO_ITT_CAMERA 0x0201
#define USBVIDEO_ITT_MEDIA_TANSPORT_INPUT 0x0202
/* still image capture method */
#define USBVIDEO_STILL_CAPTURE_METHOD_1 1
#define USBVIDEO_STILL_CAPTURE_METHOD_2 2
#define USBVIDEO_STILL_CAPTURE_METHOD_3 3
/* hardware trigger usage*/
#define USBVIDEO_HARDWARE_TRIGGER_NOT_SUPPORT 0
#define USBVIDEO_HARDWARE_TRIGGER_SUPPORT 1
#define USBVIDEO_HARDWARE_TRIGGER_STILL 0
#define USBVIDEO_HARDWARE_TRIGGER_GENERAL 1
/* MJPEG format descriptor param */
#define USBVIDEO_FIXED_SIZE_SAMPLES 1
/* request code */
#define USBVIDEO_RC_UNDEFINED 0x00
#define USBVIDEO_SET_CUR 0x01
#define USBVIDEO_GET_CUR 0x81
#define USBVIDEO_GET_MIN 0x82
#define USBVIDEO_GET_MAX 0x83
#define USBVIDEO_GET_RES 0x84
#define USBVIDEO_GET_LEN 0x85
#define USBVIDEO_GET_INFO 0x86
#define USBVIDEO_GET_DEF 0x87
/* videostreaming interface control selectors */
#define USBVIDEO_VS_US_CONTROL_UNDEFINED 0x0000
#define USBVIDEO_VS_PROBE_CONTROL 0x0100
#define USBVIDEO_VS_COMMIT_CONTROL 0x0200
#define USBVIDEO_VS_STILL_PROBE_CONTROL 0x0300
#define USBVIDEO_VS_STILL_COMMIT_CONTROL 0x0400
#define USBVIDEO_VS_STILL_IMAGE_TRIGGER_CONTROL 0x0500
#define USBVIDEO_VS_STREAM_ERROR_CODE_CONTROL 0x0600
#define USBVIDEO_VS_GENERATE_KEY_FRAME_CONTROL 0x0700
#define USBVIDEO_VS_UPDATE_FRAME_SEGMENT_CONTROL 0x0800
#define USBVIDEO_VS_SYNC_DELAY_CONTROL 0x0900
/* payload header info offset */
#define USBVIDEO_PAYLOAD_FRAME_ID 0
#define USBVIDEO_PAYLOAD_EOF 1
#define USBVIDEO_PAYLOAD_PTS 2
#define USBVIDEO_PAYLOAD_SCR 3
#define USBVIDEO_PAYLOAD_RESVD 4
#define USBVIDEO_PAYLOAD_STILL 5
#define USBVIDEO_PAYLOAD_ERR 6
#define USBVIDEO_PAYLOAD_EOH 7
/* the setting of still image trigger control */
#define USBVIDEO_STILL_IMAGE_NORMAL_OPERATION 0
#define USBVIDEO_STILL_IMAGE_TRANSMIT 1
#define USBVIDEO_STILL_IMAGE_TRANSMIT_DEDICATED 2
#define USBVIDEO_STILL_IMAGE_ABORT 3
/* status type for status packet */
#define USBVIDEO_STATUS_TYPE_RESERVED 0
#define USBVIDEO_STATUS_TYPE_VC 1
#define USBVIDEO_STATUS_TYPE_VS 2
#define USBVIDEO_STATUS_VS_EVENT_BUTTOM_PRS 0
#define USBVIDEO_STATUS_VS_EVENT_STREAM_ERR 1
#define USBVIDEO_STATUS_VS_VALUE_BUTTOM_REL 0
#define USBVIDEO_STATUS_VS_VALUE_BUTTOM_PRS 1
/* Attribute information(capability) offset*/
#define USBVIDEO_ATTR_INFO_SUPPORT_GET 0
#define USBVIDEO_ATTR_INFO_SUPPORT_SET 1
#define USBVIDEO_ATTR_INFO_DISBALE 2
#define USBVIDEO_ATTR_INFO_AUTO_UPDATE 3
#define USBVIDEO_ATTR_INFO_ASYNC_CTRL 4
/***********************************************
implement definition
************************************************/
#define USBVIDEO_VC_EP_NUMBER 1 /*interrupt pipe*/
#define USBVIDEO_VS_EP_NUMBER 1
#define USBVIDEO_IF_LENGTH 258
#define USBVIDEO_CLOCK_FREQUENCY 1000
#define USBVIDEO_CT_ID 1
#define USBVIDEO_OT_ID 2
#define USBVIDEO_PU_ID 3
#define USBVIDEO_MAX_PAYLOAD_LENGTH 1024
#define USBVIDEO_VIDEO_BUFFER_NUMBER 3
#define USBVIDEO_PAYLOAD_HEADER_LENGTH 12
#define USBVIDEO_MAX_ATTR_VALUE_SIZE 16
/***********************************************
video class specific descriptor structure
************************************************/
/* class specific VC interface descriptor */
/* Note that the kal_uint8[2] array can not modify to kal_uint16
It is bacause align issue */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 bcdUSB[2];
kal_uint8 wTotalLength[2];
kal_uint8 dwClockFrequency[4];
kal_uint8 bInCollection;
kal_uint8 baInterfaceNr;
} USBVideo_Class_VC_If_Dscr;
/* class specific VC input(camera) terminal descriptor */
/* Note that the kal_uint8[2] array can not modify to kal_uint16
It is bacause align issue */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 bTerminalID;
kal_uint8 wTerminalType[2];
kal_uint8 bAssocTerminal;
kal_uint8 iTerminal;
kal_uint8 wObjectiveFocalLengthMin[2];
kal_uint8 wObjectiveFocalLengthMax[2];
kal_uint8 wOcularFocalLength[2];
kal_uint8 bControlSize;
kal_uint8 bmControls[2];
} USBVideo_CT_Dscr;
/* class specific VC output terminal descriptor */
/* Note that the kal_uint8[2] array can not modify to kal_uint16
It is bacause align issue */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 bTerminalID;
kal_uint8 wTerminalType[2];
kal_uint8 bAssocTerminal;
kal_uint8 bSourceID;
kal_uint8 iTerminal;
} USBVideo_OT_Dscr;
/* class specific VC processing unit descriptor */
/* Note that the kal_uint8[2] array can not modify to kal_uint16
It is bacause align issue */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 bUintID;
kal_uint8 bSourceID;
kal_uint8 wMaxMultiplier[2];
kal_uint8 bControlSize;
kal_uint8 bmControls[2];
kal_uint8 iProcessing;
//kal_uint8 bmVideoStandards;
} USBVideo_PU_Dscr;
/* class specific interrupt endpoint descriptor */
/* Note that the kal_uint8[2] array can not modify to kal_uint16
It is bacause align issue */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 wMaxTransferSize[2];
} USBVideo_Intr_Ep_Dscr;
/* class specific VS interface descriptor */
/* Note that the kal_uint8[2] array can not modify to kal_uint16
It is bacause align issue */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 bNumFormats;
kal_uint8 wTotalLength[2];
kal_uint8 bEndpointAddress;
kal_uint8 bmInfo;
kal_uint8 bTerminalLink;
kal_uint8 bStillCaptureMethod;
kal_uint8 bTriggerSupport;
kal_uint8 bTriggerUsage;
kal_uint8 bControlSize;
kal_uint8 bmaControls;
} USBVideo_Class_VS_If_Dscr;
/* MJPEG video format descriptor */
typedef struct
{
kal_uint8 bLength;
kal_uint8 bDescriptorType;
kal_uint8 bDescriptorSubType;
kal_uint8 bFormatIndex;
kal_uint8 bNumFrameDescriptors;
kal_uint8 bmFlags;
kal_uint8 bDefaultFrameIndex;
kal_uint8 bAspectRatioX;
kal_uint8 bAspectRatioY;
kal_uint8 bmInterlaceFlags;
kal_uint8 bCopyProtect;
} USBVideo_MJPEG_Format_Dscr;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -