MSM8953 Android9.0 配置USB2.0 Camera

news/2024/11/28 23:53:21/

前言

       Android 平台支持使用即插即用的 USB 摄像头(即网络摄像头),但前提是这些摄像头采用标准的 Android Camera2 API 和摄像头 HIDL 接口。网络摄像头通常支持 USB 视频类 (UVC) 驱动程序,并且在 Linux 上,系统采用标准的 Video4Linux (V4L) 驱动程序控制 UVC 摄像头。

      如果系统支持网络摄像头,设备便可用于视频聊天和照片冲印机等轻量级用例。此功能不能替代 Android 手机上典型的内部相机 HAL,也不是为了协助执行涉及高分辨率和高速流式传输、AR 以及手动 ISP/传感器/摄像头控制且对性能要求很高的复杂任务。

     USB 相机 HAL 进程是外接摄像头提供程序的一部分,该提供程序会监听 USB 设备可用性,并相应地枚举外接摄像头设备。该进程具有与内置相机 HAL 进程类似的权限和 SE 策略。直接与 USB 设备通信的第三方网络相机应用访问 UVC 设备时所需的相机权限与所有常规相机应用所需的权限相同。

  本文记录了在MSM8953 平台上 适配usb2.0cam的过程,以及遇到的问题。

验证步骤:

按照patch【android9-usb2.0-camera.patch-互联网文档类资源-CSDN下载】 修改后全编镜像,

刷 boot dtbo system vendor 等镜像后重启

插入usb2.0cam

打开高通相机APP,即可正常打开usb2.0  camera

遇到问题

合入patch后无法打开摄像头:

分析:在 external_camera_config.xml 中配置了忽略内置摄像头的ID。

内置摄像头是系统配置的走mipi csi的摄像头,

ID正常由0开始分配,外置摄像头打开需要跳过内部的camera ID。

所以,如果机器连接了一个mipi 内置摄像头,那么仅需要跳过 camera id0,xml 设置跳过 id 0;

device/{vendor_name}/{prj_name}/external_camera_config.xml
<ExternalCamera><Provider><ignore> <!-- Internal video devices to be ignored by external camera HAL --><id>0</id> <!-- No leading/trailing spaces --><!--id>1</id--></ignore></Provider>

如果机器连接了2个mipi内置摄像头,那么需要跳过 camera id 0、1,xml 配置跳过 id0、1;

device/{vendor_name}/{prj_name}/external_camera_config.xml
<ExternalCamera><Provider><ignore> <!-- Internal video devices to be ignored by external camera HAL --><id>0</id> <!-- No leading/trailing spaces --><id>1</id></ignore></Provider>

HAL 对内置ID的过滤

hardware\interfaces\camera\provider\2.4\default\ExternalCameraProvider.cppbool ExternalCameraProvider::HotplugThread::threadLoop() {
...struct dirent* de;while ((de = readdir(devdir)) != 0) {// Find external v4l devices that's existing before we start watching and add themif (!strncmp(kPrefix, de->d_name, kPrefixLen)) {// TODO: This might reject some valid devices. Ex: internal is 33 and a device named 3// is added.std::string deviceId(de->d_name + kPrefixLen);if (mInternalDevices.count(deviceId) == 0) {ALOGV("Non-internal v4l device %s found", de->d_name);char v4l2DevicePath[kMaxDevicePathLen];snprintf(v4l2DevicePath, kMaxDevicePathLen,"%s%s", kDevicePath, de->d_name);mParent->deviceAdded(v4l2DevicePath);}}}
...
}

参考链接:

https://source.android.google.cn/devices/camera/external-usb-cameras


http://www.ppmy.cn/news/442827.html

相关文章

高通MDM9628芯片数据参考

高通MDM9628芯片数据参考 啊哈哈&#xff0c;分享完MTK的芯片资料&#xff0c;现在来个MDM9628芯片的资料吧&#xff0c;只是想把所有的资料都分享出来给大家&#xff0c;所有高通的芯片资料都在闯客网技术论坛了&#xff0c;加群也可以获取资料&#xff0c;高通资料交流群&am…

MSM8953配置I2C及SPI

此次完成的任务是要使能高通8953平台的i2c和spi&#xff0c;主要做的工作就是在设备树文件中添加节点信息。主要的工作在于对设备树文件的修改&#xff0c;主要修改了msm8953-pinctrl.dtsi和msm8953.dtsi两个文件。 msm8953-pinctrl.dtsi是配置MSM8953芯片中的GPIO。在此文件中…

高通MSM895x:充电功能调试

一、概述 PMI8952的充电功能主要支持USB、DC、WIPower无线等充电接口,并且支持高通快充协议QC2.0和QC3.0;PMI8952有输入电源的路径管理功能,此功能为PMI8952的硬件行为,即当接口外接电源时,外接电源所供电流,一部分通过充电功能进入电池,一部分可以作为系统运行时所需的…

linux驱动由浅入深系列:ALSA框架详解 音频子系统之二

linux驱动由浅入深系列:tinyalsa(tinymix/tinycap/tinyplay/tinypcminfo)音频子系统之一linux驱动由浅入深系列:ALSA框架详解 音频子系统之二 本文以高通平台为例,介绍一下android下的音频结构。android使用的是tinyALSA作为音频系统,使用方法和基本框架与linux中常用的AL…

2023年05月青少年软件编程C语言二级真题答案——持续更新.....

青少年软件编程(C语言)等级考试试卷(二级) 一、编程题(共5题,共100分) 1. 数字放大 给定一个整数序列以及放大倍数x,将序列中每个整数放大x倍后输出。 时间限制:1000 内存限制:65536 输入 包含三行: 第一行为N,表示整数序列的长度(N ≤ 100); 第二行为N个整数(不…

UE 虚幻引擎项目启动快捷键

1、Epic Games\Launcher目录下找到UnrealVersionSelector.exe 2、将UnrealVersionSelector.exe添加到任务栏&#xff0c;鼠标右键点击&#xff0c;可以看到所有打开的UE项目&#xff08;不限UE版本&#xff09;。鼠标左键点击&#xff0c;就可以打开UE项目了。

ae学习笔记2(快捷键)

p键&#xff1a;调出时间线上项目位置关键帧 s键&#xff1a;缩放属性 R键&#xff1a;旋转属性 ctrl↑&#xff08;↓&#xff09;调整图层 鼠标在素材窗口双击素材&#xff0c;进入图层模式 鼠标选中任一锚点&#xff0c;按住alt键&#xff0c;可以调出锚点的手柄&…

AE收起所有图层的快捷键

AE收起所有图层的快捷键&#xff1a;fn f