和你一起终身学习,这里是程序员android
经典好文推荐,通过阅读本文,您将收获以下知识点:
一、in-sensor zoom 概述
insensor zoom 不仅需要高通平台支持,而且需要camera sensor 模组支持(需要跟sensor fae 确认)。
与正常的zoom 对比,insensor zoom 使用full remosaic size mode 替换1/4 binng mode, 当zoom > 2x, sensor crop输出2x zoom.
二、如何开启 in-sensor zoom
2.1 开启 camxsettings.xml setting
vendor/qcom/proprietary/camx-common/settings/common/camxsettings.xml
设置 enable in sensor zoom defaultvalue
<setting>
<name>enable in sensor zoom</name>
<help>settings to enable in sensor zoom</help>
<variablename>enableinsensorzoom</variablename>
<variabletype>bool</variabletype>
<setpropkey>vendor.debug.camera.enableinsensorzoom</setpropkey>
// 设置 enable in sensor zoom defaultvalue
<defaultvalue>true</defaultvalue>
<dynamic>false</dynamic>
<public>true</public>
</setting>
2.2 多摄像头,需要添加特殊的逻辑
oem/qcom/multicamera/chimcxcameraconfig/configs/netrani/netrani.xml
配置 sensormode group id 是否否支持 insensor zoom 1 支持 、0 不支持
<!-- transition modes ============================================================== ====================-->
<transitionmode id="0" sensormodegroupid="0" skiprate="0" physicaldeviceref="ultrawidephysicalcam" />
<transitionmode id="1" sensormodegroupid="0" skiprate="0" physicaldeviceref="widephysicalcam" />
<transitionmode id="2" sensormodegroupid="0" skiprate="0" physicaldeviceref="telephysicalcam" />
<transitionmode id="3" sensormodegroupid="1" skiprate="0" physicaldeviceref="widephysicalcam" />
<transitionmode id="4" sensormodegroupid="1" skiprate="0" physicaldeviceref="telephysicalcam" />
<!-- transition tables ==================================================================================-->
2.3 在 metatransitiontable 配置 sensormodegroupid 的范围
<metatransitiontable id="2" metadata="zoomratio" type="float">
<transition activerangestart="0.6" activerangeend="0.9999" hysteresisminfactor="0.0" hysteresismaxfactor="0.0" transition_modes="(0)"/>
<transition activerangestart="1.0" activerangeend="1.9999" hysteresisminfactor="0.0" hysteresismaxfactor="0.0" transition_modes="(1)"/>
<transition activerangestart="2.0" activerangeend="2.9999" hysteresisminfactor="0.0" hysteresismaxfactor="0.0" transition_modes="(3)"/>
<transition activerangestart="3.0" activerangeend="6.0999" hysteresisminfactor="0.0" hysteresismaxfactor="0.0" transition_modes="(2)"/>
<transition activerangestart="6.1" activerangeend="120.01" hysteresisminfactor="0.0" hysteresismaxfactor="0.0" transition_modes="(4)"/>
</metatransitiontable>
2.4 在sensor.xml 中设置兼容性 insensorzoom
找fae 要sensor fae 要一组 支持remosaic 的insensor zoom 的 resolution
<!--res5 4624x3472_30fps for qcfa insensorzoom mode with remosaic enable -->
<!--frame dimension: contains xstart, ystart, width and height -->
<framedimension>
<xstart> </xstart>
<ystart> </ystart>
<width>4624</width>
<height>3472</height>
</framedimension>
<!--list of features / capabilities supported by sensor -->
<capability>insensorzoom</capability>
<transitiongroups>bincrop43 bincrop169</transitiongroups>
<remosaictypeinfo>noremosaic</remosaictypeinfo>
2.5 insensor zoom log
log 关键字:setinsensorzoominfo|publishperframesensormetadata .*resid|applysensorupdate
benableinsensorzoommode: 1 表示成功开启insensor zooom
触发insensorroom 后 会切换对应的senmode 的resolution(比如:从 mode 1-->mode 5 benableinsensorzoommode: 1 )
benableinsensorzoommode: 1
01-01 18:53:41.468933 1501 11723 i chiusecase: [core_cfg ] chifeature2graphselector.cpp:7391 setinsensorzoominfo() [insensorzoom] cameraid:0 benableinsensorzoommode: 0zoomstatuschanged = 0 requested zoomstate: 1 m_insensorzoominfo.zoomstate 1 appframeindex 91 size 3
01-01 18:53:41.469350 1501 11723 i chiusecase: [core_cfg ] chifeature2graphselector.cpp:7391 setinsensorzoominfo() [insensorzoom] cameraid:3 benableinsensorzoommode: 1zoomstatuschanged = 0 requested zoomstate: 2 m_insensorzoominfo.zoomstate 2 appframeindex 91 size 3
mode 1-->mode 5
01-01 18:53:28.041499 1501 3338 i camx : [core_cfg][sensor ] camxsensornode.cpp:2266 publishperframesensormetadata() sensor[3] appliedgains: reqid[11],... ... resid 1, contexttypeid: 0
01-01 18:53:28.185560 1501 3339 i camx : [core_cfg][sensor ] camxsensornode.cpp:2266 publishperframesensormetadata() sensor[3] appliedgains: reqid[12],... ... resid 1, contexttypeid: 0
01-01 18:53:28.293122 1501 3341 i camx : [core_cfg][sensor ] camxsensornode.cpp:2266 publishperframesensormetadata() sensor[3] appliedgains: reqid[13],... ... resid 1, contexttypeid: 0
01-01 18:53:28.440977 1501 3341 i camx : [core_cfg][sensor ] camxsensornode.cpp:2266 publishperframesensormetadata() sensor[3] appliedgains: reqid[14],... ... resid 1, contexttypeid: 0
01-01 18:53:28.775161 1501 3
参考文献:
【腾讯文档】camera学习知识库
https://docs.qq.com/doc/dswz6dulnemtuwndv
至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!
点击阅读原文,为大佬点赞!
发表评论