📄 ext_camera.c
字号:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* ext_camera.c
*
* Project:
* --------
* Maui_Software
*
* Description:
* ------------
* This file implements external camera module interface function (API)
*
* Author:
* -------
* PC Huang
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* $Revision: 1.46 $
* $Modtime: Aug 15 2005 09:17:34 $
* $Log: //mtkvs01/vmdata/Maui_sw/archives/mcu/media/camera/src/ext_camera.c-arc $
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
*
*
* removed!
* removed!
* Add ext_camera_para_struct member continue_capture for keeping continue shot state
*
* removed!
* removed!
* Modify clock control procedure when power off
*
* removed!
* removed!
* Check system init state before get/free NFI bus
*
* removed!
* removed!
*
*
* Rev 1.46 Aug 15 2005 09:23:28 mtk00548
* Add the codes to get and free semaphore of NFI bus before and after access the external camera backend.
* Resolution for 12322: [Ext Camera][Bug fix] Fix the problem of NAND flash and External camera bus conflicts issue.
*
* Rev 1.45 May 17 2005 00:58:10 BM_Trunk
* Karlos:
* add copyright and disclaimer statement
*
* Rev 1.44 Apr 11 2005 10:57:36 mtk00747
* Add lcd update in ext_camera_video_clip()
*
* Rev 1.43 Mar 15 2005 16:51:16 mtk00548
* 1. Modify the LCD update flow between baseband chip and external camera module.
* 2. Modify the sticker capture function.
* Resolution for 10248: [Ext Camera][Modify] Modify the external camera mode2 sticker capture flow and LCM update flow
*
* Rev 1.42 Mar 14 2005 18:56:10 mtk00747
* Modify Sticker Capture
*
* Rev 1.41 Mar 04 2005 16:34:40 mtk00548
* Add LCM update request check during video clipping period.
* Resolution for 10079: [Ext Camera][Bug fix] Modify the video clip function to server lcd update during video clip period
*
* Rev 1.40 Feb 25 2005 13:31:46 mtk00747
* modify ext_camera_power_on()
*
* Rev 1.39 Feb 21 2005 18:43:58 mtk00747
* Add zoom_factor setting to ext_camera_preview()
*
* Rev 1.38 Feb 04 2005 17:44:14 mtk00548
* Add code to call exit_cam_module_preview function.
* Resolution for 9772: [Ext Camera][Bug fix] The camera preview will be half when we switch from mainLCD to subLCD with 4X digital zoom
*
* Rev 1.37 Feb 01 2005 13:59:26 mtk00747
* add compiler option for ext_camera_set_osd_buffer() and ext_camera_update_backend_lcd_buffer()
*
* Rev 1.36 Jan 31 2005 17:37:10 mtk00747
* Add update lcd mechanism to exit_ext_camera_preview() for preventing MMI hang during this critical period.
*
* Rev 1.35 Jan 31 2005 13:50:46 mtk00747
* Merge new feature for CAMERA_MODULE_WITH_LCD after AIT700 integration
* 1. add ext_camera_set_osd_buffer()
* 2. add ext_camera_update_backend_lcd_buffer()
* 3. add src_key_color
* 4. add force_update
* 5. modify cam_module_write_lcdfb() input data type
*
* Rev 1.34 Jan 18 2005 00:48:52 BM
* append new line in W05.04
*
* Rev 1.33 Nov 29 2004 18:28:56 mtk00548
* Initialize some parameters.
*
* Rev 1.32 Nov 29 2004 18:25:12 mtk00548
* Add one video_clip_mode declaration.
* Resolution for 8956: [ExtCam][Bug fix] Fix the bug of external cmaer module video clip function.
*
* Rev 1.31 Nov 29 2004 15:07:20 mtk00747
* modify ext_camera_ready_check()
*
* Rev 1.30 Nov 27 2004 17:56:38 mtk00747
* Add new design for camera backend with lcd panel
*
* Rev 1.29 Nov 22 2004 19:00:48 mtk00548
* Update frame buffer to LCM while external camera preview ready check even no image ready.
*
* Rev 1.28 Nov 19 2004 23:24:58 mtk00548
* 1. Modify external camera module engineering mode
* 2. Add one founction for getting frame rate of video clip function.
* Resolution for 7929: [Ext Camera] Add engineering mode for setting register/parameters of external camera module
* Resolution for 8481: [Ext Cam][Add Feature] Add Video clip, sticker capture and burst capture functions
*
* Rev 1.27 Nov 12 2004 21:20:52 mtk00548
* Modify external camera burst capture, video clip and sticker capture function.
* Resolution for 8481: [Ext Cam][Add Feature] Add Video clip, sticker capture and burst capture functions
*
* Rev 1.26 Nov 03 2004 09:43:18 mtk00548
* Enable L1 enter sleep mode after exit external camera application.
* Resolution for 8558: [ExtCam][Modify] Modify external camera API to enable L1 enter sleep mode
*
* Rev 1.25 Oct 29 2004 18:33:12 mtk00548
* 1. Add video clip, sticker capture functions for external camera module.
* 2. Complete external camera engineering mode function
* Resolution for 7929: [Ext Camera] Add engineering mode for setting register/parameters of external camera module
* Resolution for 8481: [Ext Cam][Add Feature] Add Video clip, sticker capture and burst capture functions
*
* Rev 1.24 Sep 27 2004 18:43:54 mtk00548
* Add external camera module registers/parameters read/write function for engineering mode.
* Resolution for 7929: [Ext Camera] Add engineering mode for setting register/parameters of external camera module
*
* Rev 1.23 Sep 06 2004 11:01:12 mtk00548
* Modify the definition for number of camera effect for external camera module.
* Resolution for 7510: [MMI][Camera] Upgrate to V0.2
*
* Rev 1.22 Sep 02 2004 17:49:40 mtk00548
* Add codes to pass banding frequency parameter to external camera mdoule's driver.
*
* Rev 1.21 Jul 02 2004 19:46:48 mtk00548
* Add one item snapshot_number in ext_camera_para_struct for continuous shot application
*
* Rev 1.20 Jun 25 2004 19:20:34 mtk00548
* Add banding filter parameter mapping array declaration
* Resolution for 6014: [MODIFY][EXT CAMERA] Modify AIT103 driver codes
*
* Rev 1.19 Jun 25 2004 18:59:40 mtk00548
* Pass clam_shell_state to external camera module.
* Resolution for 6014: [MODIFY][EXT CAMERA] Modify AIT103 driver codes
*
* Rev 1.18 Jun 11 2004 19:15:32 mtk00548
* 1. Add preview rotate function for external camera module
* 2. Pass image buffer height for external camera preview function.
* Resolution for 6014: [MODIFY][EXT CAMERA] Modify AIT103 driver codes
*
* Rev 1.17 Jun 04 2004 21:39:26 mtk00548
* 1. Retrun error code for preview not ready case
* 2. Adjust the buffer pointer for preview case.
*
* Rev 1.16 May 28 2004 12:32:16 mtk00548
* Add some command and parameters mapping table for customization requirement.
*
* Rev 1.15 May 24 2004 16:43:56 mtk00548
* include cam_module.h file when CAMERA_MODULE is defined.
*
* Rev 1.14 May 21 2004 19:29:20 mtk00548
* Modify codes for external camera module customize.
*
* Rev 1.13 May 14 2004 21:01:10 mtk00548
* Remove LCD sleep mode switch codes in external camera module power off function.
*
* Rev 1.12 May 10 2004 18:56:34 mtk00548
* Add the error handling procedure of camera capture fail case.
* Resolution for 201: Fatal Error: msg_send_ext_queue() failed - L4
*
* Rev 1.11 May 07 2004 20:07:12 mtk00548
* Enable L1SM to enter sleep mode when external camera module exit preview mode.
*
* Rev 1.10 Apr 16 2004 17:27:36 mtk00548
* Reduce the polling times to speed the reset retry period if the external camera module reset procedure fail.
*
* Rev 1.9 Apr 14 2004 18:17:52 mtk00548
* Turn LCD interface power off when it is idle
* Resolution for 4897: [LCD][Modify] Turn off the clock of LCD interface module when LCD interface for power saving
*
* Rev 1.8 Apr 13 2004 18:15:48 mtk00548
* 1. Add delay for AIT102N reset status polling
* 2. Move parameter setting of AIT102N after preview command to make these setting work.
* Resolution for 44: MMI- Zoom in/ out are useless
* Resolution for 93: Camera- Preview cannot work after backlight is off
*
* Rev 1.7 Apr 12 2004 15:46:12 mtk00548
* 1. Change the include file from ait102n1.h to ait102n.h
* 2. Set LCD_CMD_COMPLETE_EVENT event at the frame boundary for unblock MMI.
* 3. Avoid get multiple sleep handler .
*
* Rev 1.6 Apr 09 2004 17:39:18 mtk00548
* Set the lcd operation state as standby state after capture a picture
*
* Rev 1.5 Apr 08 2004 13:39:52 mtk00548
* Change the polling procedure of external camera reset status.
* Resolution for 93: Camera- Preview cannot work after backlight is off
*
* Rev 1.4 Apr 06 2004 14:40:58 mtk00548
* Modify external camera preview frame buffer update function.
*
* Rev 1.3 Apr 02 2004 17:46:40 mtk00548
* Add module ID for frame buffer update while external camera preview frame ready.
*
* Rev 1.2 Mar 26 2004 19:25:52 mtk00548
* Modify the external camera code for new lcd interface.
*
* Rev 1.1 Mar 08 2004 15:46:46 mtk00548
* MOdify the code for removing compiler error for MT6205B platform.
*
* Rev 1.0 Mar 03 2004 21:29:04 admin
* Initial revision.
*
* Rev 1.3 Mar 02 2004 15:23:28 mtk00548
* Add exit_ext_camera_preview() function
*
* Rev 1.2 Mar 02 2004 11:56:24 mtk00548
* Modify the definition of external camera state machine
*
* Rev 1.1 Mar 02 2004 11:47:04 mtk00548
* Remove the compile errors
*
* Rev 1.0 Mar 02 2004 11:14:20 admin
* Initial revision.
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#include "kal_release.h"
#include "stack_common.h"
#include "stack_msgs.h"
#include "app_ltlcom.h"
#include "data_buff_pool.h"
#include "stack_config.h"
#include "syscomp_config.h"
#include "app_buff_alloc.h"
#include "lcd_sw.h"
#include "lcd_hw.h"
#include "lcd_sw_inc.h"
#include "lcd_sw_rnd.h"
#include "lcd_if.h"
#if (defined (CAMERA_MODULE))
#include "jpeg.h"
#include "cam_module.h"
#include "med_api.h"
#include "ext_camera.h"
extern kal_uint8 L1SM_GetHandle(void);
extern void L1SM_SleepEnable(kal_uint8 handle);
extern void L1SM_SleepDisable(kal_uint8 handle);
extern kal_uint32 SaveAndSetIRQMask(void);
extern void RestoreIRQMask(kal_uint32);
extern kal_eventgrpid lcd_event_id;
kal_uint8 ext_camera_lcd;
extern void get_NFI_bus(void);
extern void free_NFI_bus(void);
lcd_frame_update_struct ext_camera_preview_lcd_data;
#ifdef DUAL_LCD
extern lcd_frame_update_struct sub_lcd_fb_update_para;
#endif
#ifdef CAMERA_MODULE_WITH_LCD
lcd_frame_update_to_mem_struct ext_camera_lcd_menu_data;
ext_camera_osd_para_struct ext_camera_osd_buffer_data;
#endif
kal_uint8 ext_camera_state;
kal_uint8 camera_sleep_mode_handler=0xFF;
kal_uint8 burst_snapshot_number;
ext_camera_para_struct ext_camera_config_data;
ext_cam_module_func *ext_cam_func;
kal_bool engineering_mode_setting=KAL_FALSE;
kal_uint8 ext_cam_reg_setting[0x100];
kal_uint16 ext_cam_reg_value[0x100];
kal_bool video_clip_mode=KAL_FALSE;
#if (!defined(ISP_SUPPORT))
kal_uint8 cam_command_map[CAM_NO_OF_PARAM];
kal_uint8 cam_ev_param_map[CAM_NO_OF_EV];
kal_uint8 cam_zoom_param_map[CAM_NO_OF_ZOOM];
kal_uint8 cam_effect_param_map[CAM_NO_OF_EFFECT_ENC];
kal_uint8 cam_jpg_qty_param_map[CAM_NO_OF_JPG_QTY];
kal_uint8 cam_wb_param_map[CAM_NO_OF_WB];
kal_uint8 cam_banding_param_map[CAM_NO_OF_BANDING];
#endif
/*************************************************************************
* FUNCTION
* ext_camera_init
*
* DESCRIPTION
* This function init external camera module status.
*
* PARAMETERS
*
* RETURNS
* None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void ext_camera_init(void)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -