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/v4l2_camera_hal.cpp |   28 +++++++++++++++++++++++++++-
 1 files changed, 27 insertions(+), 1 deletions(-)

diff --git a/android/hardware/aw/camera/3_4/v4l2_camera_hal.cpp b/android/hardware/aw/camera/3_4/v4l2_camera_hal.cpp
index a9ca895..4dd056f 100755
--- a/android/hardware/aw/camera/3_4/v4l2_camera_hal.cpp
+++ b/android/hardware/aw/camera/3_4/v4l2_camera_hal.cpp
@@ -31,6 +31,8 @@
 #include <memory>
 #include <string>
 #include <unordered_set>
+#include <iostream>
+#include <sstream>
 
 #include "camera_config.h"
 #include "v4l2_camera.h"
@@ -68,6 +70,12 @@
     HAL_LOGE("Cannot found video node %s. %s", dev_node, strerror(errno));
   }
 
+  hal_merge_stream_flag = false;
+  char * s_value;
+  int pic_width = 0;
+  int pic_height = 0;
+  std::string tmp;
+  std::vector<std::string> s_data;
   // id == 0 camera facing back;
   // id == 1 camera facing front;
 
@@ -83,7 +91,25 @@
       config->initParameters();
       config->dumpParameters();
     }
-    V4L2Camera* cam(V4L2Camera::NewV4L2Camera(id, config));
+    mCameraConfig.push_back(config);
+
+    s_value = config->supportPictureSizeValue();
+    std::string st1 = s_value;
+    std::stringstream input(st1);
+
+    while (getline(input, tmp, ',')) {
+        s_data.push_back(tmp);
+    }
+    for(auto s : s_data) {
+        sscanf(s.c_str(), "%dx%d", &pic_width,&pic_height);
+        if(pic_width * pic_height > 4000*3000) {
+            hal_merge_stream_flag = true;
+        }
+    }
+
+    V4L2Camera* cam(V4L2Camera::NewV4L2Camera(id,
+                                              config,
+                                              hal_merge_stream_flag));
     if (cam) {
       mCameras.push_back(cam);
     } else {

--
Gitblit v1.6.2