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

📄 imgdma.h

📁 最新MTK手机软件源码
💻 H
📖 第 1 页 / 共 4 页
字号:
	#define IMGDMA_IBR2_PHOTO_FRAME_MODE_MASK	0x00000006
	#define IMGDMA_IBR2_INT_BIT					0x00000001

	#define IMGDMA_IBR2_1BPP_PHOTO_FRAME		0x00000000
	#define IMGDMA_IBR2_2BPP_PHOTO_FRAME		0x00000002
	#define IMGDMA_IBR2_4BPP_PHOTO_FRAME		0x00000004
	#define IMGDMA_IBR2_8BPP_PHOTO_FRAME		0x00000006

	#define OVERLAY_1BPP_PHOTO_FRAME				IMGDMA_IBR2_1BPP_PHOTO_FRAME
	#define OVERLAY_2BPP_PHOTO_FRAME				IMGDMA_IBR2_2BPP_PHOTO_FRAME
	#define OVERLAY_4BPP_PHOTO_FRAME				IMGDMA_IBR2_4BPP_PHOTO_FRAME
	#define OVERLAY_8BPP_PHOTO_FRAME				IMGDMA_IBR2_8BPP_PHOTO_FRAME

	/* bit mapping of IBR2 configuration register */
	#define IMGDMA_IBR2_SRC_KEY_COLOR_MASK		0x0000FF00
	#define IMGDMA_IBR2_V_SCALE_RATIO_MASK		0x000000F0
	#define IMGDMA_IBR2_H_SCALE_RATIO_MASK		0x0000000F

	/* macros of IBR2 start register */
	#define START_IBR2								REG_IMGDMA_IBR2_START=1;
	#define STOP_IBR2									REG_IMGDMA_IBR2_START=0;

	/* macros of IBR2 control register */
	#define SET_IMGDMA_IBR2_SRC_CRZ				REG_IMGDMA_IBR2_CTRL &= ~IMGDMA_IBR2_PIXEL_SEL_BIT;
	#define SET_IMGDMA_IBR2_SRC_PRZ				REG_IMGDMA_IBR2_CTRL |= IMGDMA_IBR2_PIXEL_SEL_BIT;
	#define ENABLE_IMGDMA_IBR2_PALETTE			REG_IMGDMA_IBR2_CTRL |= IMGDMA_IBR2_PALETTE_ENABLE_BIT;
	#define DISABLE_IMGDMA_IBR2_PALETTE			REG_IMGDMA_IBR2_CTRL &= ~IMGDMA_IBR2_PALETTE_ENABLE_BIT;
	#define ENABLE_IMGDMA_IBR2_AUTO_RESTART	REG_IMGDMA_IBR2_CTRL |= IMGDMA_IBR2_AUTO_RESTART_BIT;
	#define DISABLE_IMGDMA_IBR2_AUTO_RESTART	REG_IMGDMA_IBR2_CTRL &= ~IMGDMA_IBR2_AUTO_RESTART_BIT;
	#define SET_IMGDMA_IBR2_PHOTO_FRAME_DEPTH(n)	REG_IMGDMA_IBR2_CTRL &= ~IMGDMA_IBR2_PHOTO_FRAME_MODE_MASK;\
																REG_IMGDMA_IBR2_CTRL |= n;
	#define ENABLE_IMGDMA_IBR2_INT				REG_IMGDMA_IBR2_CTRL |= IMGDMA_IBR2_INT_BIT;
	#define DISABLE_IMGDMA_IBR2_INT				REG_IMGDMA_IBR2_CTRL &= ~IMGDMA_IBR2_INT_BIT;

	/* macros of IBR2 config register */
	#define SET_IMGDMA_IBR2_SRC_KEY(color)		REG_IMGDMA_IBR2_CONFIG &= ~IMGDMA_IBR2_SRC_KEY_COLOR_MASK;\
															REG_IMGDMA_IBR2_CONFIG |= (color<<8);
	#define SET_IMGDMA_IBR2_V_RATIO(ratio)		REG_IMGDMA_IBR2_CONFIG &= ~IMGDMA_IBR2_V_SCALE_RATIO_MASK;\
															REG_IMGDMA_IBR2_CONFIG |= (ratio<<4);
	#define SET_IMGDMA_IBR2_H_RATIO(ratio)		REG_IMGDMA_IBR2_CONFIG &= ~IMGDMA_IBR2_H_SCALE_RATIO_MASK;\
															REG_IMGDMA_IBR2_CONFIG |= ratio;

typedef enum
{
	IBR1_TYPE_RGB565,
	IBR1_TYPE_RGB888
}IMGDMA_DATA_TYPE_ENUM;

typedef enum
{
	IBR1_ORDER_BGR888,
	IBR1_ORDER_RGB888
}IMGDMA_DATA_ORDER_ENUM;

#define DATA_ORDER_RGB888		0
#define DATA_ORDER_BGR888		1

void init_image_dma(void);
void set_overlay_palette(kal_uint8 palette_size,kal_uint32 *palette_addr_ptr);

/*add for 6228/6229*/
typedef void (*IDMA_Callback)(void);

typedef enum{
	IMGDMA_JPEG_CH,
	IMGDMA_VDO_CH,
	IMGDMA_IBW1_CH,
	IMGDMA_IBW2_CH,
	IMGDMA_IBR1_CH,
	IMGDMA_ALL_CH
}IMGDMA_CHANNEL_ENUM;

typedef enum{
	IMGDMA_MPEG4_DECODE,
	IMGDMA_MPEG4_ENCODE
}IMGDMA_DIR_ENUM;


typedef enum{
	IMGDMA_INIT,
	IMGDMA_READY,
	IMGDMA_BUSY
}IMGDMA_STATE_ENUM;

typedef enum{
	IMGDMA_STOP_NOW,
	IMGDMA_STOP_CALLBACK,	// for channel without enable auto_restart
	IMGDMA_STOP_AT_FRAME_BOUNDARY, // for channel eanbled auto_restart
	IMGDMA_STOP_IDLE
}IMGDMA_STOP_ENUM;

typedef enum{
   PIXEL_ENGINE_IPP1,
   PIXEL_ENGINE_IPP2,
   PIXEL_ENGINE_PRZ,   
   PIXEL_ENGINE_CRZ,
   PIXEL_ENGINE_DRZ,
   PIXEL_ENGINE_NONE
}IMGDMA_PIXEL_ENGINE_ENUM;   


/*XXXXX add in 2006/04/24*/
typedef enum
{
	IMGDMA_OUTPUT_TYPE_RGB565,
	IMGDMA_OUTPUT_TYPE_RGB888
}IMGDMA_OUTPUT_TYPE_ENUM;


typedef struct{
	kal_uint32 bs;	// line buffer base address
	kal_uint16 width;	// image width(minus 1 before writing to register)
	kal_uint16 height; // image height
	kal_uint16 fifo;	// fifo length
	kal_bool gray; // 1: for gray mode, 0: for color mode
	IDMA_Callback cb;	// interrupt callback function NULL: disable interrupt
}IMGDMA_JPEG_STRUCT;

typedef struct{
	IMGDMA_DIR_ENUM dir;	// 1: for MEPG4 encode, 0: for MPEG4 decode
	kal_bool	twice;	// 1: enable twice resizing 0: disable
	kal_bool restart; // 1: automatic reastart while current frame is finished
	kal_uint32 bs1;	// first base address
	kal_uint32 bs2;	// second base address
	kal_uint16 width;	// frame width (1 stands for 1)(max 255)
	kal_uint16 height;	// frame height
	void (*cb1)(kal_uint32 yuv_address);	// interrupt callback function NULL: disable interrupt(first run)
	IDMA_Callback cb2;	// interrupt callback function NULL: disable interrupt(second run)
}IMGDMA_VDO_STRUCT;

typedef struct{
	kal_uint32 bs;	      /*buffer base address*/
	kal_uint16 width;    /*image width*/
	kal_uint16 height;   /*image height*/
	IMGDMA_PIXEL_ENGINE_ENUM 	pixel_engine;/*define pixel engine*/
	IMGDMA_OUTPUT_TYPE_ENUM      output_format;/*output format*/
	kal_bool auto_restart; /*auto restart*/	
}IMGDMA_IBW1_STRUCT;

typedef struct{	
	kal_uint16 width;    /*image width*/
	kal_uint16 height;   /*image height*/
	IMGDMA_PIXEL_ENGINE_ENUM 	pixel_engine;/*define pixel engine*/	
	kal_bool auto_restart; /*auto restart*/	
	kal_bool int_en;                   /*interrup enable*/  
}IMGDMA_IBW3_STRUCT;                       
 
typedef struct{	
	kal_uint16 width;    /*image width*/
	kal_uint16 height;   /*image height*/
	IMGDMA_PIXEL_ENGINE_ENUM 	pixel_engine;/*define pixel engine*/	
	kal_bool auto_restart; /*auto restart*/	
	kal_bool int_en;                   /*interrup enable*/  
}IMGDMA_IBW4_STRUCT;                       
 

typedef struct{
	kal_uint32 base_addr;	           /*buffer base address*/	
	kal_uint32 pixel_number;           /*pixel numbers*/
	IMGDMA_DATA_TYPE_ENUM data_type;	  /*RGB565 or RGB888 */	
	IMGDMA_DATA_ORDER_ENUM data_order; /*RGB888 or BGR888 */
	kal_bool int_en;                   /*interrup enable*/  
}IMGDMA_IBR1_STRUCT;

typedef struct{		
	kal_bool restart;                         /* 1: automatic reastart while current frame is finished*/
	kal_bool int_en;                          /*interrup enable*/  
	IMGDMA_PIXEL_ENGINE_ENUM 	pixel_engine; /*define pixel engine*/	
	/*overlay frame configuration*/
	kal_bool 	overlay_frame_mode;				/* KAL_TRUE or KAL_FALSE */
	kal_uint32  overlay_frame_buffer_address;	/* bsae address of the overlay frame buffer */	
	kal_uint16  overlay_frame_width;				/* overlay frame width */
	kal_uint16	overlay_frame_height;			/* overlay frame height */	
	kal_uint16  overlay_frame_target_width;   /* overlay frame target width */
	kal_uint16	overlay_frame_target_height;  /* overlay frame target height */	
	kal_uint8	overlay_color_depth;				/* 1/2/4/8 bpp */
	kal_uint8	overlay_frame_source_key;		/* source key of the overlay frame buffer */				
}IMGDMA_IBR2_STRUCT;

typedef struct{			
	kal_uint32	jpeg_file_buffer_address;		/* the start address of JPEG file located */
   kal_uint16 	target_width;						/* the width of target image */
	kal_uint16 	target_height;						/* the height of target image */
	kal_uint16 	fifo_size;						   /* FIFO size */
	IMGDMA_PIXEL_ENGINE_ENUM 	pixel_engine; /*define pixel engine*/	
	kal_uint8	jpeg_yuv_mode;						/* YUV420, YUV422 or Gray mode*/
	kal_bool    restart;                      /* 1: automatic reastart while current frame is finished*/
   		
}IMGDMA_JPEG_DMA_STRUCT;

typedef struct{					
	kal_uint32  y_base_addr1;                     /*Base addr1 Y */
   kal_uint32  y_base_addr2;                     /*Base addr2 Y */
   kal_uint32  u_base_addr1;                     /*Base addr1 U */
   kal_uint32  u_base_addr2;                     /*Base addr2 U */
   kal_uint32  v_base_addr1;                     /*Base addr1 V */
   kal_uint32  v_base_addr2;                     /*Base addr2 V */
   
   kal_uint16  encode_width;                     /*encode width*/  
   kal_uint16  encode_height;                    /*encode height*/
	
	IMGDMA_PIXEL_ENGINE_ENUM 	wdma_pixel_engine;        /*define WDMA pixel engine*/	
	IMGDMA_PIXEL_ENGINE_ENUM 	rdma_destination_engine;  /*define RDMA destination engine*/	
   kal_bool    restart;                      /* 1: automatic reastart while current frame is finished*/
   kal_bool    wrtie_done_int;                     /*write done interrupt*/
   kal_bool    read_done_int;                      /*read done interrupt*/		   		
   kal_bool    w_trigger_r;                      /* 1: automatic reastart while current frame is finished*/		   		
   
}IMGDMA_VIDEO_ENCODE_STRUCT;

typedef struct{					
	kal_uint32  y_base_addr1;                     /*Base addr1 Y */
   kal_uint32  y_base_addr2;                     /*Base addr2 Y */
   kal_uint32  u_base_addr1;                     /*Base addr1 U */
   kal_uint32  u_base_addr2;                     /*Base addr2 U */
   kal_uint32  v_base_addr1;                     /*Base addr1 V */
   kal_uint32  v_base_addr2;                     /*Base addr2 V */
   
   kal_uint16  width;                            /*decode width*/  
   kal_uint16  height;                           /*decode height*/
		   
   kal_bool    decode_done_int;                  /*decode done interrupt*/
      
}IMGDMA_VIDEO_DECODE_STRUCT;

typedef struct{					
	kal_uint32 frame1_base_addr;
	kal_uint32 frame2_base_addr;
	kal_uint16 width;
	kal_uint16 height;
   kal_uint16 pitch1_bytes; // horizontal pitch 1
	kal_uint16 pitch2_bytes; // horizontal pitch 2	
	kal_uint16 clip_left;
	kal_uint16 clip_right;
	kal_uint16 clip_top;
	kal_uint16 clip_bottom;	
	IDMA_Callback cb;
	kal_uint8  dest_color_mode;   
   IMGDMA_PIXEL_ENGINE_ENUM 	pixel_engine;        /*define pixel engine*/	
   kal_bool   lcd_trigger;
   kal_bool   int_en;
   kal_bool   pan;
   kal_bool   direct_couple;
   kal_bool   restart;
   kal_bool   pitch;      
   kal_bool   enable_IBW2;      
}IMGDMA_IBW2_STRUCT;

/*extern functions*/

void IMGDMA_IBW2Config(IMGDMA_IBW2_STRUCT *ibw2_struct);
void IMGDMA_VIDEODECODE_DMAConfig(IMGDMA_VIDEO_DECODE_STRUCT *video_decode_dma_struct);
void IMGDMA_VIDEOENCODE_DMAConfig(IMGDMA_VIDEO_ENCODE_STRUCT *video_encode_dma_struct);
void IMGDMA_JPEGDMAConfig(IMGDMA_JPEG_DMA_STRUCT *jpeg_dma_struct);
void IMGDMA_IBR2Config(IMGDMA_IBR2_STRUCT *ibr2_struct);
void IMGDMA_IBR1Config(IMGDMA_IBR1_STRUCT *ibr1_struct);
void IMGDMA_IBW4Config(IMGDMA_IBW4_STRUCT *ibw4_struct);
void IMGDMA_IBW3Config(IMGDMA_IBW3_STRUCT *ibw3_struct);
void IMGDMA_IBW1Config(IMGDMA_IBW1_STRUCT *ibw1_struct);
void video_enc_reset_buffer_counter(void);

#endif
#endif // IMGDMA_H



⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -