RK3568平台 安卓hal3适配usb camera

news2024/12/24 8:35:24

一.RK安卓hal3 camera框架

Camera hal3 在 android 框架中所处的位置如上图, 对上,主要实现 Framework 一整套 API 接口,响应其 控制命令,返回数据与控制参数结果。 对下, 主要是通 V4l2 框架实现与 kernel 的交互。3a 控制则是通 control loop 接口与 camera_engine_isp 交互。 另外,其中一些组件或功能的实现也会调用到其他一些第三方 库, 如 cameraBuffer 相关,会调用到 Galloc 相关库, jpeg 编码则会调用到 Hwjpeg 相关库。

二.Camera hal3 与 Frame work 交互时序 

三.usbcamera调试

首先硬件给usb供电,供电后插上usbcamera可以看到新生成的pid vid。

ls /dev/video*

新生成了video1 video2.

media-ctl -d /dev/media0 -p
1|console:/ # media-ctl -d /dev/media0 -p
Opening media device /dev/media0
Enumerating entities
Found 4 entities
Enumerating pads and links
Media controller API version 0.0.189

Media device information
------------------------
driver          uvcvideo
model           USB2.0 PC CAMERA: USB2.0 PC CAM
serial
bus info        usb-fc880000.usb-1.3
hw revision     0x100
driver version  0.0.189

Device topology
- entity 1: USB2.0 PC CAMERA: USB2.0 PC CAM (1 pad, 1 link)
            type Node subtype V4L
            device node name /dev/video1
        pad0: Sink
                <- "Processing 2":1 [ENABLED,IMMUTABLE]

- entity 4: USB2.0 PC CAMERA: USB2.0 PC CAM (0 pad, 0 link)
            type Node subtype V4L
            device node name /dev/video2

- entity 8: Processing 2 (2 pads, 2 links)
            type V4L2 subdev subtype Unknown
        pad0: Sink
v4l2_subdev_open: Failed to open subdev device node
                <- "Input 1":0 [ENABLED,IMMUTABLE]
        pad1: Source
v4l2_subdev_open: Failed to open subdev device node
                -> "USB2.0 PC CAMERA: USB2.0 PC CAM":0 [ENABLED,IMMUTABLE]

- entity 11: Input 1 (1 pad, 1 link)
             type V4L2 subdev subtype Sensor
        pad0: Source
v4l2_subdev_open: Failed to open subdev device node
                -> "Processing 2":0 [ENABLED,IMMUTABLE]

 查看拓扑图,生成新的video1 video2.

dumpsys media.camera
onsole:/ # dumpsys media.camera

== Service global info: ==

Number of camera devices: 1
Number of normal camera devices: 1
Number of public camera devices visible to API1: 1
    Device 0 maps to "101"
Active Camera Clients:
[]
Allowed user IDs: 0

== Camera service events log (most recent at top): ==
  02-01 18:52:22 : ADD device 101, reason: (Device added)
  02-01 18:50:29 : REMOVE device 101, reason: (Device status changed from 1 to 0)
  02-01 18:08:37 : DISCONNECT device 101 client for package com.android.camera2 (PID 6195)
  02-01 18:08:37 : CONNECT device 101 client for package com.android.camera2 (PID 6195)
  02-01 18:06:25 : ADD device 101, reason: (Device added)
  02-01 18:06:16 : REMOVE device 101, reason: (Device status changed from 1 to 0)
  02-01 18:03:23 : ADD device 101, reason: (Device added)
  02-01 18:01:26 : REMOVE device 101, reason: (Device status changed from 1 to 0)
  02-01 18:00:53 : DISCONNECT device 101 client for package com.android.camera2 (PID 4701)
  02-01 18:00:53 : CONNECT device 101 client for package com.android.camera2 (PID 4701)
  02-01 18:00:34 : DISCONNECT device 101 client for package com.android.camera2 (PID 3004)
  02-01 18:00:34 : CONNECT device 101 client for package com.android.camera2 (PID 3004)
  02-01 18:00:29 : DISCONNECT device 101 client for package com.android.camera2 (PID 3004)
  02-01 18:00:29 : CONNECT device 101 client for package com.android.camera2 (PID 3004)
  02-01 18:00:04 : ADD device 101, reason: (Device added)
  02-01 18:00:01 : USER_SWITCH previous allowed user IDs: <None>, current allowed user IDs: 0

== Camera device 101 dynamic info: ==
  Device 101 is closed, no client instance
== Camera Provider HAL external/0-0 (v2.5, remote) static info: 1 devices: ==
== Camera HAL device device@3.4/external/101 (v3.4) static information: ==
  Resource cost: 100
  Conflicting devices: None
  API1 info:
    Has a flash unit: false
    Facing: Front
    Orientation: 0
  API2 camera characteristics:
    Dumping camera metadata array: 55 / 55 entries, 2048 / 2048 bytes of extra data.
      Version: 1, Flags: 00000000
      android.info.supportedHardwareLevel (150000): byte[1]
        [EXTERNAL ]
      android.colorCorrection.availableAberrationModes (00004): byte[1]
        [0 ]
      android.control.aeAvailableAntibandingModes (10012): byte[1]
        [3 ]
      android.control.maxRegions (1001c): int32[3]
        [0 0 0 ]
      android.control.availableVideoStabilizationModes (1001a): byte[1]
        [0 ]
      android.control.awbAvailableModes (1001b): byte[1]
        [1 ]
      android.control.aeAvailableModes (10013): byte[1]
        [1 ]
      android.control.availableEffects (10018): byte[1]
        [0 ]
      android.control.availableModes (10026): byte[2]
        [0 1 ]
      android.edge.availableEdgeModes (30002): byte[1]
        [0 ]
      android.flash.info.available (50000): byte[1]
        [FALSE ]
      android.hotPixel.availableHotPixelModes (60001): byte[1]
        [0 ]
      android.jpeg.availableThumbnailSizes (70007): int32[14]
        [0 0 176 144 ]
        [240 144 256 144 ]
        [240 160 256 154 ]
        [240 180 ]
      android.jpeg.maxSize (70008): int32[1]
        [3145728 ]
      android.lens.info.focusDistanceCalibration (90007): byte[1]
        [UNCALIBRATED ]
      android.lens.info.availableOpticalStabilization (90003): byte[1]
        [0 ]
      android.lens.facing (80005): byte[1]
        [FRONT ]
      android.noiseReduction.availableNoiseReductionModes (a0002): byte[1]
        [0 ]
      android.noiseReduction.mode (a0000): byte[1]
        [OFF ]
      android.request.partialResultCount (c000b): int32[1]
        [1 ]
      android.request.pipelineMaxDepth (c000a): byte[1]
        [4 ]
      android.request.maxNumOutputStreams (c0006): int32[3]
        [0 2 1 ]
      android.request.maxNumInputStreams (c0008): int32[1]
        [0 ]
      android.scaler.availableMaxDigitalZoom (d0004): float[1]
        [4.00000000 ]
      android.scaler.croppingType (d000d): byte[1]
        [CENTER_ONLY ]
      android.sensor.availableTestPatternModes (e0019): int32[2]
        [0 1 ]
      android.sensor.info.timestampSource (f0008): byte[1]
        [UNKNOWN ]
      android.sensor.orientation (e000e): int32[1]
        [0 ]
      android.shading.availableModes (100002): byte[1]
        [0 ]
      android.statistics.info.availableFaceDetectModes (120000): byte[1]
        [0 ]
      android.statistics.info.maxFaceCount (120002): int32[1]
        [0 ]
      android.statistics.info.availableHotPixelMapModes (120006): byte[1]
        [0 ]
      android.statistics.info.availableLensShadingMapModes (120007): byte[1]
        [0 ]
      android.sync.maxLatency (170001): int32[1]
        [UNKNOWN ]
      android.request.availableRequestKeys (c000d): int32[28]
        [3 65536 65537 65538 ]
        [65539 65542 65541 65543 ]
        [65545 65546 65547 65549 ]
        [65550 65551 65552 65553 ]
        [262146 458755 458756 458757 ]
        [458758 524292 655360 851968 ]
        [917528 1114112 1114115 65583 ]
      android.request.availableResultKeys (c000e): int32[35]
        [3 65536 65537 65538 ]
        [65539 65542 65567 65541 ]
        [65543 65568 65545 65546 ]
        [65547 65570 65549 65550 ]
        [65551 65552 65553 262146 ]
        [262149 458755 458756 458757 ]
        [458758 524292 655360 786441 ]
        [851968 917520 1114112 1114115 ]
        [1114128 1114126 65583 ]
      android.request.availableCharacteristicsKeys (c000f): int32[43]
        [4 65554 65555 65556 ]
        [65557 65558 65572 65559 ]
        [65560 65574 65561 65562 ]
        [65563 65573 65564 327680 ]
        [1376256 458759 524293 589827 ]
        [589831 655362 786444 786440 ]
        [786438 786443 786442 851972 ]
        [851978 851981 983040 983044 ]
        [983046 983050 983048 917518 ]
        [1048578 1179648 1179654 1179655 ]
        [1179650 1507329 65582 ]
      android.control.aeCompensationRange (10015): int32[2]
        [0 0 ]
      android.control.aeCompensationStep (10016): rational[1]
        [(0 / 1) ]
      android.control.afAvailableModes (10017): byte[2]
        [1 0 ]
      android.control.availableSceneModes (10019): byte[1]
        [0 ]
      android.control.aeLockAvailable (10024): byte[1]
        [FALSE ]
      android.control.awbLockAvailable (10025): byte[1]
        [FALSE ]
      android.scaler.availableStreamConfigurations (d000a): int32[72]
        [33 160 120 OUTPUT ]
        [35 160 120 OUTPUT ]
        [34 160 120 OUTPUT ]
        [33 176 144 OUTPUT ]
        [35 176 144 OUTPUT ]
        [34 176 144 OUTPUT ]
        [33 320 240 OUTPUT ]
        [35 320 240 OUTPUT ]
        [34 320 240 OUTPUT ]
        [33 352 288 OUTPUT ]
        [35 352 288 OUTPUT ]
        [34 352 288 OUTPUT ]
        [33 640 480 OUTPUT ]
        [35 640 480 OUTPUT ]
        [34 640 480 OUTPUT ]
        [33 800 600 OUTPUT ]
        [35 800 600 OUTPUT ]
        [34 800 600 OUTPUT ]
      android.scaler.availableMinFrameDurations (d000b): int64[72]
        [33 160 ]
        [120 33333333 ]
        [35 160 ]
        [120 33333333 ]
        [34 160 ]
        [120 33333333 ]
        [33 176 ]
        [144 33333333 ]
        [35 176 ]
        [144 33333333 ]
        [34 176 ]
        [144 33333333 ]
        [33 320 ]
        [240 33333333 ]
        [35 320 ]
        [240 33333333 ]
        [34 320 ]
        [240 33333333 ]
        [33 352 ]
        [288 33333333 ]
        [35 352 ]
        [288 33333333 ]
        [34 352 ]
        [288 33333333 ]
        [33 640 ]
        [480 33333333 ]
        [35 640 ]
        [480 33333333 ]
        [34 640 ]
        [480 33333333 ]
        [33 800 ]
        [600 33333333 ]
        [35 800 ]
        [600 33333333 ]
        [34 800 ]
        [600 33333333 ]
      android.scaler.availableStallDurations (d000c): int64[72]
        [33 160 ]
        [120 1000000000 ]
        [35 160 ]
        [120 0 ]
        [34 160 ]
        [120 0 ]
        [33 176 ]
        [144 1000000000 ]
        [35 176 ]
        [144 0 ]
        [34 176 ]
        [144 0 ]
        [33 320 ]
        [240 1000000000 ]

dump出来可以看到生成新的cameraid。

Number of camera devices: 1

Number of normal camera devices: 1

v4l2-ctl -d /dev/video1 --all

 查看video1信息

130|console:/ # v4l2-ctl -d /dev/video1 --all
Driver Info:
        Driver name      : uvcvideo
        Card type        : USB2.0 PC CAMERA: USB2.0 PC CAM
        Bus info         : usb-fc880000.usb-1.3
        Driver version   : 5.10.189
        Capabilities     : 0x84a00001
                Video Capture
                Metadata Capture
                Streaming
                Extended Pix Format
                Device Capabilities
        Device Caps      : 0x04200001
                Video Capture
                Streaming
                Extended Pix Format
Media Driver Info:
        Driver name      : uvcvideo
        Model            : USB2.0 PC CAMERA: USB2.0 PC CAM
        Serial           :
        Bus info         : usb-fc880000.usb-1.3
        Media version    : 5.10.189
        Hardware revision: 0x00000100 (256)
        Driver version   : 5.10.189
Interface Info:
        ID               : 0x03000002
        Type             : V4L Video
Entity Info:
        ID               : 0x00000001 (1)
        Name             : USB2.0 PC CAMERA: USB2.0 PC CAM
        Function         : V4L2 I/O
        Pad 0x01000007   : Sink
          Link 0x0200000d: from remote pad 0x100000a of entity 'Processing 2': Data, Enabled, Immutable
Priority: 2
Video input : 0 (Input 1: ok)
Format Video Capture:
        Width/Height      : 640/480
        Pixel Format      : 'YUYV'
        Field             : None
        Bytes per Line    : 1280
        Size Image        : 614400
        Colorspace        : Default
        Transfer Function : Default (maps to Rec. 709)
        YCbCr/HSV Encoding: Default (maps to ITU-R 601)
        Quantization      : Default (maps to Limited Range)
        Flags             :
Crop Capability Video Capture:
        Bounds      : Left 0, Top 0, Width 640, Height 480
        Default     : Left 0, Top 0, Width 640, Height 480
        Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 640, Height 480, Flags:
Selection: crop_bounds, Left 0, Top 0, Width 640, Height 480, Flags:
Streaming Parameters Video Capture:
        Capabilities     : timeperframe
        Frames per second: 30.000 (30/1)
        Read buffers     : 0
                     brightness 0x00980900 (int)    : min=0 max=255 step=1 default=128 value=128
                       contrast 0x00980901 (int)    : min=0 max=255 step=1 default=135 value=135
                     saturation 0x00980902 (int)    : min=0 max=255 step=1 default=75 value=75
                            hue 0x00980903 (int)    : min=-127 max=127 step=1 default=0 value=0
                          gamma 0x00980910 (int)    : min=1 max=8 step=1 default=4 value=4
           power_line_frequency 0x00980918 (menu)   : min=0 max=2 default=1 value=1
                      sharpness 0x0098091b (int)    : min=0 max=15 step=1 default=5 value=5
         backlight_compensation 0x0098091c (int)    : min=1 max=5 step=1 default=1 value=1
v4l2-ctl -d /dev/video1 --list-formats-ext

查看video1支持的格式和分辨率

console:/ # v4l2-ctl -d /dev/video1 --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
        Index       : 0
        Type        : Video Capture
        Pixel Format: 'YUYV'
        Name        : YUYV 4:2:2
                Size: Discrete 640x480
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                Size: Discrete 352x288
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                Size: Discrete 320x240
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                Size: Discrete 176x144
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)
                Size: Discrete 160x120
                        Interval: Discrete 0.033s (30.000 fps)
                        Interval: Discrete 0.067s (15.000 fps)

分析:此时打开usbcamera的画面是黑屏,查看hal3 camera框架里面适配的分辨率和视频格式是否支持yuvv,最大的分辨率为640*480.

四.代码修改点亮usbcamera

待更新。。。。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1428889.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI应用开发-git开源项目的一些问题及镜像解决办法

AI应用开发相关目录 本专栏包括AI应用开发相关内容分享&#xff0c;包括不限于AI算法部署实施细节、AI应用后端分析服务相关概念及开发技巧、AI应用后端应用服务相关概念及开发技巧、AI应用前端实现路径及开发技巧 适用于具备一定算法及Python使用基础的人群 AI应用开发流程概…

Redis核心技术与实战【学习笔记】 - 18.Redis 缓存被污染了,如何选择淘汰策略

前言 在一些常见下&#xff0c;有些数据被访问的次数非常少&#xff0c;甚至只会被访问一次。当这些数据请求后&#xff0c;还继续留存在缓存中的话&#xff0c;只会白白占用缓存的空间。这种情况就是缓存污染。 当缓存污染不严重时&#xff0c;只有少量数据占据缓存空间&…

题目:有1,2,3,4共四个数字,能组成多少个不相同而且无重复数字的三位数有多少个,都是多少?lua

这是作者的思路&#xff0c; 创建三个表&#xff0c; 第一个数是从四个数遍历&#xff0c; 第二个是数剔除第一个数进行遍历 第三个是剔除第一第二个数遍历 脚本如下 local a{1,2, 3, 4} local b{} local c{} local d{} local function copy(tbl) local ctbl{} for k,v in…

Flink CEP(基本概念)

Flink CEP 在Flink的学习过程中&#xff0c;我们已经掌握了从基本原理和核心层的DataStream API到底层的处理函数&#xff0c;再到应用层的Table API和SQL的各种手段&#xff0c;可以应对实际应用开发的各种需求。然而&#xff0c;在实际应用中&#xff0c;还有一类更为复…

大数据 - Hadoop系列《三》- MapReduce(分布式计算引擎)概述

上一篇文章&#xff1a; 大数据 - Hadoop系列《三》- HDFS&#xff08;分布式文件系统&#xff09;概述-CSDN博客 目录 12.1 针对MapReduce的设计构思 1. 如何对付大数据处理场景 2. 构建抽象编程模型 3. 统一架构、隐藏底层细节 12.2 分布式计算概念 12.3 MapReduce定义…

wordpress怎么做产品展示站?推荐使用MOK主题和ent主题

大多数WordPress站点都是个人博客网站&#xff0c;主要以文章性质的图文为主。不过部分站长想要用WordPress搭建一个产品展示站&#xff0c;应该怎么做呢&#xff1f; 其实&#xff0c;WordPress可以用来建立各种各样的博客网站&#xff0c;包括个人博客、企业网站、商城、影视…

MySQL中去除重复(十一)

MySQL中去除重复(十一) 一、相同的行 我们要去除相同行要使用DISTINCT关键字 SELECT DISTINCT 列名 FROM 表名; distinct 是针对查询的结果集合进行去重而不是针对某一行或者某一列。 二、查询中的行选择 用 WHERE 子句限制从查询返回的行。一个 WHERE 子句包含一个 必须满…

Oracle 面试题 | 08.精选Oracle高频面试题

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

Spring-mvc、Spring-boot中如何在调用同类方法时触发AOP

1. 问题描述 Spring-mvc和Spring-boot中aop可以实现代理的功能&#xff0c;我们可以借此实现事务和日志记录或者限流等多种操作。但是&#xff0c;如果你在一个方法中调用其同类下的其他方法的时候不会触发AOP。本文主要说明其原因及解决办法和实现原理。 2. 原因 AIOP的本质是…

使用VScode编译betaflight固件--基于ubuntu平台

使用VScode编译betaflight固件--基于ubuntu平台 1、使用git克隆betaflight的开源代码2、配置编译环境3、使用VScode编译代码 window平台的见上一篇文章 使用VScode编译betaflight固件–基于windows平台 本文主要介绍在linux系统 ubuntu平台下使用VScode编译betaflight固件的方法…

十分钟上手vue!

Vue 是一款用于构建用户界面的 JavaScript 框架。它基于标准 HTML、CSS 和 JavaScript 构建&#xff0c;并提供了一套声明式的、组件化的编程模型&#xff0c;帮助你高效地开发用户界面。无论是简单还是复杂的界面&#xff0c;Vue 都可以胜任。 一 vue.js的导入及使用 vue安装…

Unity 读取指定目录所占内存大小

public static class TxxTool{#region 读取文件大小private static List<string> DirList new List<string>();public static long GetFileSize(string path){DirList new List<string>();DirList.Add(path);GetAllDirecotries(path);long fileSize 0;for…

Web3行业研究逐步加强,“链上数据”缘何成为关注焦点?

据中国电子报报道&#xff0c;近日&#xff0c;由中关村区块链产业联盟指导&#xff0c;中国信息通信研究院牵头&#xff0c;欧科云链控股有限公司参与编写的《全球Web3产业全景与发展趋势研究报告&#xff08;2023年&#xff09;》正式发布。研究报告通过全面追踪国内外Web3产…

EF Core入门例子(以SqLite为数据库)

测试环境&#xff1a; visual studio 2017 .net core 2.1 具体步骤如下&#xff1a; 1 新增名称为EFCoreDemo的.net core控制台程序&#xff0c;版本选择.net core 2.1&#xff0c;项目不能放到带中文的目录下&#xff0c;不然到后面执行Add-Migration命令时会报如下的错误…

自然语言处理(NLP)—— Dialogflow ES聊天机器人

1. 背景介绍 这个实验室的目标是让你了解并使用Google的Dialogflow服务。Dialogflow是一个可以让你创建聊天机器人的服务&#xff0c;这个过程不需要或者只需要很少的编程技能。 1.1 账号的创建 为了完成这个实验室&#xff0c;你需要在以下网站上创建账号&#xff1a…

产品经理学习-产品运营《海报制作》

如何策划一款优秀的海报 海报是什么&#xff1f; 是一种将文字和图片结合的信息传递形式&#xff1b;其作用和目的是把想传递给用户的信息高效的传递出去&#xff0c;让用户在极短的时间内产生兴趣&#xff0c;进而产生收藏、分享等行为。 海报的类型&#xff1a; 类型 特点 …

HBuilder使用[微信小程序开发者工具] 显示 × initialize报错

解决办法 我们先要单独打开 微信开发者工具 点击设置里面的安全,把服务器端口打开 然后再回到我们的HBuilder使用重新打开打开 成功打开

Android Studio | sync时报错到Gradle,显示Connection timed out的解决方案

一、问题描述 拉了新项目代码&#xff0c;或者是本地新建项目&#xff0c;Sync阶段就挂掉&#xff0c;给的错误提示是Connection timed out。 二、解决方案 找到本地Gradle的目录位置 Settings – Build – Build Tools – Gradle 在mac上&#xff0c;可能你会发现发现我打码…

ubuntu20.04安装sumo

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 有问题&#xff0c;请大家指出&#xff0c;争取使方法更完善。这只是ubuntu安装sumo的一种方法。一、注意事项1、首先明确你的ubuntu的用户名是什么 二、sumo安装1.…

【Kafka专栏】windows搭建Kafka环境 详细教程(01)

文章目录 01 引言1.1 官网地址1.2 概述简介1.3 kafka与zookeeper 02 部署zookeeper2.1 下载组件包2.2 解压压缩包&#xff08;1&#xff09;解压到任意路径&#xff08;2&#xff09;解压后的目录创建数据目录data 2.3 修改zoo配置2.4 设置系统变量2.5 启动zookeepe服务&#x…