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

📄 ae_awb.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
*  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:
 * ---------
 *   ae_awb.c
 *
 * Project:
 * --------
 *   MT6219,MT6226,MT6227,MT6228,MT6229
 *
 * Description:
 * ------------
 *   Auto Exposure and Auto White Balance Algorithm
 *
 * Author:
 * -------
 * -------
 *
 *============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *------------------------------------------------------------------------------
 * 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!
 * 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!
 * 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(MT6219)||defined(MT6226)||defined(MT6226M)||defined(MT6227)||defined(MT6228)||defined(MT6229)||defined(MT6230))&&defined(ISP_SUPPORT))
#include "drv_comm.h"
#include "IntrCtrl.h"
#include "ae_awb.h"
#include "af.h"
#include "isp_if.h"
#include "image_sensor.h"
#include "sccb.h"
#include "camera_para.h"
#include "med_api.h"
#include "gpio_sw.h"
#if (defined(WEBCAM_SUPPORT))
#include "usbvideo_cam_if.h"
#endif

#if (!defined(MT6219))
#include "isp_flashlight.h"
#endif

kal_bool ae_enable_flag,awb_enable_flag;
kal_bool ae_bypass_enable_flag = KAL_FALSE;		// AE byapss mode: bypass ae cal
kal_uint8 AE_BYPASS_INDEX = 0;
camera_operation_para_struct camera_oper_data;
kal_uint8	ae_awb_cal_complete=1;

#if (!defined(MT6219))
dsc_operation_struct dsc_status;
/* SHUTTER APERTURE PRIORITY ARRAY */
kal_bool shutter_pri_60hz_info[TV_NO];
kal_bool shutter_pri_50hz_info[TV_NO];
kal_bool	aperture_pri_info[AV_NO];
kal_bool	iso_pri_info[ISO_NO];
kal_uint16 iso_gain_info[ISO_NO];
const tv_av_info_struct	tv_av_info={
	/* Shutter Priority Info */
{	{50000,20},{40000,25},{33000,30},{28000,35},{25000,40},{22000,45},{20000,50},{18000,55},
	{16000,60},{14000,70},{12000,80},{11000,90},{10000,100},{9000,110},{8300,120},{8000,130},
	{7000,140},{6700,150},{6000,170},{5000,200},{4200,240},{4000,250},{3300,300},{3000,330},
	{2500,400},{2000,500},{1700,600},{1000,1000},{833,1200},{800,1250},{710,1400},{630,1600},
	{570,1750},{500,2000},{400,2500},{310,3200},{250,4000},{200,5000},{160,6400},{130,8000},
	{100,10000},{83,12000},{71,14000},{63,16000},{56,18000},{50,20000}},
	/* Aperture Priority Info */
{	{20,20},{28,28},{40,40},{56,56},{80,80},{110,110},{160,160}}};
#endif

/**************   AE DECLARATION    ****************************************/
kal_int8		ev_level=0;
kal_uint8	expo_level=110,high_expo_level,low_expo_level;
kal_uint8	totalevstep=9;
kal_uint8	light_band;		
kal_uint32	lum[9],eShutter=300;
kal_uint8	isp_pregain=0x40; 
kal_uint16	sensor_pregain=0x40; 
kal_uint8	ae_range=8;
kal_uint32	histogram[5],Rhist[5],Ghist[5],Bhist[5];
kal_uint8	histogram_b1=3,histogram_b2=7,histogram_b3=11,histogram_b4=248,histogram_b5=255;

#if (!defined(MT6219))
const exposure_lut_struct *AE_LUT;
const kal_uint8 *IRIS_LUT;
ae_lut_info_struct lut_info={CAM_BANDING_60HZ,KAL_FALSE,CAM_AUTO_DSC};
kal_uint8 iris_no;
#endif

#if (defined(MT6228)||defined(MT6229)||defined(MT6230))
#if (defined(__MTK_TARGET__))
#pragma arm section rwdata = "INTERNRW1", zidata = "INTERNZI1"
#endif
kal_uint32	ae_result[7][9];	/* recommand to set in SRAM */
#if (defined(__MTK_TARGET__))
#pragma arm section rwdata , zidata
#endif
#endif
/**************   AWB DECLARATION    ***************************************/
#if (defined(MT6219))
kal_uint16	AWB_Rgain=128,AWB_Ggain=128,AWB_Bgain=128;
kal_uint16	tmp_Rgain=128,tmp_Ggain=128,tmp_Bgain=128;
#else
kal_uint16	AWB_Rgain=128,AWB_GRgain=128,AWB_Bgain=128,AWB_GBgain=128;
kal_uint16	tmp_Rgain=128,tmp_GRgain=128,tmp_Bgain=128,tmp_GBgain=128;
kal_uint16	Manual_AWB_Rgain=128,Manual_AWB_GRgain=128,Manual_AWB_Bgain=128,Manual_AWB_GBgain=128;
#endif
kal_uint16	Rgain_max=128,Ggain_max=128,Bgain_max=128;
kal_uint16	Rgain_min=128,Ggain_min=128,Bgain_min=128;
kal_uint32	Acc_R,Acc_G,Acc_B;
kal_uint32	Acc_Cnt;
kal_uint8	fstAwbInitFlag=0;
kal_bool	awbFastFlag;

/****************************************************************************
 *          AE / AWB  Main
 ****************************************************************************/
void init_ae_awb(void)
{
	/* AE initial */
	DISABLE_ATF_EDGE;
	DISABLE_ATF_AREA_ALL;
	DISABLE_AE_AREA_ALL;			
	ENABLE_AE_COUNT;				
	SET_AE_GM_SEL(0);				
	SET_AE_PATH_SEL_HIGH;		
	DISABLE_AE_ONLY_G_COLOR;	

	ae_enable_flag=ISP_ON;
	ae_select_band(CAM_BANDING_60HZ);
#if (!defined(MT6219))	
	AE_LUT=get_ae_lut(lut_info);
#endif
	/* AWB initial */
	ENABLE_AWB_AREA_ALL;		
	ENABLE_OPD_COUNTER;
	DISABLE_BYPASS_INTERPOLATION_MOD;	
	SEL_COLOR_SUP_MODE(4);		
	SET_OPD_MOD_Y_LIMIT(4);		

	awb_enable_flag=ISP_ON;
	awb_config(640,480);
	awb_gain_max_min();

⌨️ 快捷键说明

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