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.c |   34 +++++++++++++++++++++++++++++-----
 1 files changed, 29 insertions(+), 5 deletions(-)

diff --git a/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp.c b/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp.c
index 158ec46..f4b5d5b 100755
--- a/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp.c
+++ b/android/hardware/aw/camera/3_4/allwinnertech/libAWIspApi/libisp_new/isp.c
@@ -54,6 +54,8 @@
 
 #define MEDIA_DEVICE		"/dev/media0"
 
+unsigned int isp_lib_log_param = 0;
+
 struct hw_isp_media_dev media_params;
 struct isp_lib_context isp_ctx[HW_ISP_DEVICE_NUM] = {
 	[0] = {
@@ -414,6 +416,13 @@
 	struct isp_lib_context *isp_gen = isp_dev_get_ctx(isp);
 	HW_S32 iso_qmenu[] = { 100, 200, 400, 800, 1600, 3200, 6400};
 	HW_S32 exp_bias_qmenu[] = { -4, -3, -2, -1, 0, 1, 2, 3, 4, };
+
+#if (ISP_VERSION == 522)
+    if (isp->id && isp_gen->sensor_info.sensor_width > 4000 &&
+            isp_gen->sensor_info.sensor_height > 3000) {
+        isp_gen = &isp_ctx[0];
+    }
+#endif
 
 	if (isp_gen == NULL)
 		return;
@@ -1120,8 +1129,7 @@
   *i3a_length =
   	  sizeof(ae_result_t) + sizeof(ae_param_t)+ sizeof(struct isp_ae_stats_s) // ae info
   	+ sizeof(awb_result_t)+ sizeof(awb_param_t)+ sizeof(struct isp_awb_stats_s) // awb info
-  	+ sizeof(af_result_t)+ sizeof(af_param_t)+ sizeof(struct isp_af_stats_s) // af info
-  ;
+  	+ sizeof(af_result_t)+ sizeof(af_param_t)+ sizeof(struct isp_af_stats_s); // af info
 
   *debug_length =
   	sizeof(iso_result_t)
@@ -1131,11 +1139,12 @@
   	+16*16*3*sizeof(unsigned short)	// msc tbl
   	+4*2*sizeof(unsigned short);	// wb otp data
 
+    data_len = *i3a_length + *debug_length;
 	ISP_PRINT("i3a_length:%d, debug_length:%d.\n", *i3a_length, *debug_length);
 	ISP_PRINT("af_result_t:%d, af_param_t:%d, isp_af_stats_s:%d.\n", sizeof(ae_result_t), sizeof(ae_param_t), sizeof(struct isp_ae_stats_s));
  	ISP_PRINT("af_result_t:%d, af_param_t:%d, isp_af_stats_s:%d.\n", sizeof(awb_result_t), sizeof(awb_param_t), sizeof(struct isp_awb_stats_s));
 	ISP_PRINT("af_result_t:%d, af_param_t:%d, isp_af_stats_s:%d.\n", sizeof(af_result_t), sizeof(af_param_t), sizeof(struct isp_af_stats_s));
-    return 0;
+    return  data_len;
 }
 
 
@@ -1157,6 +1166,7 @@
         return -1;
 
     void * ptr = params;
+    int isp_3a_size = 0;
 	// ae info
     memcpy(ptr, &(isp_gen->ae_entity_ctx.ae_result), sizeof(ae_result_t));
     ptr += sizeof(ae_result_t);
@@ -1187,8 +1197,14 @@
 	memcpy(ptr, isp_gen->af_entity_ctx.af_stats.af_stats, sizeof(struct isp_af_stats_s));
 	ptr += sizeof(struct isp_af_stats_s);
 
+    isp_3a_size = sizeof(ae_result_t) + sizeof(ae_param_t) +
+        sizeof(struct isp_ae_stats_s) + sizeof(awb_result_t) +
+        sizeof(awb_param_t) + sizeof(struct isp_awb_stats_s) +
+        sizeof(af_result_t) + sizeof(af_param_t) +
+        sizeof(struct isp_af_stats_s);
+
     ptr = NULL;
-    return 0;
+    return isp_3a_size;
 }
 
 HW_S32 isp_get_debug_msg(int dev_id, void* msg)
@@ -1207,6 +1223,7 @@
         return -1;
 
     void * ptr = msg;
+    int isp_debug_msg_size = 0;
     memcpy(ptr, &(isp_gen->iso_entity_ctx.iso_result), sizeof(iso_result_t));
     ptr += sizeof(iso_result_t);
 
@@ -1227,8 +1244,15 @@
 	memcpy(ptr, isp_gen->pwb_table, 4*2*sizeof(unsigned short));
 	ptr += 4*2*sizeof(unsigned short);
 
+    isp_debug_msg_size = sizeof(iso_result_t) +
+        sizeof(iso_param_t) +
+        sizeof(struct isp_module_config) +
+        sizeof(int) +
+        16*16*3*sizeof(unsigned short) +
+        4*2*sizeof(unsigned short);
+
     ptr = NULL;
-    return 0;
+    return isp_debug_msg_size;
 }
 
 /*******************get isp version*********************/

--
Gitblit v1.6.2