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

📄 ext_camera.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 4 页
字号:
/*****************************************************************************
*  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 + -