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

📄 img_comm.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * 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!!
 *============================================================================
 ****************************************************************************/
#if (defined(MT6217) || defined(MT6218B) || defined(MT6219) || defined(MT6226) || defined(MT6226M) || defined(MT6227) || defined(MT6228) || defined(MT6229)||defined(MT6230))
#include "reg_base.h"
#include "drv_comm.h"
#include "jpeg.h"

#if (defined(EXIF_SUPPORT))
#include "exif.h"
#endif 

#include "visual_comm.h"
#include "visualhisr.h"
#include "imgproc.h"
#include "resizer.h"
#include "isp_if.h"
#include "image_effect.h"
#include "lcd_if.h"
#include "2d_engine.h"
#include "fsal.h"
#include "mp4_parser.h"
#include "l1audio.h"
#include "rtc_sw.h"
#include "video_file_creator.h"
#include "med_status.h"
#include "video_dec_glb.h"
#include "img_comm.h"
#include "imgdma.h"
#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#include "tv_out.h"
#include "upll_ctrl.h"
#endif /* (defined(MT6228) || defined(MT6229)||defined(MT6230) ) */ 
#if (defined(WEBCAM_SUPPORT))
#include "usbvideo_cam_if.h"
#endif 
#if (defined(ISP_SUPPORT))
#include "ae_awb.h"
#endif
kal_bool img_dma_ibw2_int = KAL_FALSE;
kal_uint32 mpeg4_video_buffer[2];
kal_uint8 current_video_buffer_count = 0;
#if (!defined(MT6217) && !defined(MT6218B))
extern camera_capture_barcode_struct isp_capture_barcode_data;
#endif
#if (defined(MT6228) || defined(MT6229)||defined(MT6230))
MMDI_SCENERIO_ID current_image_data_path_owner;
extern camera_preview_data_path_struct ipp_preview_data;
camera_preview_data_path_struct camera_preview_config_data;
camera_capture_jpeg_data_path_struct camera_capture_jpeg_config_data;
camera_capture_barcode_data_path_struct camera_capture_barcode_config_data;
camera_capture_mem_data_path_struct camera_capture_mem_config_data;
video_encode_data_path_struct video_encode_config_data;
volatile kal_uint8 current_captured_file_number;

extern kal_uint8 L1SM_GetHandle(void);
extern void L1SM_SleepEnable(kal_uint8 handle);
extern void L1SM_SleepDisable(kal_uint8 handle);
kal_uint8 image_data_path_sleep_mode_handler = 0xFF;

kal_uint8 video_decode_lcd_id;
kal_bool video_display;

g2d_buffer_struct tv_rotate_dest_buffer;
g2d_bitblt_struct tv_buffer_bitblt;

g2d_buffer_struct g2d_tv_output_dest_buff;
g2d_buffer_struct g2d_tv_output_src_buff;
g2d_bitblt_struct g2d_tv_output_bitblt;
kal_uint8 current_g2d_tv_output_bitblt_buffer;
#endif /* (defined(MT6228) || defined(MT6229)||defined(MT6230) ) */ 
/*****************************************************************************
 * FUNCTION
 *  image_data_path_init
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void image_data_path_init(void)
{
#if (defined(MT6219) || defined(MT6226) || defined(MT6226M) || defined(MT6227))
    IMGDMA_Init();
    RESZ_Init();
    IMGPROC_Init();
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
    init_image_dma();
    IMGPROC_Init();
#endif 
}   /* init_image_data_path() */
/*****************************************************************************
 * FUNCTION
 *  jpeg_decode_cb
 * DESCRIPTION
 *  This function is intermediate callback function for MT6219 image dma
 *  while decode a jpeg file
 * CALLS
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void jpeg_decode_cb(void)
{
       visual_active_hisr(VISUAL_JPEG_DEC_CB_HISR_ID);
}   /* jpeg_decode_cb() */

#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
extern video_encode_data_path_struct ipp_video_encode_data;
#endif
/*****************************************************************************
 * FUNCTION
 *  isp_ibw2_cb
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void isp_ibw2_cb(void)
{
     img_dma_ibw2_int = KAL_TRUE;
#if (defined(ISP_SUPPORT))    
#if (defined(MT6226)||defined(MT6226M)||defined(MT6227))
	if ((isp_digital_zoom_flag==KAL_TRUE)&&(isp_operation_state==ISP_MPEG4_ENCODE_STATE)&&
		 (isp_enter_exit_process_flag==KAL_FALSE))
	{
		img_dma_ibw2_int=KAL_FALSE;
#if (defined(YUV_SENSOR_SUPPORT))
		SET_YUV_TG_GRAB_PIXEL(isp_grab_start_x,isp_grab_width);
		SET_YUV_TG_GRAB_LINE(isp_grab_start_y,isp_grab_height);
#else		
		SET_TG_GRAB_PIXEL(isp_grab_start_x,isp_grab_width);
		SET_TG_GRAB_LINE(isp_grab_start_y,isp_grab_height);
#endif		
		ae_config(isp_grab_width,isp_grab_height);

		ENABLE_VERTICAL_SUB_SAMPLE;
		ENABLE_HORIZONTAL_SUB_SAMPLE;
		SET_HSUB_SRC_SIZE(isp_grab_width);
		SET_VSUB_SRC_SIZE(isp_grab_height);
		SET_HSUB_DST_SIZE(mpeg4_encode_data.image_source_width);
		SET_VSUB_DST_SIZE(mpeg4_encode_data.image_source_height);

		RESZ_Stop(SCENARIO_MPEG_ENCODE_ID);
		stop_image_dma(SCENARIO_MPEG_ENCODE_ID);
		IMGDMA_Close(SCENARIO_MPEG_ENCODE_ID);
		DISABLE_IBW2_INT;
		video_enc_reset_buffer_counter();
		config_image_dma(SCENARIO_MPEG_ENCODE_ID,mpeg4_encode_data.image_target_width,mpeg4_encode_data.image_target_height);
		RESZ_SetSize(mpeg4_encode_data.image_source_width,mpeg4_encode_data.image_source_height,
						 mpeg4_encode_data.mpeg4_image_width,mpeg4_encode_data.mpeg4_image_height,
						 SCENARIO_MPEG_ENCODE_ID);
		RESZ_Start(SCENARIO_MPEG_ENCODE_ID);
		isp_digital_zoom_flag=KAL_FALSE;
		ENABLE_CMOS_SESNOR;
		DISABLE_CAMERA_IDLE_INT;
		ENABLE_VIEW_FINDER_MODE;
		if(ae_count==0)
		    ae_count++;
		hist_idx=0;
	}
#elif (defined(MT6228)||defined(MT6229)||defined(MT6230))
	if ((isp_digital_zoom_flag==KAL_TRUE)&&(isp_operation_state==ISP_MPEG4_ENCODE_STATE)&&
		 (isp_enter_exit_process_flag==KAL_FALSE))
	{
#if (defined(YUV_SENSOR_SUPPORT))
    		SET_YUV_TG_GRAB_PIXEL(isp_grab_start_x,isp_grab_width);
    		SET_YUV_TG_GRAB_LINE(isp_grab_start_y,isp_grab_height);
#else			    
			SET_TG_GRAB_PIXEL(isp_grab_start_x,isp_grab_width);
			SET_TG_GRAB_LINE(isp_grab_start_y,isp_grab_height);
#endif			
			ae_config(isp_grab_width,isp_grab_height);
			ENABLE_VERTICAL_SUB_SAMPLE;
			ENABLE_HORIZONTAL_SUB_SAMPLE;
			SET_HSUB_SRC_SIZE(isp_grab_width);
			SET_VSUB_SRC_SIZE(isp_grab_height);
			SET_HSUB_DST_SIZE(ipp_video_encode_data.image_src_width);
			SET_VSUB_DST_SIZE(ipp_video_encode_data.image_src_height);
			reconfig_video_encode_data_path(SCENARIO_MPEG_ENCODE_ID,&ipp_video_encode_data);
			video_enc_reset_buffer_counter();
			DISABLE_IBW2_INT;
			isp_digital_zoom_flag=KAL_FALSE;
			ENABLE_CMOS_SESNOR;
			DISABLE_CAMERA_IDLE_INT;
			ENABLE_VIEW_FINDER_MODE;
			if(ae_count==0)
			    ae_count++;
			hist_idx=0;
	}
#else
    visual_active_hisr(VISUAL_CAMERA_HISR_ID);
#endif
#endif
}

#if (defined(MT6228) || defined(MT6229)||defined(MT6230))
/*****************************************************************************
 * FUNCTION
 *  preview_vid_enc_w_cb
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void preview_vid_enc_w_cb(void)
{
    if (tv_output_owner == TV_OUT_OWNER_VID_DMA_W)
    {
        if (tv_out_current_fb == 0)
            tv_fb_update(TV_OUT_OWNER_VID_DMA_W, camera_preview_config_data.tv_output_buffer1_address);
        else
            tv_fb_update(TV_OUT_OWNER_VID_DMA_W, camera_preview_config_data.tv_output_buffer2_address);
        tv_out_current_fb++;
        tv_out_current_fb &= 0x01;
    }
}   /* preview_vid_enc_w_cb() */
/*****************************************************************************
 * FUNCTION
 *  preview_tv_buffer_rotate_cb
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void preview_tv_buffer_rotate_cb(void)
{
    if (current_g2d_tv_output_bitblt_buffer == 0)
    {
        tv_fb_update(TV_OUT_OWNER_LCD, camera_preview_config_data.tv_rotate_buffer1_address);
        g2d_tv_output_dest_buff.base_address = camera_preview_config_data.tv_rotate_buffer2_address;
        current_g2d_tv_output_bitblt_buffer = 1;
    }
    else if (current_g2d_tv_output_bitblt_buffer == 1)
    {
        tv_fb_update(TV_OUT_OWNER_LCD, camera_preview_config_data.tv_rotate_buffer2_address);
        g2d_tv_output_dest_buff.base_address = camera_preview_config_data.tv_rotate_buffer1_address;
        current_g2d_tv_output_bitblt_buffer = 0;
    }
    g2d_set_dest_buffer(G2D_OWNER_LCD, &g2d_tv_output_dest_buff);
}   /* preview_tv_buffer_rotate_cb() */
/*****************************************************************************
 * FUNCTION
 *  mpeg4_vid_enc_w_cb
 * DESCRIPTION
 *  
 * PARAMETERS
 *  void
 * RETURNS
 *  void
 *****************************************************************************/
void mpeg4_vid_enc_w_cb(void)
{

⌨️ 快捷键说明

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