⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usbvideo_drv.h

📁 mtk 6225平台的usb程序! 对想了解mtk平台usb的朋友会有帮助!
💻 H
📖 第 1 页 / 共 2 页
字号:
/*****************************************************************************
*  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 + -