From d9927380ed7c8366f762049be9f3fee225860833 Mon Sep 17 00:00:00 2001
From: liyujie <2352380935@qq.com>
Date: Thu, 28 Aug 2025 12:04:16 +0000
Subject: [PATCH] [2/4]解决USB摄像头打开相机预览界面绿屏

---
 android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp_manage/isp_manage.c |   59 +++++++++++++++++++++++++++--------------------------------
 1 files changed, 27 insertions(+), 32 deletions(-)

diff --git a/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp_manage/isp_manage.c b/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp_manage/isp_manage.c
index 41d040e..b8b8449 100755
--- a/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp_manage/isp_manage.c
+++ b/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp_manage/isp_manage.c
@@ -23,7 +23,8 @@
 #include "isp_otp_golden.h"
 
 
-unsigned int isp_lib_log_param = 0;//0xffffffff;
+unsigned int isp_manage_lib_log_param = 0;//0xffffffff;
+unsigned int msc_update_sel;
 
 void isp_get_saved_regs(struct isp_lib_context *isp_gen)
 {
@@ -137,8 +138,7 @@
 	isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_frame_id = isp_gen->af_frame_cnt;
 	//rolloff_sensor_info.
 	isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_sensor_info = isp_gen->sensor_info;
-	//rolloff lsc_cfg.
-	isp_gen->rolloff_entity_ctx.rolloff_param->lsc_cfg = isp_gen->module_cfg.lens_cfg.lsc_cfg;
+	isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_ctrl = isp_gen->alsc_settings;
 }
 
 void __isp_rolloff_run(struct isp_lib_context *isp_gen)
@@ -149,22 +149,6 @@
 
 	isp_rolloff_cxt->ops->isp_rolloff_run(isp_rolloff_cxt->rolloff_entity,
 		&isp_rolloff_cxt->rolloff_stats, &isp_rolloff_cxt->rolloff_result);
-
-	if (!isp_gen->isp_ini_cfg.isp_test_settings.wdr_en) {
-		for (i = 0; i < 256; i++)
-		{
-			lens_tbl[4*i + 0] = isp_rolloff_cxt->rolloff_result.lens_table_output[i + 0];
-			lens_tbl[4*i + 1] = isp_rolloff_cxt->rolloff_result.lens_table_output[i + 256];
-			lens_tbl[4*i + 2] = isp_rolloff_cxt->rolloff_result.lens_table_output[i + 512];
-		}
-	} else {
-		for (i = 0; i < 256; i++)
-		{
-			lens_tbl[4*i + 0] = (unsigned short)sqrt((double)isp_rolloff_cxt->rolloff_result.lens_table_output[i + 0] * 1024);
-			lens_tbl[4*i + 1] = (unsigned short)sqrt((double)isp_rolloff_cxt->rolloff_result.lens_table_output[i + 256] * 1024);
-			lens_tbl[4*i + 2] = (unsigned short)sqrt((double)isp_rolloff_cxt->rolloff_result.lens_table_output[i + 512] * 1024);
-		}
-	}
 }
 
 void __isp_afs_set_params(struct isp_lib_context *isp_gen)
@@ -237,6 +221,7 @@
 {
 	isp_gen->awb_entity_ctx.awb_param->awb_frame_id = isp_gen->awb_frame_cnt;
 	isp_gen->awb_entity_ctx.awb_param->awb_ctrl = isp_gen->awb_settings;
+	isp_gen->awb_entity_ctx.awb_param->awb_isp_id = isp_gen->isp_id;
 	//sensor info.
 	isp_gen->awb_entity_ctx.awb_param->awb_sensor_info = isp_gen->sensor_info;
 }
@@ -458,6 +443,16 @@
 	isp_gen->stats_ctx.wb_gain_saved.gb_gain = 256;
 	isp_gen->stats_ctx.wb_gain_saved.b_gain = 256;
 
+	//alsc settings
+	isp_gen->alsc_settings.frequency = 6;
+	isp_gen->alsc_settings.start = isp_gen->alsc_settings.frequency * 5;
+	isp_gen->alsc_settings.smooth_pool_size = 16;
+	isp_gen->alsc_settings.th_tableSwitch = 2;
+	isp_gen->alsc_settings.th_lowLight = 35;
+	isp_gen->alsc_settings.th_complex = 563;
+	isp_gen->alsc_settings.th_highSat = 645;
+	isp_gen->alsc_settings.th_semiFlat = 46;
+
 	//dynamic judge
 	dynamic_stats->enable = 0;
 
@@ -564,7 +559,7 @@
 
 	mod_cfg->module_enable_flag |= ISP_FEATURES_MODE;
 
-	isp_lib_log_param = param->isp_test_settings.isp_log_param;
+	isp_manage_lib_log_param = param->isp_test_settings.isp_log_param;
 
 	return 0;
 }
@@ -1537,20 +1532,21 @@
 
 HW_S32 __isp_ctx_update_rolloff_cfg(struct isp_lib_context *isp_gen)
 {
+	int m;
+
 	if (!isp_gen->rolloff_entity_ctx.rolloff_param) {
 		return -1;
 	}
 
 	//rolloff_sensor_info.
 	isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_sensor_info = isp_gen->sensor_info;
-	//rolloff_ini_cfg.
-	memcpy(&isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_ini.lens_table_ini[0],
-		&isp_gen->isp_ini_cfg.isp_tunning_settings.lsc_tbl[0][3], 768*sizeof(unsigned short));
-	isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_ini.rolloff_ratio = isp_gen->isp_ini_cfg.isp_tunning_settings.rolloff_ratio;
-	isp_rolloff_set_params_helper(&isp_gen->rolloff_entity_ctx, ISP_ROLLOFF_INI_DATA);
 
-	//rolloff lsc_cfg.
-	isp_gen->rolloff_entity_ctx.rolloff_param->lsc_cfg = isp_gen->module_cfg.lens_cfg.lsc_cfg;
+	for (m = 0; m < 11 * ROLLOFF_WIN_SIZE; m++) {
+		isp_gen->rolloff_entity_ctx.rolloff_param->rolloff_ini.Rgain[m]
+			= isp_gen->isp_ini_cfg.isp_tunning_settings.msc_tbl[(m / ROLLOFF_WIN_SIZE) + 1][m % ROLLOFF_WIN_SIZE];
+	}
+
+	isp_rolloff_set_params_helper(&isp_gen->rolloff_entity_ctx, ISP_ROLLOFF_INI_DATA);
 
 	return 0;
 }
@@ -1809,16 +1805,15 @@
 	__isp_awb_run(isp_gen);
 
 	if (isp_gen->isp_ini_cfg.isp_test_settings.lsc_en) {
-#if ISP_LIB_USE_ROLLOFF
-		__isp_rolloff_set_params(isp_gen);
-		__isp_rolloff_run(isp_gen);
-#else
 		config_lens_table(isp_gen, isp_gen->af_entity_ctx.af_result.std_code_output);
-#endif
 	}
 
 #if (ISP_VERSION >= 521)
 	if (isp_gen->isp_ini_cfg.isp_test_settings.msc_en) {
+		if (isp_gen->isp_ini_cfg.isp_tunning_settings.mff_mod >= 3) {
+			__isp_rolloff_set_params(isp_gen);
+			__isp_rolloff_run(isp_gen);
+		}
 		config_msc_table(isp_gen, isp_gen->af_entity_ctx.af_result.std_code_output);
 	}
 #endif

--
Gitblit v1.6.2