213 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			213 lines
		
	
	
		
			7.5 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| #ifndef IMAGEAPP_USBMOVIE_H
 | |
| #define IMAGEAPP_USBMOVIE_H
 | |
| 
 | |
| #include "hdal.h"
 | |
| #include "kflow_videoenc/media_def.h"
 | |
| #include <kwrap/type.h>
 | |
| #include "ImageApp/ImageApp_Common.h"
 | |
| #include "UVAC.h"
 | |
| 
 | |
| /// ========== Definition area ==========
 | |
| /**
 | |
|      @name Image ratio.
 | |
| 
 | |
|      @note for ImageUnit_CfgAspect()
 | |
| */
 | |
| //@{
 | |
| #define NVT_USBMOVIE_CROPRATIO_W_16     16
 | |
| #define NVT_USBMOVIE_CROPRATIO_W_4      4
 | |
| #define NVT_USBMOVIE_CROPRATIO_H_9      9
 | |
| #define NVT_USBMOVIE_CROPRATIO_H_3      3
 | |
| 
 | |
| /**
 | |
|      @name Tagret bitrate for MJPEG. Unit is Byte/Sec.
 | |
| 
 | |
|      @note for NVT_USBMOVIE_CFG_TBR_MJPG
 | |
| */
 | |
| //@{
 | |
| #define NVT_USBMOVIE_TBR_MJPG_LOW       0x00200000  ///< 2M
 | |
| #define NVT_USBMOVIE_TBR_MJPG_HIGH      0x01000000  ///< 16M
 | |
| #define NVT_USBMOVIE_TBR_MJPG_DEFAULT   0x00800000  ///< 8M
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|      @name Tagret bitrate for H264. Unit is Byte/Sec.
 | |
| 
 | |
|      @note for NVT_USBMOVIE_CFG_TBR_H264
 | |
| */
 | |
| //@{
 | |
| #define NVT_USBMOVIE_TBR_H264_LOW       0x00100000  ///< 1M
 | |
| #define NVT_USBMOVIE_TBR_H264_HIGH      0x00800000  ///< 8M
 | |
| #define NVT_USBMOVIE_TBR_H264_DEFAULT   0x00200000  ///< 2M
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|      @name Usb movie mode.
 | |
| 
 | |
|      @note for NVT_USBMOVIE_CFG_MODE
 | |
| */
 | |
| //@{
 | |
| #define NVT_USBMOVIE_MODE_CAM             0    ///< like a PC cam
 | |
| //#define NVT_USBMOVIE_MODE_MULTIMEDIA      1    ///< for multimedia system
 | |
| //@}
 | |
| 
 | |
| /**
 | |
|      @name Usb media format.
 | |
| 
 | |
|      Uvc payload format.
 | |
| 
 | |
|      @note for NVT_USBMOVIE_CFG_MEDIA_FMT
 | |
| */
 | |
| //@{
 | |
| #define NVT_USBMOVIE_MEDIA_MJPEG            0    ///< MJPEG
 | |
| #define NVT_USBMOVIE_MEDIA_H264             1    ///< H264
 | |
| //@}
 | |
| 
 | |
| //UVC Extension Unit Control Selectors
 | |
| #define EU_CONTROL_ID_01                    0x01
 | |
| #define EU_CONTROL_ID_02                    0x02
 | |
| #define EU_CONTROL_ID_03                    0x03
 | |
| #define EU_CONTROL_ID_04                    0x04
 | |
| #define EU_CONTROL_ID_05                    0x05
 | |
| #define EU_CONTROL_ID_06                    0x06
 | |
| #define EU_CONTROL_ID_07                    0x07
 | |
| #define EU_CONTROL_ID_08                    0x08
 | |
| #define EU_CONTROL_ID_09                    0x09
 | |
| #define EU_CONTROL_ID_10                    0x0A
 | |
| #define EU_CONTROL_ID_11                    0x0B
 | |
| #define EU_CONTROL_ID_12                    0x0C
 | |
| #define EU_CONTROL_ID_13                    0x0D
 | |
| #define EU_CONTROL_ID_14                    0x0E
 | |
| #define EU_CONTROL_ID_15                    0x0F
 | |
| #define EU_CONTROL_ID_16                    0x10
 | |
| 
 | |
| #define SUPPORT_GET_REQUEST                 0x01
 | |
| #define SUPPORT_SET_REQUEST                 0x02
 | |
| 
 | |
| /// ========== Enum area ==========
 | |
| enum {
 | |
| 	USBMOVIE_CFG_MEM_POOL_INFO  = 0xF000E000,
 | |
| 	USBMOVIE_CFG_SENSOR_INFO,
 | |
| 	USBMOVIE_CFG_CHANNEL,               ///< UVC channel number
 | |
| 	USBMOVIE_CFG_TBR_MJPG,              ///< tagret bitrate for MJPEG. Unit is Byte/Sec.
 | |
| 	USBMOVIE_CFG_TBR_H264,              ///< tagret bitrate for H264. Unit is Byte/Sec.
 | |
| 	USBMOVIE_CFG_SET_MOVIE_SIZE_CB,     ///< the callback is invoked while UVC is started by USB host
 | |
| 	USBMOVIE_CFG_MODE,                  ///< for PC cam mode or multimedia mode
 | |
| 	USBMOVIE_CFG_MEDIA_FMT,             ///< payload data is MJPEG or H264, for multimedia mode only
 | |
| 	USBMOVIE_CFG_VDOIN_INFO,
 | |
| 	USBMOVIE_CFG_SENSOR_MAPPING,
 | |
| };
 | |
| 
 | |
| /// ========== Data structure area ==========
 | |
| typedef struct _NVT_USBMOVIE_IPL_FUNC {
 | |
| 	UINT32 vcap_func;
 | |
| 	UINT32 vproc_func;
 | |
| } NVT_USBMOVIE_IPL_FUNC, *PNVT_USBMOVIE_IPL_FUNC;
 | |
| 
 | |
| typedef struct _NVT_USBMOVIE_VID_RESO {
 | |
| 	UVAC_VID_DEV_CNT dev_id;
 | |
| 	UINT32 sen_id;
 | |
| 	UINT32 ResoIdx;
 | |
| 	UINT32 width;
 | |
| 	UINT32 height;
 | |
| 	UINT32 fps;
 | |
| 	UVAC_VIDEO_FORMAT codec;
 | |
| 	UINT32 tbr;
 | |
| 
 | |
| } NVT_USBMOVIE_VID_RESO, *PNVT_USBMOVIE_VID_RESO;
 | |
| 
 | |
| typedef struct {
 | |
| 	UINT32                 rec_id;
 | |
| 	HD_VIDEOCAP_DRV_CONFIG vcap_cfg;
 | |
| 	HD_VIDEO_PXLFMT        senout_pxlfmt;
 | |
| 	HD_VIDEO_PXLFMT        capout_pxlfmt;
 | |
| 	UINT32                 data_lane;
 | |
| 	SENSOR_PATH_INFO       ae_path;
 | |
| 	SENSOR_PATH_INFO       awb_path;
 | |
| 	SENSOR_PATH_INFO       af_path;
 | |
| 	SENSOR_PATH_INFO       iq_path;
 | |
| 	SENSOR_PATH_INFO       iq_shading_path;
 | |
| 	SENSOR_PATH_INFO       iq_dpc_path;
 | |
| 	SENSOR_PATH_INFO       iq_ldc_path;
 | |
| 	char                   file_path[32];
 | |
| } USBMOVIE_SENSOR_INFO;
 | |
| 
 | |
| // structure for UVAC_PARAM_IPL_USER_IMG_SIZE
 | |
| typedef struct {
 | |
| 	USIZE size;
 | |
| 	UINT32 fps;
 | |
| } UVAC_IPL_SIZE_INFO;
 | |
| 
 | |
| // structure for UVAC_PARAM_IMGCAP_JPG_QUALITY
 | |
| typedef struct {
 | |
| 	UINT32 jpg_quality;                 // 1~100
 | |
| 	UINT32 buf_size;                    // unit: byte, real allocate buffer size will be buf_size * 1.5
 | |
| } UVAC_JPG_QUALITY;
 | |
| 
 | |
| /// ========== Callback function area ==========
 | |
| /**
 | |
|     @name Callback prototype for NVT_USBMOVIE_CFG_SET_MOVIE_SIZE_CB
 | |
| 
 | |
|     @param[in] pVidReso1 pointer to video resolution of UVC channel 1 , refering to #_NVT_USBMOVIE_VID_RESO
 | |
|     @param[in] pVidReso2 pointer to video resolution of UVC channel 2 , refering to #_NVT_USBMOVIE_VID_RESO
 | |
| 
 | |
|     @return void
 | |
| */
 | |
| //@{
 | |
| typedef void (*IMAGAPP_UVAC_SET_VIDRESO_CB)(PNVT_USBMOVIE_VID_RESO pVidReso1);
 | |
| //@}
 | |
| 
 | |
| // =================== Parameters ===================
 | |
| enum {
 | |
| 	UVAC_PARAM_START = 0x00003000,
 | |
| 	UVAC_PARAM_VCAP_FUNC,
 | |
| 	UVAC_PARAM_VPROC_FUNC,
 | |
| 	UVAC_PARAM_UVAC_INFO,           ///< Information needed for UVAC module.
 | |
| 	UVAC_PARAM_UVAC_VEND_DEV_DESC,  ///< Device descriptor, refering to #_UVAC_VEND_DEV_DESC.
 | |
| 	UVAC_PARAM_VID_RESO_ARY,        ///< Video resolution array, refering to #_UVAC_VID_RESO_ARY.
 | |
| 	UVAC_PARAM_AUD_SAMPLERATE_ARY,  ///< Audio sample array, refering to #_UVAC_AUD_SAMPLERATE_ARY_.
 | |
| 	UVAC_PARAM_UVAC_TBR_MJPG,       ///< Motion JPEG stream target size(Byte/Sec). Default value is 0x300000.
 | |
| 	UVAC_PARAM_UVAC_TBR_H264,       ///< H.264 stream target size(Byte/Sec). Default value is 0x100000.
 | |
| 	UVAC_PARAM_BS_START,            ///< Resume  sending stream to USB host.
 | |
| 	UVAC_PARAM_BS_STOP,             ///< Suspend sending stream to USB host.
 | |
| 	UVAC_PARAM_UVAC_CAP_M3,         ///< Enable UVC capture method 3.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID01,   ///> Extension unit callback with CS=1.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID02,   ///> Extension unit callback with CS=2.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID03,   ///> Extension unit callback with CS=3.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID04,   ///> Extension unit callback with CS=4.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID05,   ///> Extension unit callback with CS=5.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID06,   ///> Extension unit callback with CS=6.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID07,   ///> Extension unit callback with CS=7.
 | |
| 	UVAC_PARAM_EU_VENDCMDCB_ID08,   ///> Extension unit callback with CS=8.
 | |
| 	UVAC_PARAM_WINUSB_ENABLE,       ///< Enable WINUSB.
 | |
| 	UVAC_PARAM_WINUSB_CB,           ///< The callback function for WINUSB
 | |
| 	UVAC_PARAM_BULK_DATA,           ///< Obsolete
 | |
| 	UVAC_PARAM_VID_FMT_TYPE,        ///< Supported video format by UVC device.
 | |
| 	UVAC_PARAM_CDC_ENABLE,          ///< Enable CDC ADM.
 | |
| 	UVAC_PARAM_CDC_PSTN_REQUEST_CB, ///< The callback function for CDC PSTN subclass specific request
 | |
| 	UVAC_PARAM_AUD_FMT_TYPE,        ///< Audio format, refering to #_UVAC_AUD_FMT_TYPE
 | |
| 	UVAC_PARAM_MAX_FRAME_SIZE,      ///< Set higher frame size in MJPEG format.
 | |
| 	UVAC_PARAM_SUSPEND_CLOSE_IMM,	///< Suspend close unit.
 | |
| 	UVAC_PARAM_EU_CTRL,				///< UVC extension unit capability.
 | |
| 	UVAC_PARAM_VCAP_OUTFUNC,
 | |
| 	UVAC_PARAM_UVC2_MJPG_FRM_INFO,
 | |
| 	UVAC_PARAM_UVC2_H264_FRM_INFO,
 | |
| 	UVAC_PARAM_VCAP_PAT_GEN,
 | |
| 	UVAC_PARAM_IPL_MIRROR,
 | |
| 	UVAC_PARAM_IPL_USER_IMG_SIZE,
 | |
| 	UVAC_PARAM_VCAP_OUT_SIZE,
 | |
| 	UVAC_PARAM_IMG_JPG_QUALITY,
 | |
| 	UVAC_PARAM_SIE_REMAP,
 | |
| };
 | |
| 
 | |
| /// ========== Function Prototype area ==========
 | |
| /// ImageApp_UsbMovie
 | |
| extern ER ImageApp_UsbMovie_Open(void);
 | |
| extern ER ImageApp_UsbMovie_Close(void);
 | |
| extern ER ImageApp_UsbMovie_Config(UINT32 config_id, UINT32 value);
 | |
| /// ImageApp_UsbMovie_Param
 | |
| extern ER ImageApp_UsbMovie_SetParam(UINT32 id, UINT32 param, UINT32 value);
 | |
| extern ER ImageApp_UsbMovie_GetParam(UINT32 id, UINT32 param, UINT32* value);
 | |
| 
 | |
| #endif//IMAGEAPP_USBMOVIE_H
 | 
