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

📄 isp_engmode.c

📁 最新MTK手机软件源码
💻 C
📖 第 1 页 / 共 5 页
字号:
/*****************************************************************************
*  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:
 * ---------
 *   isp_engmode.c
 *
 * Project:
 * --------
 *   MT6219,MT6226,MT6226M,MT6227,MT6228,MT6229
 *
 * Description:
 * ------------
 *   This file is intends for ISP eng mode driver.
 *
 * 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!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
 *============================================================================
 ****************************************************************************/
#include "drv_comm.h"
#include "stdio.h"
#include "string.h"
#if (defined(MT6219)||defined(MT6228)||defined(MT6226)||defined(MT6226M)||defined(MT6227)||defined(MT6229)||defined(MT6230))
#include "isp_if.h"
#include "med_api.h"
#include "ae_awb.h"
#if (defined(ISP_SUPPORT))
#include "image_sensor.h"
#include "camera_para.h"
#endif

kal_uint8 wbOutFixFlag;
/*************************************************************************
* FUNCTION
*	get_isp_engmode_group_count
*
* DESCRIPTION
*	This function gets ISP group count in engineering mode.
*
* PARAMETERS
*	group_count_ptr : pointer of group count
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void get_isp_engmode_group_count(kal_int32* group_count_ptr)
{
#if (defined(ISP_SUPPORT))
	*group_count_ptr=TOTAL_GROUP_NUMBER;
#endif /* ISP_SUPPORT */
}

/*************************************************************************
* FUNCTION
*	get_isp_engmode_group_info
*
* DESCRIPTION
*	This function gets ISP group information in engineering mode.
*
* PARAMETERS
*	group_idx : index of ISP group
*	group_name_ptr : name of group
*	item_count_ptr : item count of group
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void get_isp_engmode_group_info(kal_uint16 group_idx, kal_uint8* group_name_ptr, kal_int32* item_count_ptr)
{
#if (defined(ISP_SUPPORT))
	switch(group_idx)
	{
		case OUTDOOR_WB:
			sprintf((char*)group_name_ptr, "OUTDOOR_WB");
			*item_count_ptr=4;
		break;
		case COMPONENT_OFFSET:
			sprintf((char*)group_name_ptr, "COMPONENT_OFFSET");
			*item_count_ptr=4;
		break;
		case INTERPOLATION:
			sprintf((char*)group_name_ptr, "INTERPOLATION");
			*item_count_ptr=4;
		break;
		case AWB:
			sprintf((char*)group_name_ptr, "AWB");
			*item_count_ptr=12;
		break;
		case COMPONENT_GAIN:
			sprintf((char*)group_name_ptr, "COMPONENT_GAIN");
			*item_count_ptr=3;
		break;
		case MANUEL_WB_1:
			sprintf((char*)group_name_ptr, "MANUEL_WB_1");
			*item_count_ptr=4;
		break;
		case MANUEL_WB_2:
			sprintf((char*)group_name_ptr, "MANUEL_WB_2");
			*item_count_ptr=4;
		break;
		case MANUEL_WB_3:
			sprintf((char*)group_name_ptr, "MANUEL_WB_3");			
			*item_count_ptr=4;
		break;
		case MANUEL_WB_4:
			sprintf((char*)group_name_ptr, "MANUEL_WB_4");			
			*item_count_ptr=4;
		break;
		case MANUEL_WB_5:
			sprintf((char*)group_name_ptr, "MANUEL_WB_5");			
			*item_count_ptr=4;
		break;
		case AE:
			sprintf((char*)group_name_ptr, "AE");			
			*item_count_ptr=1;
		break;
		case COLOR_MATRIX:
			sprintf((char*)group_name_ptr, "COLOR_MATRIX");			
			*item_count_ptr=9;
		break;
		case EDGE:
			sprintf((char*)group_name_ptr, "EDGE");			
			*item_count_ptr=14;
		break;
		case COLOR_SUPPRESSION:
			sprintf((char*)group_name_ptr, "COLOR_SUPPRESSION");			
			*item_count_ptr=1;
		break;
		case GAMMA_SELECT:
			sprintf((char*)group_name_ptr, "GAMMA_SELECT");			
			*item_count_ptr=1;
		break;
		case GAMMA_TUNING:
			sprintf((char*)group_name_ptr, "GAMMA_TUNING");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE1:
			sprintf((char*)group_name_ptr, "GAMMA1_BALANCE");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE2:
			sprintf((char*)group_name_ptr, "GAMMA2_WEAK");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE3:
			sprintf((char*)group_name_ptr, "GAMMA3_ENHAN_MID");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE4:
			sprintf((char*)group_name_ptr, "GAMMA4_STD_045");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE5:
			sprintf((char*)group_name_ptr, "GAMMA5_SUP_045_LL");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE6:
			sprintf((char*)group_name_ptr, "GAMMA6_SUP_06_LL");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE7:
			sprintf((char*)group_name_ptr, "GAMMA7_ENHAN_LMID");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE8:
			sprintf((char*)group_name_ptr, "GAMMA8_STD_06");			
			*item_count_ptr=11;
		break;
		case GAMMA_PREDEFINE9:
			sprintf((char*)group_name_ptr, "GAMMA9_STD_10");			
			*item_count_ptr=11;
		break;
		case CONTRAST:
			sprintf((char*)group_name_ptr, "CONTRAST");			
			*item_count_ptr=1;
		break;
		case BRIGHTNESS:
			sprintf((char*)group_name_ptr, "BRIGHTNESS");			
			*item_count_ptr=1;
		break;
		case SATURATION:
			sprintf((char*)group_name_ptr, "SATURATION");			
			*item_count_ptr=2;
		break;
	}
#endif /* ISP_SUPPORT */
}

/*************************************************************************
* FUNCTION
*	get_isp_engmode_item_info
*
* DESCRIPTION
*	This function gets ISP item information in engineering mode.
*
* PARAMETERS
*	group_idx : index of ISP group
*	item_idx : index of item
*	info_ptr : information of item
*
* RETURNS
*	None
*
* GLOBALS AFFECTED
*
*************************************************************************/
void get_isp_engmode_item_info(kal_uint16 group_idx, kal_uint16 item_idx, isp_engmode_item_info_struct* info_ptr)
{
#if (defined(ISP_SUPPORT))
	wbOutFixFlag = camera_oper_data.outdoor_fixWB_enable;
	switch(group_idx)
	{
		case OUTDOOR_WB:
			camera_oper_data.outdoor_fixWB_enable = 0;
			switch(item_idx)
			{
				case 0:
					sprintf((char*)info_ptr->item_name_ptr, "R");			
					info_ptr->item_value=(REG_ISP_RGB_GAIN_CTRL2&0x01FF0000)>>16;
					info_ptr->min=0;
					info_ptr->max=511;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 1:
					sprintf((char*)info_ptr->item_name_ptr, "Gr");
					info_ptr->item_value=(REG_ISP_RGB_GAIN_CTRL2&0x000001FF);
					info_ptr->min=0;
					info_ptr->max=511;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 2:
					sprintf((char*)info_ptr->item_name_ptr, "B");
					info_ptr->item_value=(REG_ISP_RGB_GAIN_CTRL1&0x01FF0000)>>16;
					info_ptr->min=0;
					info_ptr->max=511;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 3:
					sprintf((char*)info_ptr->item_name_ptr, "Gb");
					info_ptr->item_value=REG_ISP_RGB_GAIN_CTRL2&0x000001FF;
					info_ptr->min=0;
					info_ptr->max=511;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
			}
		break;
		case COMPONENT_OFFSET:
			switch(item_idx)
			{
				case 0:
					sprintf((char*)info_ptr->item_name_ptr, "R");			
					info_ptr->item_value=(camera_para.ISP.reg[5]&0xFF000000)>>24;
					info_ptr->min=0;
					info_ptr->max=255;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 1:
					sprintf((char*)info_ptr->item_name_ptr, "Gr");
					info_ptr->item_value=(camera_para.ISP.reg[5]&0x00FF0000)>>16;
					info_ptr->min=0;
					info_ptr->max=255;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 2:
					sprintf((char*)info_ptr->item_name_ptr, "B");
					info_ptr->item_value=(camera_para.ISP.reg[5]&0x0000FF00)>>8;
					info_ptr->min=0;
					info_ptr->max=255;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 3:
					sprintf((char*)info_ptr->item_name_ptr, "Gb");
					info_ptr->item_value=camera_para.ISP.reg[5]&0x000000FF;
					info_ptr->min=0;
					info_ptr->max=255;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
			}
		break;
		case INTERPOLATION:
			switch(item_idx)
			{
				case 0:
					sprintf((char*)info_ptr->item_name_ptr, "DISLJ");
					info_ptr->item_value=camera_para.ISP.reg[28]&REG_CPS1_LINE_JUDGE_ENABLE_BIT;
					info_ptr->min=0;
					info_ptr->max=1;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 1:
					sprintf((char*)info_ptr->item_name_ptr, "THRE_V");
					info_ptr->item_value=(camera_para.ISP.reg[29]&REG_INTERPOLATION1_THRESHOLD_V_MASK)>>24;
					info_ptr->min=0;
					info_ptr->max=REG_INTERPOLATION1_THRESHOLD_V_MASK>>24;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 2:
					sprintf((char*)info_ptr->item_name_ptr, "THRE_SM");
					info_ptr->item_value=(camera_para.ISP.reg[29]&REG_INTERPOLATION1_THRESHOLD_SM_MASK)>>16;
					info_ptr->min=0;
					info_ptr->max=REG_INTERPOLATION1_THRESHOLD_SM_MASK>>16;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;
				break;
				case 3:
					sprintf((char*)info_ptr->item_name_ptr, "THRE_DHV");
					info_ptr->item_value=(camera_para.ISP.reg[29]&REG_INTERPOLATION1_THRESHOLD_DHV_MASK)>>8;
					info_ptr->min=0;
					info_ptr->max=REG_INTERPOLATION1_THRESHOLD_DHV_MASK>>8;
					info_ptr->is_read_only=KAL_FALSE;
					info_ptr->is_need_restart=KAL_FALSE;

⌨️ 快捷键说明

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