Camera API1 相機參數設置流程二 hardware層

HAL 

Android P 中 相機 HAL 代碼目錄:

  • Android Camera parameters

hardware/interfaces/camera/common/1.0/default/CameraParameters.cpp

  • MTK Camera parameters

vendor/mediatek/proprietary/hardware/mtkcam/utils/fwk/CameraParameters.cpp

vendor/mediatek/proprietary/hardware/mtkcam/utils/fwk/MtkCameraParameters.cpp

 

主要分析 MTK 平臺

MTK 平臺使用 MTK Camera HAL ,拓展平臺的 Camera 功能。

  • MTK Camera HAL 目錄

vendor/mediatek/proprietary/hardware/mtkcam  

vendor/mediatek/proprietary/hardware/mtkcam3

 

通過打印信息和代碼跳轉可知,

vendor/mediatek/proprietary/hardware/mtkcam/main/hal/device/1.x/device/CameraDevice1Base.cpp

Return<Status> CameraDevice1Base::setParameters(const hidl_string& params)

 

用 grep 搜索查到

vendor/mediatek/proprietary/hardware/mtkcam/middleware/v1/common/paramsmgr/params/ParamsManager.cpp

發送 CameraParameters

 

vendor/mediatek/proprietary/hardware/mtkcam/utils/fwk/CameraParameters.cpp

是不是很熟悉下圖代碼中的成員函數: flatten , unflatten , set , get  , 和framework 中 CameraParameters2.cpp、 Camera.java  函數命名規則類似。

 

在Android 源碼中搜索 setParameters  metadata CameraId 等,根據經驗定位到如下文件:

不分析定位代碼的過程,這裏給出部分文件的索引,感興趣的朋友可查閱源碼。

vendor/mediatek/proprietary/hardware/mtkcam/middleware/v1/adapter/Default/v3/DefaultAdapter.Param.cpp

vendor/mediatek/proprietary/hardware/mtkcam/middleware/v1/LegacyPipeline/request/RequestControllerImp.cpp

vendor/mediatek/proprietary/hardware/mtkcam/utils/metastore/metadataprovider/MetadataProvider.cpp

vendor/mediatek/proprietary/hardware/mtkcam/utils/LogicalCam/HalLogicalDeviceList.cpp

根據上述代碼的 pHalDeviceList 定位到 HalLogicalDeviceList

/vendor/mediatek/proprietary/hardware/mtkcam/utils/LogicalCam/HalLogicalDeviceList.cpp

在下圖的名字中可知管理相機設備(邏輯)列表。

查閱代碼繼續定位到

vendor/mediatek/proprietary/hardware/mtkcam/drv/src/sensor/mtxxxx/imgsensor_drv.cpp

熟悉linux的朋友從如下代碼中的 open close  ioctl 可知進入linux 用戶空間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章