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_stream.h |   24 +++++++++++++++++-------
 1 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/android/hardware/aw/camera/3_4/v4l2_stream.h b/android/hardware/aw/camera/3_4/v4l2_stream.h
index f30775d..fa116b8 100755
--- a/android/hardware/aw/camera/3_4/v4l2_stream.h
+++ b/android/hardware/aw/camera/3_4/v4l2_stream.h
@@ -67,7 +67,9 @@
   // to "new V4L2Stream", except that it may return nullptr in case of failure.
   static V4L2Stream* NewV4L2Stream(const int id,
                                    const std::string device_path,
-                                   std::shared_ptr<CCameraConfig> pCameraCfg);
+                                   std::shared_ptr<CCameraConfig> pCameraCfg,
+                                   int merge_status
+                                   );
   virtual ~V4L2Stream();
 
   // Turn the stream on or off.
@@ -91,7 +93,7 @@
   virtual int SetAutoFocusRegions(cam_rect_t cam_regions);
   virtual int SetCropRect(cam_crop_rect_t cam_crop_rect);
   virtual int SetJpegCropRect(cam_crop_rect_t cam_crop_rect);
-  virtual int SetParm(int mCapturemode);
+  virtual int SetParm(int mCapturemode, uint32_t width, uint32_t height);
   // Manage format.
   virtual int GetFormats(std::set<uint32_t>* v4l2_formats);
   virtual int GetFormatFrameSizes(uint32_t v4l2_format,
@@ -104,7 +106,7 @@
       const std::array<int32_t, 2>& size,
       std::array<int64_t, 2>* duration_range);
   virtual int SetFormat(const StreamFormat& desired_format,
-                        uint32_t* result_max_buffers);
+                        uint32_t* result_max_buffers, bool merge_stream_flag);
   // Manage buffers.
   virtual int PrepareBuffer();
   virtual int WaitCameraReady();
@@ -132,11 +134,13 @@
   // Use NewV4L2Stream instead.
   V4L2Stream(const int id,
              const std::string device_path,
-             std::shared_ptr<CCameraConfig> pCameraCfg);
+             std::shared_ptr<CCameraConfig> pCameraCfg,
+             int merge_status
+             );
 
   // Connect or disconnect to the device. Access by creating/destroying
   // a V4L2Wrapper::Connection object.
-  int Connect();
+  int Connect(int merge_status);
   void Disconnect();
   // Perform an ioctl call in a thread-safe fashion.
   template <typename T>
@@ -167,6 +171,12 @@
   epoll_event *pEvents;
   // The open camera facing.
   const int device_id_;
+
+  int reduce_call_num;
+  uint32_t reducecallnum_dst_width;
+  uint32_t reducecallnum_dst_height;
+  uint32_t reducecallnum_src_width;
+  uint32_t reducecallnum_src_height;
 
   // Whether or not the device supports the extended control query.
   bool extended_query_supported_;
@@ -257,9 +267,9 @@
 class ConnectionStream {
   friend class V4L2Stream;
  public:
-  explicit ConnectionStream(std::shared_ptr<V4L2Stream> device)
+  ConnectionStream(std::shared_ptr<V4L2Stream> device, int merge_status)
       : device_(std::move(device)) {
-      connect_result_ = device_->Connect();
+      connect_result_ = device_->Connect(merge_status);
   }
   ~ConnectionStream() {
     if (connect_result_ == 0) {

--
Gitblit v1.6.2