camera調試:安卓添加xml注冊

對接安卓的平臺時,需要注冊對應的camera設備,供安卓標準api進行操作,rk的平臺需要在HAL層配置camera3_profiles.xml文件,適配驅動的信息,進行注冊camera設備。該xml對應的內容很多,很多CTS測試問題都是該文件配置導致。對應不同的sensor,建議根據功能更新xml配置。以下對xml部分配置做一下簡要的說明:

目錄

1.xml文件說明

2.xml屬性

2.1?設備注冊名稱與ID

2.2 Android_metadata

2.2.1 control.aeAvailableAntibandingModes?

2.2.2 control.aeAvailableModes

2.2.3?control.aeAvailableTargetFpsRanges

2.2.4?control.afAvailableModes

2.2.5?control.awbAvailableModes

2.2.6?jpeg.maxSize

2.2.7?lens.info.availableApertures

2.2.8?lens.info.availableFocalLengths

2.2.9?lens.info.minimumFocusDistance

2.2.10?lens.facing

2.2.11?scaler.availableMaxDigitalZoom

2.2.12?scaler.availableStreamConfigurations

2.2.13?scaler.availableMinFrameDurations

2.2.14?scaler.availableStallDurations

2.2.15?sensor.info.activeArraySize

2.2.16?sensor.info.physicalSize

2.2.17?sensor.info.pixelArraySize

2.2.18?sensor.orientation

2.2.19?flash.info.available

2.2.20?supportTuningSize

2.2.21?sensorType

2.2.22?statistics.initialSkip

2.2.23?aiq.workingMode

2.2.24?aiq.multicamera

3. 注意點


1.xml文件說明

camera3_profiles.xml文件對應SDK目錄下具體芯片平臺的文件:

hardware/rockchip/camera/etc/camera/camera3_profiles_rk3xxx.xml

在設備上的路徑為:

/vendor/etc/camera/camera3_profiles.xml

若是臨時調試,可以采用adb替換文件的形式,但需要注意文件路徑與文件名的正確性。

camera3_profiles.xml包含多個Profiles節點,Profiles節點包含一個完整的camera屬性列表,機器有幾個camera,就需要配置幾個Profiles節點。

Profiles 節點下又包含了如下四個子節點。

	<Profiles cameraId="0" name="ov50c40" moduleId="m00"><Supported_hardware></Supported_hardware><Android_metadata> <!-- Android static metadata only --></Android_metadata>
<!-- ******************PSL specific section start **************************************************************--><Hal_tuning_RKISP1>     </Hal_tuning_RKISP1><Sensor_info_RKISP1> </Sensor_info_RKISP1><!-- ******************PSL specific section end **************************************************************-->

<Android_metadata> 節點包含的信息主要是 camera 的能力支持,該字段的信息上層將通過 camera_module?的 API:get_camera_info() 獲取到。Camera 運行時也可以通過如下命令獲取到相關的信息。

2.xml屬性

簡要介紹一下xml中需要配置的一些相關屬性。

2.1?設備注冊名稱與ID

xml中name參數與moduleid參數取決定著能否成功注冊安卓camera設備,若該兩項屬性配置異常,則會導致

  • name:需要與驅動名稱一致,有大小寫區別;

  • moduleId:需要與驅動dts中配置的index一致,關鍵配置項,值格式為 “mxx”,其中 “m”為“module”縮寫,“xx”為十進制數字,標示camera 唯一編號,moduleId 需要與驅動 DTS 中配置相一致,否則將探測錯誤。另外,配置多個camera 時,多個 camera 的<profiles>項需要按照 moduleId 升序排列。

通過如下命令: adb shell cat /sys/class/video4linux/*/name 可以獲取所有 v4l2 設備點節的名字,其中形如 m00_b_ov5695 2-0036 為 sensor 節點名稱。 該命令規則中, m00 代表 moduleId ,主要為匹配 len,flash之用, ‘b’ 代表 camera 方向為后置,如果是前置則為‘f’,‘ov5695’代表 sensor name , ‘2-0036’代表 I2c 地址。

2.2 Android_metadata

以 下 Android_metadata 設 置 項 主 要 為 Android 相 關 配 置 項 , 各 字 段 具 體 可 參 考
<SDK>/system/media/camera/docs/docs.html 說明。

2.2.1 control.aeAvailableAntibandingModes?

SOC: AUTO
RAW: 50HZ,60Hz // 以排在首位的作為初始化配置

2.2.2 control.aeAvailableModes

ON // 不支持 flash 時
ON,ON_AUTO_FLASH,ON_ALWAYS_FLASH // 支持 flash 時

2.2.3?control.aeAvailableTargetFpsRanges

該設置項有多個限制需要注意:
1) 錄像必需要有一組恒定幀率, 假如幀率為 x, 那就要包含(x,x)
2) 錄像幀率必需至少要一組大于 24 幀
3) 第一組必需 Min <= 15. 所以第一組一般為 (15,x)
4) 各組幀率需要按升序排列
升序具體意義為,假設有定義有兩組幀率:(min1,max1),(min2,max2),則 max2 >=max1,max2 ==?max1 時,還需要滿足 min1 <= min2。
一般情況下 sensor 驅動只會輸出兩組分辨率,全分辨率及 binning 分辨率,其他分辨率即使有調試也一般不使用(可由 ISP 裁剪及縮放得到)。
假設:
max2 = max_fps_bining
max1 = max_fps_full
且 max2 >= max1
那么

1)如果 max1 > 15,可按如下配置
(min1,max1),(max1,max1),(min2,max2),(max2,max2)
其中 min1 <=15, min2 > 0,max2 >= 24。如果需要增加錄像的固定幀率,則按上述升序列規則添加即可。
示例如下:
假如: max1 = 20, max2 = 30, 且需要有 15 fps 的固定錄像幀率,那么可按如下配置:
(15,15),(10,20),(20,20),(10,30),(30,30)?
2)如果 max1 <= 15,可按如下配置
(max1,max1),(min2,max2),(max2,max2)
其中 min2 > 0,max2 >= 24。如果需要增加錄像的固定幀率,則按上述升序列規則添加即可。示例如下:
假如: max1 = 7, max2 = 30, 且需要有 15 fps 的固定錄像幀率,那么可按如下配置:
(7,7),(15,15),(10,30),(30,30)
注:min fps 可用于控制拍照預覽時的最小幀率,也即控制了最大曝光時間,可以根據需要進行調整,但設置過小會影響拍照速度,但在較暗情況下能獲得更好的預覽效果。

2.2.4?control.afAvailableModes

SOC:OFF //soc camera 不支持 af?
RAW:OFF // 如果 camera 沒有 af 功能
RAW: AUTO,CONTINUOUS_VIDEO,CONTINUOUS_PICTURE,OFF // camera 具有 af 功能

2.2.5?control.awbAvailableModes

SOC:AUTO
RAW:AUTO,INCANDESCENT,FLUORESCENT,DAYLIGHT,CLOUDY_DAYLIGHT

2.2.6?jpeg.maxSize

計算公式如下:
?最大分辨率為:scaler.availableStreamConfigurations 中 BLOB 項最大分辨率項
?jpeg.maxSize >= max_blob_w * max_blob_h * 3 / 2

2.2.7?lens.info.availableApertures

可選光圈,目前只支持一個,可從模組規格書中獲取。

2.2.8?lens.info.availableFocalLengths

可選焦長,目前只支持一個,可從模組規格書中獲取,與 FOV 計算相關。

2.2.9?lens.info.minimumFocusDistance

0.0 // 不支持 af 時
非 0 // 支持 af 時,務必配置配置成非 0,具體需要根據模組規格書來設置

2.2.10?lens.facing

BACK:后攝

FRONT:前攝

2.2.11?scaler.availableMaxDigitalZoom

默認值為 4.0,根據芯片平臺及需要可增大或減小放大倍數;注意增大放大倍數時,在放大預覽情況下,在不同平臺上可能會影響預覽幀率,主要是由平臺的 2D 加速器引起的,如果發現存在該種情況,請減小放大倍數。

2.2.12?scaler.availableStreamConfigurations

HAL 層支持的分辨率列表, 有如下限制:
1)需要按照分辨率依次降序排列
2)為了滿足 CTS 要求,需要包含 352x288,320x240,176x144 配置項
3)如果在 media_profiles_V1_0.xml 中有指定錄像分辨率,那么該列表中需要包含該分辨率
4)列表中需要支持 BLOB,YCbCr_420_888,IMPLEMENTATION_DEFINED 三種格式輸出配置,三種格式中支持 的分辨率都要相同
5)為了不影響拍照速度,如果 sensor 最大輸出尺寸寬度大于 4096 時,需將最大分辨率寬度限制在?4096。

參考:
            <scaler.availableStreamConfigurations value="BLOB,2688x1520,OUTPUT,BLOB,1920x1080,OUTPUT,BLOB,1280x960,OUTPUT,BLOB,1280x720,OUTPUT,BLOB,640x480,OUTPUT,BLOB,320x240,OUTPUT,BLOB,176x144,OUTPUT,YCbCr_420_888,2688x1520,OUTPUT,YCbCr_420_888,1920x1080,OUTPUT,YCbCr_420_888,1280x960,OUTPUT,YCbCr_420_888,1280x720,OUTPUT,YCbCr_420_888,640x480,OUTPUT,YCbCr_420_888,320x240,OUTPUT,YCbCr_420_888,176x144,OUTPUT,IMPLEMENTATION_DEFINED,2688x1520,OUTPUT,IMPLEMENTATION_DEFINED,1920x1080,OUTPUT,IMPLEMENTATION_DEFINED,1280x960,OUTPUT,IMPLEMENTATION_DEFINED,1280x720,OUTPUT,IMPLEMENTATION_DEFINED,640x480,OUTPUT,IMPLEMENTATION_DEFINED,320x240,OUTPUT,IMPLEMENTATION_DEFINED,176x144,OUTPUT"/>
2.2.13?scaler.availableMinFrameDurations

配置 scaler.availableStreamConfigurations 中各分辨率下最小幀間隔(即最大幀率),需要滿
足以下條件:
1)需要包含 scaler.availableStreamConfigurations 中定義的所有格式,分辨率
2)各分辨率最大幀率可從 sensor 驅動獲取,一般 sensor 只輸出 full 及 binning 兩種分辨率,列表中上報的支持分辨率如果 sensor 驅動不能直接支持,那么會由 ISP 裁剪及縮放得到,因此非 sensor 直接輸出的分辨率幀率與比之更大的最接近的 sensor 輸出分辨率相同。

            <scaler.availableMinFrameDurations value="BLOB,2688x1520,33333333,BLOB,1920x1080,33333333,BLOB,1280x960,33333333,BLOB,1280x720,33333333,BLOB,640x480,33333333,BLOB,320x240,33333333,BLOB,176x144,33333333,YCbCr_420_888,2688x1520,33333333,YCbCr_420_888,1920x1080,33333333,YCbCr_420_888,1280x960,33333333,YCbCr_420_888,1280x720,33333333,YCbCr_420_888,640x480,33333333,YCbCr_420_888,320x240,33333333,YCbCr_420_888,176x144,33333333,IMPLEMENTATION_DEFINED,2688x1520,33333333,IMPLEMENTATION_DEFINED,1920x1080,33333333,IMPLEMENTATION_DEFINED,1280x960,33333333,IMPLEMENTATION_DEFINED,1280x720,33333333,IMPLEMENTATION_DEFINED,640x480,33333333,IMPLEMENTATION_DEFINED,320x240,33333333,IMPLEMENTATION_DEFINED,176x144,33333333" />
2.2.14?scaler.availableStallDurations

配置 scaler.availableStreamConfigurations 中 BLOB 格式各分辨率的允許的最大間隔時長,可直接復制scaler.availableMinFrameDurations 中 BLOB 的配置項,也可設置大于 scaler.availableMinFrameDurations 中的值,只需滿足小于 sensor.info.maxFrameDuration 中配置的最大間隔即可。設置大點有利于 CTS 拍照相關測試項的穩定性。

            <scaler.availableStallDurations value="BLOB,2688x1520,33333333,BLOB,1920x1080,33333333,BLOB,1280x960,33333333,BLOB,1280x720,33333333,BLOB,640x480,33333333,BLOB,320x240,33333333,BLOB,176x144,33333333" />
2.2.15?sensor.info.activeArraySize

設置成 sensor 驅動輸出的最大分辨率,可從 sensor 驅動得到。

2.2.16?sensor.info.physicalSize

sensor 物理尺寸,可從模組規格書中得到。與 FOV 計算相關.

2.2.17?sensor.info.pixelArraySize

設置成 sensor 驅動輸出的最大分辨率,可從 sensor 驅動得到。

2.2.18?sensor.orientation

模組的安裝方向,可設置 0,90,180,270。客戶需根據模組在機器上的安裝方向進行調整,需要能通過 CTS verifier 相關項的測試;如果方向有水平或者垂直等鏡像問題,則可能需要調整 sensor 驅動的輸出方向。

2.2.19?flash.info.available

FALSE // 不支持閃光燈
TRUE // 支持閃光燈

2.2.20?supportTuningSize

SOC:不需設置此項
RAW:需要從對應的 IQ 效果文件中獲支持的分辨率,一般來說包括 sensor 的全分辨率和 binning 分辨率。如不設置此項,那么預覽時也會使用 sensor 驅動輸出的最大分辨率。

2.2.21?sensorType

SOC:SENSOR_TYPE_SOC //YUVsensor配置此項,不需要跑3A
RAW:SENSOR_TYPE_RAW // 測試數據流時,可將 RAW 的設置成 SENSOR_TYPE_SOC,只是輸出圖 像無 3A 效果,注意 RAW 攝像頭設置成 SOC 僅僅只用于調試。

2.2.22?statistics.initialSkip

打開 Camera 應用時,預覽前幾幀 3A 未收斂,可能在不同場景下存在前幾幀偏色等情況,通過該選項可設置合適的過濾幀數來避免該現象。

2.2.23?aiq.workingMode

NORMAL:線性模式

HDR2:HDR x2模式

HDR3:HDR x3模式

2.2.24?aiq.multicamera

配置多攝模式

true: 多攝模式

false: 單攝模式

3. 注意點

只是注冊cameraID,主要跟設備名稱與ID相關,此兩項會影響camera的注意,需注意。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/87141.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/87141.shtml
英文地址,請注明出處:http://en.pswp.cn/web/87141.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

使用 Ansys Discovery 為初學者準備幾何結構

介紹 設計幾何體通常會包含一些特征&#xff0c;使其無法直接導入我們的仿真工具&#xff0c;例如 Ansys Mechanical、LS-DYNA、Fluent 等。有些干擾或錯位雖然適合制造&#xff0c;但在我們的仿真工具中卻會造成問題。有時&#xff0c;一些小特征&#xff08;例如孔或圓角&am…

推客系統全棧開發指南:從架構設計到商業化落地

一、推客系統概述 推客系統&#xff08;TuiKe System&#xff09;是一種結合社交網絡與內容分發的創新型平臺&#xff0c;旨在通過用戶間的相互推薦機制實現內容的高效傳播。這類系統通常包含用戶關系管理、內容發布、智能推薦、數據分析等核心模塊&#xff0c;廣泛應用于電商…

大數據開發實戰:如何做企業級的數據服務產品

1.背景 數據服務通常以解決方案的形式進行組織&#xff0c;面向一個應用場景的所有數據需求或數據內容可以通過一個解決方案進行封裝&#xff0c;統一對外服務。一個數據需求或數據接口以一個數據服務實例的形式存在于解決方案之下。 下游消費方可以通過統一API進行數據消費&…

基于IndexTTS的零樣本語音合成

IndexTTS 項目采用模塊化設計&#xff0c;將 BPE 文本編碼、GPT 單元預測、dVAE 語音特征抽取和 BigVGAN 音頻生成串聯為完整的語音合成流程。系統通過統一的配置文件和模型目錄規范&#xff0c;實現高效的文本到語音轉換&#xff0c;支持命令行與 Web 界面雙模式操作&#xff…

基于go-zero的短鏈生成系統

go-zero框架 gozero&#xff08;又稱go-zero&#xff09;是一款由知名開發者kevwan設計的Golang微服務框架&#xff0c;專注于高性能、低延遲和易用性。其核心目標是簡化分布式系統的開發&#xff0c;提供開箱即用的工具鏈&#xff0c;涵蓋API網關、RPC服務、緩存管理、數據庫…

Linux-修改線上MariaDB服務端口號

準備工作&#xff08;很重要&#xff01;&#xff01;&#xff01;&#xff09;&#xff1a; 提前做好Linux服務器快照 提前做好數據庫數據備份 1. 修改配置文件 首先&#xff0c;我們需要找到MariaDB的配置文件。通常情況下&#xff0c;這個文件位于以下位置&#xff1a;…

Spring Cloud 微服務(負載均衡策略深度解析)

&#x1f4cc; 摘要 在微服務架構中&#xff0c;負載均衡是實現高可用、高性能服務調用的關鍵機制之一。Spring Cloud 提供了基于客戶端的負載均衡組件 Ribbon&#xff0c;結合 Feign 和 OpenFeign&#xff0c;實現了服務間的智能路由與流量分配。 本文將深入講解 Spring Clo…

HTML/CSS基礎

1.html:超文本標記語言。它是一種標識性的語言&#xff0c;非編程語言&#xff0c;不能使用邏輯運算。通過標簽將網絡上的文本格式進行統一&#xff0c;使用分散網絡資源鏈接為一個邏輯整體&#xff0c;屬于標記語言。 超文本&#xff1a;就是指頁面內可以包含圖片&#xff0…

C# 事件驅動編程的核心:深度解析發布者_訂閱者模式

適用場景&#xff1a;GUI交互、消息隊列、微服務通信等需要解耦事件生產與消費的系統 &#x1f9e9; 模式核心組件解析 發布者&#xff08;Publisher&#xff09; 作用&#xff1a;定義事件并管理訂閱者列表關鍵行為&#xff1a; 提供和-運算符注冊/注銷訂閱者通過Invoke()方…

華為云Flexus+DeepSeek征文 | 從零開始搭建Dify-LLM應用開發平臺:華為云全流程單機部署實戰教程

華為云FlexusDeepSeek征文 | 從零開始搭建Dify-LLM應用開發平臺&#xff1a;華為云全流程單機部署實戰教程 前言一、華為云Dify-LLM平臺介紹1. Dify-LLM解決方案簡介2. Dify-LLM解決方案地址3. Dify-LLM單機架構介紹4. 預估成本說明 二、華為云Maas平臺介紹1. 華為云ModelArts …

oracle集合三嵌套表(Nested Table)學習

嵌套表 嵌套表(Nested Table)是Oracle中的一種集合數據類型&#xff0c;它允許在表中存儲多值屬性&#xff0c;類似于在表中嵌套另一個表。 嵌套表具有以下特點&#xff1a; 是Oracle對象關系特性的一部分 可以看作是一維數組&#xff0c;沒有最大元素數量限制 存儲在單獨…

Python學習之——單例模式

Python學習之——單例模式 參考1 利用__metaclass__實現單例super的用法class Singleton(type)元類 2 重載__new__方法實現單例模式3 利用裝飾器實現單例考慮一個類如果繼承一個單例類的問題 參考 python之metaclasssingleton&#xff08;一&#xff09; python之metaclasssin…

【Linux】U-boot常用命令總結

U-Boot 是嵌入式系統中常用的引導加載程序&#xff08;bootloader&#xff09;&#xff0c;它提供了一套命令行接口&#xff0c;用于調試、加載操作系統鏡像以及進行硬件測試等操作。 1、變量操作命令 這些命令用于管理 U-Boot 的環境變量。 命令功能說明setenv name value設…

【Linux】不小心又創建了一個root權限賬戶,怎么將它刪除?!

一.前言 今天在學習linux提權的時候&#xff0c;把新建的一個普通賬戶權限提升成了root&#xff0c; 當我練習完提權&#xff0c;想要把這個賬戶刪掉的時候。 發現… 好家伙&#xff0c;這個根本刪不掉 隨后試了各種各樣的方法&#xff0c;都不行&#xff0c;后來突然想到是否…

數據結構:數組(Array)

目錄 什么是數組&#xff08;Array&#xff09;&#xff1f; &#x1f50d;為什么數組的下標要從 0 開始&#xff1f; 一、內存地址與偏移量的關系&#xff1a;從 0 開始是最自然的映射 二、指針的起點就是第 0 個元素的地址 三、歷史原因&#xff1a;BCPL → B → C → …

視頻內存太大怎么壓縮變小一點?視頻壓縮的常用方法

視頻傳生活或者工作中很常見&#xff0c;如發送視頻郵件、在線視頻播放、視頻上傳下載等。未壓縮的大內存視頻文件傳輸時&#xff0c;不僅會消耗大量的網絡帶寬資源&#xff0c;還會使傳輸時間大幅增加。在網速有限的情況下&#xff0c;發送一個幾 GB 的未壓縮視頻可能需要數小…

性能測試包括哪些方面?要掌握哪些知識

性能測試是軟件測試中的一個重要方面&#xff0c;它主要關注軟件在不同條件下的穩定性、可靠性和性能表現。性能測試包括多個方面&#xff0c;需要掌握的知識也相對廣泛。以下是對性能測試包括的方面以及需要掌握的知識分析&#xff1a; 一、性能測試包括的方面 響應時間&…

windows的vscode無法通過ssh連接ubuntu的解決辦法

現象&#xff1a; 最近在windows本地通過vscode登錄ssh時發現不得勁&#xff0c;總是報錯無法與”192.168.1.129“建立連接&#xff0c;如下圖&#xff1a; 但是這種報錯以及在輸出端的信息并沒有提供具體錯誤原因&#xff0c;于是換poweshell來登錄&#xff0c;報錯如下圖&am…

第2章,[標簽 Win32] :Windows 的字符串函數

專欄導航 上一篇&#xff1a;第2章 &#xff1a;兼容 ASCII 字符與寬字符的 Windows 函數調用 回到目錄 下一篇&#xff1a;無 本節前言 在下面的文章鏈接里面&#xff0c;我們談到過&#xff0c;使用兼容版的字符串處理函數的知識。 第2章 &#xff1a;編寫兼容多字節字…

Java的SpringAI+Deepseek大模型實戰-會話記憶【三】

文章目錄 背景項目環境實現步驟第一步、定義會話存儲方式方式一、定義記憶存儲ChatMemory方式二、注入記憶存儲ChatMemory 第二步、配置會話記憶方式一、老版本實現方式二、新版本實現 第三步、添加會話ID 異常處理1、InMemoryChatMemory 無法解析 背景 前兩期搭建起大模型對話…