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