MTK 人像雙攝虛化導通guide

和你一起終身學習,這裏是程序員 Android

經典好文推薦,通過閱讀本文,您將收穫以下知識點:

一、 創建 LogicalCameraName 相關的metadata
二、 導通 LogicalCameraName Middleware 相關配置
三、認 LogicalCameraName 是否創建成功
四、雙攝bringup LogicalCameraDevice 導通參考

一、 創建 LogicalCameraName 相關的metadata

1.1 LogicalCameraName 文件夾命名規則

主攝_FeatureName

例如:(主攝_bayerwide, 主攝_bayertele, 主攝_bayerbayer, 主攝_bayermono)

預設單攝對應的metadata 已經存在並導通,將主攝(比如:SENSOR_DRVNAME_S5K_MIPI_RAW)的 metadata文件夾 copy 一份;
修改主攝文件夾名爲LogicalCameraName;
比如:vendor\mediatek\proprietary\custom\mt**\hal\imgsensor_metadata\S5K_mipi_raw_bayermono

修改創建 LogicalCameraName 文件夾中的metadata文件中 STATIC_METADATA2_BEGIN 後面的主攝的name 修改爲LogicalCameraName;
比如:

$grep "S5K" -ri .
./config_static_metadata.lens.S5Kmipiraw.h:STATIC_METADATA2_BEGIN(PLATFORM, LENS, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata.module.S5Kmipiraw.h:STATIC_METADATA2_BEGIN(PLATFORM, MODULE, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata.module.S5Kmipiraw.h:STATIC_METADATA2_BEGIN(PLATFORM, MOD_OVERWRITE, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata_availableKeys.h:STATIC_METADATA2_BEGIN(PLATFORM, AVAILABLE_KEYS, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata_custom.h:STATIC_METADATA2_BEGIN(PLATFORM, CUSTOM, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata_project.h:STATIC_METADATA2_BEGIN(PLATFORM, PROJECT, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata_project.h:STATIC_METADATA2_BEGIN(PLATFORM, PRO_OVERWRITE, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
./config_static_metadata_vendor.h:STATIC_METADATA2_BEGIN(PLATFORM, VENDOR, SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
1.2 LogicalCamera Size 修改

LogicalCamera Size相關:config_static_metadata_custom.h

    後置人像尺寸:
    CONFIG_METADATA_BEGIN(android_TUNNING_BACK_PORTRAIT_NORMAL_PICTURE_SIZE)
        CONFIG_ENTRY_VALUE(4160, MINT32)
        CONFIG_ENTRY_VALUE(3120, MINT32)
    CONFIG_METADATA_END()
    /主副攝照片尺寸
    CONFIG_METADATA_BEGIN(android_CONTROL_BOKEH_PICTURE_SIZE)
        CONFIG_ENTRY_VALUE(4160 , MINT32)
        CONFIG_ENTRY_VALUE(3120 , MINT32)
        CONFIG_ENTRY_VALUE(1600 , MINT32)
        CONFIG_ENTRY_VALUE(1200 , MINT32)
    CONFIG_METADATA_END()

二、 導通 LogicalCameraName Middleware 相關配置

Multicamra custom stereo Setting middleware 配置路徑:

alps/vendor/mediatek/proprietary/custom/mt**/hal/camera/camera_custom_stereo_setting.h

主攝Name ,副攝Name ,LogicalCameraName(主攝_FeatureName)添加到camera_custom_stereo_setting.h中。
注意:主攝Name ,副攝Name ,LogicalCameraName 需要跟meatdata文件夾中的保持一致。

2.1 配置舉例如下:
  //主攝Name
        "{"
            "\"Name\": \"S5K_MIPI_RAW\","
            "\"Capture Size\": {" //實際雙攝圖片的最終輸出大小。
                "\"4:3\": ["
                    "\"4160x3120\""
                "],"
                "\"16:9\": ["
                    "\"4160x2340\""
                "]"
            "},"
            "\"IMGOYUV Size\": {" //在有Fov Crop 的情況下,不能配置爲Sensor full size,建議比full size 小,或者配置FOV crop的值
                "\"4:3\": \"4160x3120\","
                "\"16:9\": \"4160x2340\""
            "},"
            "\"RRZOYUV Size\": {" //一般配置跟預覽size 相等或者稍大,如果IMGOYUV Size的二分之一比預覽size 大的話,也可以配置爲IMGOYUV Size的二分之一。
                "\"4:3\": \"2080x1560\","
                "\"16:9\": \"2080x1170\""
            "},"
            "\"SensorScenarioZSD\": {" //人像對應的是VSDoF, 對應的Sensor Settings的Sensormode 是Custom1
                "\"VSDoF\": \"custom1\","
                "\"3rdParty\": \"custom1\","
                "\"Zoom\": \"custom1\","
                "\"MtkDepthmap\": \"custom1\","
                "\"Multicam\": \"custom1\""
            "},"
            "\"SensorScenarioRecording\": {"
                "\"VSDoF\": \"Video\","
                "\"3rdParty\": \"custom1\","
                "\"MtkDepthmap\": \"custom1\""
            "},"
            "\"FOV\": {"
                "\"H\": 69.0,"
                "\"V\": 54.4"
            "},"
            "\"Calibration\": {"  
                "\"Macro Distance\": 80,"
                "\"Infinite Distance\": 5000"  // 標定距離遠處 50cm
            "
  }
  //,副攝Name
  "{"
            "\"Name\": \"SC20_MIPI_RAW\","
            "\"Capture Size\": {"
                "\"4:3\": ["
    ... ...
        }
  //,LogicalCameraName
  "{"
   "\"Logical Device\":{"
    "\"Name\": \"bayermono\","
    "\"Features\": [\"VSDoF\"]"
   "},"
   "\"Sensors\": [ \"S5K_MIPI_RAW\", \"SC20_MIPI_RAW\"],"
   "\"Depth Flow\": \"MtkDepthmap\","
   "\"Module Type\": 2,"
   "\"Baseline\": 1.82,"  //主副攝Sensor 中心距離
   "\"FOV Crop\": {"
    "\"Disable Crop\": 1" //如果副攝FOV可以 cover 到主攝FOV 就不需要做Crop,配置爲Disable Crop,否則配置爲 Center Crop
   "},"
   "\"Depthmap Size\": {"
    "\"4:3\": \"480x360\","
    "\"16:9\": \"480x272\""
   "},"
   "\"LDC\": [\"0\"]"
  }
2.3 部分名詞解釋

Caputre Size:實際雙攝圖片的最終輸出大小。
IMGOYUV Size:在有Fov Crop 的情況下,不能配置爲Sensor full size,建議比full size 小,或者配置FOV crop的值。
RRZOYUV Size:一般配置跟預覽size 相等或者稍大,如果IMGOYUV Size的二分之一比預覽size 大的話,也可以配置爲IMGOYUV Size的二分之一。
SensorScenaricZSD:人像對應的是VSDoF, 對應的Sensor Settings的Sensormode 是Custom1 ,詳細請看下面舉例。
FOV : 市場角,規格說明書中有H/V 或者D兩種表達
Calibration: 標定距離遠處 50cm

Baseline: 主副攝Sensor 中心距離,涉及到標定。
FOV Crop: 如果副攝FOV可以 cover 到主攝FOV 就不需要做Crop,配置爲Disable Crop,否則配置爲 Center Crop

2.4 Sensormode 客製化舉例

修改S5K_mipi_raw 客製化sensormode 爲custom1
比如:在下面文件中添加custom1
\kernel-4.14\drivers\misc\mediatek\imgsensor\src\mt**\camera_project\k6833v1_64\S5K_mipi_raw

    .custom1 = {
        .pclk = 480000000,              //record different mode's pclk
        .linelength  = 4896,                //record different mode's linelength
        .framelength = 4084,            //record different mode's framelength
        .startx = 0,                    //record different mode's startx of grabwindow
        .starty = 0,                    //record different mode's starty of grabwindow
        .grabwindow_width  = 4160,      //record different mode's width of grabwindow
        .grabwindow_height = 3120,      //record different mode's height of grabwindow
        /*   following for MIPIDataLowPwr2HighSpeedSettleDelayCount by different scenario   */
        .mipi_data_lp2hs_settle_dc = 85,
        /*   following for GetDefaultFramerateByScenario()  */
        .max_framerate = 240,
        .mipi_pixel_rate = 454400000,
    },

三、認 LogicalCameraName 是否創建成功

抓開機Log(boot_normal的main log) 確認 LogicalCameraName 是否創建成功

3.1 打開logD命令抓取開啓log方式:
 adb root
 adb shell setenforce 0
 adb shell setprop persist.vendor.mtk.camera.log_level 3
 adb shell setprop persist.vendor.debug.camera.log 3
 adb shell pkill camerahalserver
 adb shell pkill cameraserver
3.2 Log 關鍵字:

LogicalDevice|Logical Device Name|addLogicalDevice|queryDriverName
or
LogicalDevice: Sensor #|addLogicalDevice|queryDriverName] queryDriverName

  // LogicalCameraName 名稱 bayermono,包含的物理主副攝 Sensor 名,Feature:vsdof 
  01-01 04:35:58.196228 26609 26609 D MtkCam/Util/LogicalDevice: Logical Device Name: bayermono
  01-01 04:35:58.196262 26609 26609 D MtkCam/Util/LogicalDevice: Sensor #0: S5K_MIPI_RAW(ID: 0)
  01-01 04:35:58.196278 26609 26609 D MtkCam/Util/LogicalDevice: Sensor #1: SC20_MIPI_RAW(ID: 2)
  01-01 04:35:58.196296 26609 26609 D MtkCam/Util/LogicalDevice: vsdof   //對應的Feature 是vsdof 虛化
  01-01 04:35:58.196312 26609 26609 D MtkCam/Util/LogicalDevice: --------------- 
  ... ...
        //成功添加 Logical camera SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono 並查詢index 爲3
  01-01 04:35:58.198808 26609 26609 D MtkCam/Util/LogicalDevice: (26609)[addLogicalDevice] query static metadata for multi-cam (SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono)
  01-01 04:35:58.226454 26609 26609 I MtkCam/Util/LogicalDevice: (26609)[addLogicalDevice] add new logic device: SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono
  01-01 04:35:59.019505 26609 26609 D MtkCam/Util/LogicalDevice: (26609)[queryDriverName] queryDriverName index : 3
  01-01 04:35:59.019530 26609 26609 D MtkCam/Util/LogicalDevice: (26609)[queryDriverName] queryDriverName : SENSOR_DRVNAME_S5K_MIPI_RAW_bayermono
  
  01-01 04:45:12.691179 11172 11855 I CameraService: CameraService::connect call (PID -1 "com.android.camera", camera ID 3) and Camera API version 2
  

四、雙攝bringup LogicalCameraDevice 導通參考

  • 004_ISP7_Multi-Camera(SAT,VSDOF).pdf
  • ISP7_How_to_use_custom_setting_file.pdf
  • VSdof :Video Shallow Depth of Field 視頻淺景深
  • SAT: Spatial Alignment Transform 光變切換(空間對齊變換)
  • PIP: Picture in Picture 畫中畫(雙景錄像)

至此,本篇已結束。轉載網絡的文章,小編覺得很優秀,歡迎點擊閱讀原文,支持原創作者,如有侵權,懇請聯繫小編刪除,歡迎您的建議與指正。同時期待您的關注,感謝您的閱讀,謝謝!

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