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

diff --git a/android/hardware/aw/camera/3_4/v4l2_metadata_factory.cpp b/android/hardware/aw/camera/3_4/v4l2_metadata_factory.cpp
index db267da..46add00 100755
--- a/android/hardware/aw/camera/3_4/v4l2_metadata_factory.cpp
+++ b/android/hardware/aw/camera/3_4/v4l2_metadata_factory.cpp
@@ -16,7 +16,9 @@
 
 #include "v4l2_metadata_factory.h"
 
+#include <iostream>
 #include <map>
+#include <sstream>
 #include <utility>
 #include <vector>
 
@@ -52,8 +54,32 @@
   // but doing it here prevents connecting and disconnecting for each one).
   gdevice = device;
 
+  char * s_value;
+  s_value = pCameraCfg->supportPictureSizeValue();
+  int merge_status = 0;
+
+  std::string st1 = s_value;
+  int pic_width = 0;
+  int pic_height = 0;
+  std::string tmp;
+  std::vector<std::string> s_data;
+  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) {
+          merge_status = 1;
+      }
+  }
+
+  //V4L2Wrapper::Connection temp_connection =
+  //    V4L2Wrapper::Connection(device, MAIN_STREAM);
   V4L2Wrapper::Connection temp_connection =
-      V4L2Wrapper::Connection(device, MAIN_STREAM);
+      V4L2Wrapper::Connection(device, MAIN_STREAM, merge_status);
+
   if (temp_connection.status()) {
     HAL_LOGE("Failed to connect to device: %d.", temp_connection.status());
     return temp_connection.status();

--
Gitblit v1.6.2