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

📄 imgdma.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
	switch(ibw1_struct->pixel_engine)
	{
	   case PIXEL_ENGINE_IPP1:
	      SET_IBW1_PIXEL_SRC_IPP1;	   
	   break;  	   
	   case PIXEL_ENGINE_IPP2:
	      SET_IBW1_PIXEL_SRC_IPP2;	   
	   break;  	   
	   case PIXEL_ENGINE_CRZ:
	      SET_IBW1_PIXEL_SRC_CRZ;	   
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_IBW1_PIXEL_SRC_PRZ;	   
	   break;  	   	   
	   default:
	      ASSERT(0);
	   break;   
	}
	if(ibw1_struct->output_format==IMGDMA_OUTPUT_TYPE_RGB565)
	{
	   SET_IBW1_OUTPUT_RGB565;
	}   
	else
	{
	   SET_IBW1_OUTPUT_RGB888;
	}   
	   
	if (ibw1_struct->auto_restart==KAL_FALSE)	
	{
		DISABLE_IBW1_AUTO_RESTART;
	}	
	else		
	{
		ENABLE_IBW1_AUTO_RESTART;
	}	
		
	REG_IMGDMA_IBW1_BASE_ADDR1=ibw1_struct->bs;
	REG_IMGDMA_IBW1_WIDTH=ibw1_struct->width;
	REG_IMGDMA_IBW1_HEIGHT=ibw1_struct->height;
	START_IBW1;      
}   

void IMGDMA_IBW3Config(IMGDMA_IBW3_STRUCT *ibw3_struct)
{
   STOP_IBW3;
	REG_IMGDMA_IBW3_CTRL=0;
	
	switch(ibw3_struct->pixel_engine)
	{
	   case PIXEL_ENGINE_IPP1:
	      SET_IBW3_PIXEL_SRC_IPP1;	   
	   break;  	   
	   case PIXEL_ENGINE_IPP2:
	      SET_IBW3_PIXEL_SRC_IPP2;	   
	   break;  	   
	   case PIXEL_ENGINE_CRZ:
	      SET_IBW3_PIXEL_SRC_CRZ;	   
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_IBW3_PIXEL_SRC_PRZ;	   
	   break;  	   	   
	   default:
	      ASSERT(0);
	   break;   
	}
   if (ibw3_struct->auto_restart==KAL_FALSE)	
	{
		DISABLE_IBW3_AUTO_RESTART;
	}	
	else		
	{
		ENABLE_IBW3_AUTO_RESTART;
	}	
	if(ibw3_struct->int_en)
	{
	   ENABLE_IBW3_INT;
	}
	else
	{
	   DISABLE_IBW3_INT;
	}
		
	REG_IMGDMA_IBW3_WIDTH=ibw3_struct->width;
	REG_IMGDMA_IBW3_HEIGHT=ibw3_struct->height;
	START_IBW3;     
}   
void IMGDMA_IBW4Config(IMGDMA_IBW4_STRUCT *ibw4_struct)
{
   STOP_IBW4;
	REG_IMGDMA_IBW4_CTRL=0;
	
	switch(ibw4_struct->pixel_engine)
	{
	   case PIXEL_ENGINE_IPP1:
	      SET_IBW4_PIXEL_SRC_IPP1;	   
	   break;  	   
	   case PIXEL_ENGINE_IPP2:
	      SET_IBW4_PIXEL_SRC_IPP2;	   
	   break;  	   
	   case PIXEL_ENGINE_CRZ:
	      SET_IBW4_PIXEL_SRC_CRZ;	   
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_IBW4_PIXEL_SRC_PRZ;	   
	   break;  	   	   
	   default:
	      ASSERT(0);
	   break;   
	}
   if (ibw4_struct->auto_restart==KAL_FALSE)	
	{
		DISABLE_IBW4_AUTO_RESTART;
	}	
	else		
	{
		ENABLE_IBW4_AUTO_RESTART;
	}	
	if(ibw4_struct->int_en)
	{
	   ENABLE_IBW4_INT;
	}
	else
	{
	   DISABLE_IBW4_INT;
	}
		
	REG_IMGDMA_IBW4_WIDTH=ibw4_struct->width;
	REG_IMGDMA_IBW4_HEIGHT=ibw4_struct->height;
	START_IBW4;     
}   

void IMGDMA_IBR1Config(IMGDMA_IBR1_STRUCT *ibr1_struct)
{
   STOP_IBR1;
	if (ibr1_struct->data_type==IBR1_TYPE_RGB565)
	{
		SET_IMGDMA_IBR1_DATA_RGB565;
	}
	else if (ibr1_struct->data_type==IBR1_TYPE_RGB888)
	{
		SET_IMGDMA_IBR1_DATA_RGB888;
	}
	if (ibr1_struct->data_order==IBR1_ORDER_BGR888)
	{
		SET_IMGDMA_IBR1_DATA_ORDER_BGR888;
	}
	else if (ibr1_struct->data_order==IBR1_ORDER_RGB888)
	{
		SET_IMGDMA_IBR1_DATA_ORDER_RGB888;
	}
	if(ibr1_struct->int_en==KAL_FALSE)
	{
	   DISABLE_IMGDMA_IBR1_INT;
	}   
	else
	{
	   ENABLE_IMGDMA_IBR1_INT;   
	}   
	   
	REG_IMGDMA_IBR1_BASE_ADDR=ibr1_struct->base_addr;
	REG_IMGDMA_IBR1_PIXEL_NUMBER=ibr1_struct->pixel_number;
}

void IMGDMA_IBR2Config(IMGDMA_IBR2_STRUCT *ibr2_struct)
{
   STOP_IBR2;
		
	switch(ibr2_struct->pixel_engine)
	{	    
	   case PIXEL_ENGINE_CRZ:
	      SET_IMGDMA_IBR2_SRC_CRZ;	   
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_IMGDMA_IBR2_SRC_PRZ;	   
	   break;  	   	   
	   default:
	      ASSERT(0);
	   break;   
	}
	if(ibr2_struct->restart==KAL_FALSE)
	{
	   DISABLE_IMGDMA_IBR2_AUTO_RESTART;
	}   
	else
	{
      ENABLE_IMGDMA_IBR2_AUTO_RESTART;	      
   }   
   if(ibr2_struct->int_en==KAL_FALSE)   
   {
	   DISABLE_IMGDMA_IBR2_INT;
	}   
	else
	{
	   ENABLE_IMGDMA_IBR2_INT;   
	}   

	if(ibr2_struct->overlay_frame_mode==KAL_TRUE)
	{
		ENABLE_IMGDMA_IBR2_PALETTE;
		SET_IMGDMA_IBR2_PHOTO_FRAME_DEPTH(ibr2_struct->overlay_color_depth);
		REG_IMGDMA_IBR2_BASE_ADDR=ibr2_struct->overlay_frame_buffer_address;
		SET_IMGDMA_IBR2_SRC_KEY(ibr2_struct->overlay_frame_source_key);		

		if(((ibr2_struct->overlay_frame_target_height%ibr2_struct->overlay_frame_height)!=0)
		|| ((ibr2_struct->overlay_frame_target_width%ibr2_struct->overlay_frame_width)!=0) )
		   ASSERT(0);
		
		SET_IMGDMA_IBR2_V_RATIO((ibr2_struct->overlay_frame_target_height/ibr2_struct->overlay_frame_height));
		SET_IMGDMA_IBR2_H_RATIO((ibr2_struct->overlay_frame_target_width/ibr2_struct->overlay_frame_width));
		
		REG_IMGDMA_IBR2_WIDTH=ibr2_struct->overlay_frame_width;
		REG_IMGDMA_IBR2_HEIGHT=ibr2_struct->overlay_frame_height;
		START_IBR2;
	}
	else
	{
		DISABLE_IMGDMA_IBR2_PALETTE;
	}      
}

void IMGDMA_JPEGDMAConfig(IMGDMA_JPEG_DMA_STRUCT *jpeg_dma_struct)
{   		
   
   STOP_IMGDMA_JPEG;
	REG_IMGDMA_JPEG_CTRL=0;
		
	switch(jpeg_dma_struct->pixel_engine)
	{	    
	   case PIXEL_ENGINE_CRZ:
	      SET_IMGDMA_JPEG_SRC_CRZ;
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_IMGDMA_JPEG_SRC_PRZ;	   
	   break;  	   	   
	   default:
	      ASSERT(0);
	   break;   
	}	
	
	if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_YUV420)
	{
		SET_IMGDMA_JPEG_YUV420;
	}
	else if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_YUV422)
	{
		SET_IMGDMA_JPEG_YUV422;
	}
	else if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_GRAY)
	{
		SET_IMGDMA_JPEG_GRAY;
	}
	
	if (jpeg_dma_struct->restart==KAL_TRUE)
	{
	   ENABLE_IMGDMA_JPEG_AUTO_RESTART;
	}   
	else
	{
	   DISABLE_IMGDMA_JPEG_AUTO_RESTART;
	}   
	
	
	REG_IMGDMA_JPEG_BASE_ADDR=(kal_uint32)jpeg_dma_struct->jpeg_file_buffer_address;
	
	if (jpeg_dma_struct->jpeg_yuv_mode==JPEG_FORMAT_YUV420)
      REG_IMGDMA_JPEG_FIFO_LENGTH=JPEG_ENCODER_IDMA_LINE_BUFFER_NUMBER>>1;
   else
      REG_IMGDMA_JPEG_FIFO_LENGTH=JPEG_ENCODER_IDMA_LINE_BUFFER_NUMBER;
          
	REG_IMGDMA_JPEG_WIDTH=jpeg_dma_struct->target_width-1;
	REG_IMGDMA_JPEG_HEIGHT=jpeg_dma_struct->target_height-1;
	START_IMGDMA_JPEG;      	
}

void IMGDMA_VIDEOENCODE_DMAConfig(IMGDMA_VIDEO_ENCODE_STRUCT *video_encode_dma_struct)
{   	
   STOP_IMGDMA_VIDEO_ENCODE;
   REG_IMGDMA_VIDEO_ENCODE_CTRL=0;
   
	switch(video_encode_dma_struct->wdma_pixel_engine)
	{	    
	   case PIXEL_ENGINE_CRZ:
	      SET_VIDEO_ENCODE_SRC_CRZ;
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_VIDEO_ENCODE_SRC_PRZ;	   
	   break;  	   	   
	   default:
	      ASSERT(0);
	   break;   
	}	
	switch(video_encode_dma_struct->rdma_destination_engine)
	{	    
	   case PIXEL_ENGINE_DRZ:
	      SET_VIDEO_ENCODE_R_DEST_DRZ;
	   break;  	   
	   case PIXEL_ENGINE_PRZ:
	      SET_VIDEO_ENCODE_R_DEST_PRZ;	   
	   break;  	   	   
	   default:	
	   break;   
	}
	if(video_encode_dma_struct->restart==KAL_TRUE)	
	{
	   ENABLE_VIDEO_ENCODE_AUTO_RESTART;
	}
	else
	{
	   DISABLE_VIDEO_ENCODE_AUTO_RESTART;
	}   
	if(video_encode_dma_struct->wrtie_done_int==KAL_TRUE)	
	{
	   ENABLE_VIDEO_ENCODE_W_INT;
   }   
	else
	{
	   DISABLE_VIDEO_ENCODE_W_INT
	}   
	if(video_encode_dma_struct->read_done_int==KAL_TRUE)	
	{
	   ENABLE_VIDEO_ENCODE_R_INT;
   }   
	else
	{
	   DISABLE_VIDEO_ENCODE_R_INT;
	}
	if(video_encode_dma_struct->w_trigger_r==KAL_TRUE)	
	{
	   ENABLE_VIDEO_ENCODE_W_TRIGGER_R;	   
	}
	else
	{
	   DISABLE_VIDEO_ENCODE_W_TRIGGER_R;
	}      
	
		
	REG_IMGDMA_VIDEO_ENCODE_Y_BASE_ADDR1=(kal_uint32) video_encode_dma_struct->y_base_addr1;
	REG_IMGDMA_VIDEO_ENCODE_U_BASE_ADDR1=(kal_uint32) video_encode_dma_struct->u_base_addr1;
	REG_IMGDMA_VIDEO_ENCODE_V_BASE_ADDR1=(kal_uint32) video_encode_dma_struct->v_base_addr1;
	REG_IMGDMA_VIDEO_ENCODE_Y_BASE_ADDR2=(kal_uint32) video_encode_dma_struct->y_base_addr2;
	REG_IMGDMA_VIDEO_ENCODE_U_BASE_ADDR2=(kal_uint32) video_encode_dma_struct->u_base_addr2;
	REG_IMGDMA_VIDEO_ENCODE_V_BASE_ADDR2=(kal_uint32) video_encode_dma_struct->v_base_addr2;
	REG_IMGDMA_VIDEO_ENCODE_WIDTH=video_encode_dma_struct->encode_width;
	REG_IMGDMA_VIDEO_ENCODE_HEIGHT=video_encode_dma_struct->encode_height;
	START_IMGDMA_VIDEO_ENCODE;   
}   

void IMGDMA_VIDEODECODE_DMAConfig(IMGDMA_VIDEO_DECODE_STRUCT *video_decode_dma_struct)
{   
   if(video_decode_dma_struct->decode_done_int==KAL_TRUE)
   {
      ENABLE_VIDEO_DECODE_INT;
   }
   else
   {
 	   DISABLE_VIDEO_DECODE_INT;
 	}   
	REG_IMGDMA_VIDEO_DECODE_WIDTH=video_decode_dma_struct->width;
	REG_IMGDMA_VIDEO_DECODE_HEIGHT=video_decode_dma_struct->height;     
}   

void IMGDMA_IBW2Config(IMGDMA_IBW2_STRUCT *ibw2_struct)
{
   STOP_IBW2;
   
	REG_IMGDMA_IBW2_BASE_ADDR1=ibw2_struct->frame1_base_addr;
	REG_IMGDMA_IBW2_BASE_ADDR2=ibw2_struct->frame2_base_addr;
	
	REG_IMGDMA_IBW2_WIDTH=ibw2_struct->width-1;
	REG_IMGDMA_IBW2_HEIGHT=ibw2_struct->height-1;
   
   if(ibw2_struct->pitch==KAL_TRUE)
   {
      REG_IMGDMA_IBW2_DEST_PITCH1=ibw2_struct->pitch1_bytes;
		REG_IMGDMA_IBW2_DEST_PITCH2=ibw2_struct->pitch2_bytes;
	   ENABLE_IBW2_DEST_PITCH;
   }
   else
   {
      DISABLE_IBW2_DEST_PITCH;
   }   
        
	if (ibw2_struct->dest_color_mode==IMGDMA_IBW_OUTPUT_RGB565)
	{
		SET_IBW2_OUTPUT_RGB565;
	}
	else if (ibw2_struct->dest_color_mode==IMGDMA_IBW_OUTPUT_RGB888)
	{
		SET_IBW2_OUTPUT_RGB888;
	}
	if (ibw2_struct->lcd_trigger==KAL_TRUE)
	{
	   ENABLE_IBW2_TRIGGER_LCD;
	}   
	else
	{
	   DISABLE_IBW2_TRIGGER_LCD;
	}
	if (ibw2_struct->int_en==KAL_TRUE)   
	{
	   ENABLE_IBW2_INT;
	}
	else
	{
	   DISABLE_IBW2_INT;
	}     
	if (ibw2_struct->pan==KAL_TRUE)    
	{
	   ENABLE_IBW2_PAN;
	   REG_IMGDMA_IBW2_CLIP_LEFT_RIGHT=(ibw2_struct->clip_left<<16)|ibw2_struct->clip_right;
		REG_IMGDMA_IBW2_CLIP_TOP_BUTTOM=(ibw2_struct->clip_top<<16)|ibw2_struct->clip_bottom;
	}
	else
	{   
	   DISABLE_IBW2_PAN;
	}   
	if (ibw2_struct->direct_couple==KAL_TRUE)    
   {
	   ENABLE_IBW2_DC;
	}
	else
	{
	   DISABLE_IBW2_DC;
	}      
	if (ibw2_struct->restart==KAL_TRUE)    
	{
	   ENABLE_IBW2_AUTO_RESTART;
	}   	
	else
	{
	   DISABLE_IBW2_AUTO_RESTART;
	}   
	
	switch(ibw2_struct->pixel_engine)
	{
	   case PIXEL_ENGINE_IPP1:	      
	      SET_IBW2_PIXEL_SRC_IPP1;
	   break;   
	   case PIXEL_ENGINE_IPP2:	      
	      SET_IBW2_PIXEL_SRC_IPP2;
	   break;   
	   case PIXEL_ENGINE_PRZ:	      
	      SET_IBW2_PIXEL_SRC_PRZ;
	   break;   
	   case PIXEL_ENGINE_CRZ:	      
	      SET_IBW2_PIXEL_SRC_CRZ;
	   break;   
	}   	
	
	ibw2_cb=ibw2_struct->cb;		
	if (ibw2_struct->enable_IBW2==KAL_TRUE)    
	{
	   START_IBW2;
	}   
}   


#endif	/* MT6228, MT6229 MT6230*/


⌨️ 快捷键说明

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