Android11 USB Camera会出现预览绿屏问题

目录

一、问题描述

二、问题原因

三、解决方法

四、问题复现及解决

A、问题复现

a、问题现象

b、问题原因

B、解决方法



一、问题描述

DDR容量是4G及以上的机器,USB Camera会出现预览绿屏问题。

串口中会刷如下log:

二、问题原因

RGA2使用超过4G内存会异常,导致USB Camera调用rga相关操作报错,从而预览绿屏

三、解决方法

限制USB Camera 预览buf及中间buf申请内存在4G以内。

详见patch:

From 8eebf07d39c069422e8b6eed8b414c3fa21e2c5a Mon Sep 17 00:00:00 2001
From: Wang Panzhenzhuan <randy.wang@rock-chips.com>
Date: Tue, 8 Aug 2023 19:00:29 +0800
Subject: [PATCH] usb camera: gralloc alloc buf in 4G for camera use

Change-Id: I59410a65057d7ebb2831cea6a97b48c64cd8d7d2
Signed-off-by: Wang Panzhenzhuan <randy.wang@rock-chips.com>
---
 camera/device/3.4/default/ExternalCameraDeviceSession.cpp      | 3 ++-
 camera/device/3.4/default/ExternalCameraGralloc4.cpp           | 3 ++-
 .../include/ext_device_v3_4_impl/ExternalCameraGralloc4.h      | 1 +
 3 files changed, 5 insertions(+), 2 deletions(-)
 mode change 100755 => 100644 camera/device/3.4/default/ExternalCameraGralloc4.cpp
 mode change 100755 => 100644 camera/device/3.4/default/include/ext_device_v3_4_impl/ExternalCameraGralloc4.h

diff --git a/camera/device/3.4/default/ExternalCameraDeviceSession.cpp b/camera/device/3.4/default/ExternalCameraDeviceSession.cpp
index e2ab4fa2f..3e625f9a1 100644
--- a/camera/device/3.4/default/ExternalCameraDeviceSession.cpp
+++ b/camera/device/3.4/default/ExternalCameraDeviceSession.cpp
@@ -3493,9 +3493,10 @@ Status ExternalCameraDeviceSession::configureStreams(
             GRALLOC_USAGE_HW_VIDEO_ENCODER |
             GRALLOC_USAGE_HW_CAMERA_WRITE |
             RK_GRALLOC_USAGE_SPECIFY_STRIDE|
-            GRALLOC_USAGE_PRIVATE_1;
+            GRALLOC_USAGE_PRIVATE_1 | RK_GRALLOC_USAGE_WITHIN_4G;
         out->streams[i].v3_2.consumerUsage = 0;
         out->streams[i].v3_2.maxBuffers  = mV4L2BufferCount;
+        ALOGD("allocate RK_GRALLOC_USAGE_WITHIN_4G");
 
         switch (config.streams[i].format) {
             case PixelFormat::BLOB:
diff --git a/camera/device/3.4/default/ExternalCameraGralloc4.cpp b/camera/device/3.4/default/ExternalCameraGralloc4.cpp
old mode 100755
new mode 100644
index 8f233243f..462b7a3b2
--- a/camera/device/3.4/default/ExternalCameraGralloc4.cpp
+++ b/camera/device/3.4/default/ExternalCameraGralloc4.cpp
@@ -130,7 +130,8 @@ static inline void sBufferDescriptorInfo(std::string name, uint32_t width, uint3
     outDescriptorInfo->height = height;
     outDescriptorInfo->layerCount = layerCount;
     outDescriptorInfo->format = static_cast<hardware::graphics::common::V1_2::PixelFormat>(format);
-    outDescriptorInfo->usage = usage;
+    outDescriptorInfo->usage = RK_GRALLOC_USAGE_WITHIN_4G|usage;
+    ALOGD("%s:alloc RGA buf in 4G!\n", __FUNCTION__);
     outDescriptorInfo->reservedSize = 0;
 }
 
diff --git a/camera/device/3.4/default/include/ext_device_v3_4_impl/ExternalCameraGralloc4.h b/camera/device/3.4/default/include/ext_device_v3_4_impl/ExternalCameraGralloc4.h
old mode 100755
new mode 100644
index e79774ff9..4d730206d
--- a/camera/device/3.4/default/include/ext_device_v3_4_impl/ExternalCameraGralloc4.h
+++ b/camera/device/3.4/defa
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值