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