📄 img_comm.c
字号:
* 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 + -