android中Camera擷取系統支援的情景模式

來源:互聯網
上載者:User

標籤:

     在我們調相機時, 經常有測試提出相機的模型情景模式不支援。下面我們來分析下怎樣看android系統相機的情景模式。我們以MTK的實現為例。


    在底層mediatek/proprietary/custom/mt8127/hal/sendepfeature/ov2680_raw/config.ftbl.ov2680_mipi_raw.h 這個檔案定義的我們的相機支援哪些情景模式

#if 1    //  Scene Mode    FTABLE_CONFIG_AS_TYPE_OF_DEFAULT_VALUES(        KEY_AS_(MtkCameraParameters::KEY_SCENE_MODE),         SCENE_AS_DEFAULT_SCENE(            ITEM_AS_DEFAULT_(MtkCameraParameters::SCENE_MODE_AUTO),             ITEM_AS_VALUES_(                MtkCameraParameters::SCENE_MODE_AUTO, //                MtkCameraParameters::SCENE_MODE_NORMAL,                 MtkCameraParameters::SCENE_MODE_PORTRAIT,                       MtkCameraParameters::SCENE_MODE_LANDSCAPE,                 MtkCameraParameters::SCENE_MODE_NIGHT,                          MtkCameraParameters::SCENE_MODE_NIGHT_PORTRAIT,                 MtkCameraParameters::SCENE_MODE_THEATRE,                        MtkCameraParameters::SCENE_MODE_BEACH,                 MtkCameraParameters::SCENE_MODE_SNOW,                           MtkCameraParameters::SCENE_MODE_SUNSET,                 MtkCameraParameters::SCENE_MODE_STEADYPHOTO,    //                MtkCameraParameters::SCENE_MODE_FIREWORKS,                 MtkCameraParameters::SCENE_MODE_SPORTS,                         MtkCameraParameters::SCENE_MODE_PARTY,                 MtkCameraParameters::SCENE_MODE_CANDLELIGHT, //                MtkCameraParameters::SCENE_MODE_HDR,             )        ),     )#endif

  這個檔案定義的我們的相機支援的哪些情景模式,SCENE_MODE_HDR,, HDR模式, SCENE_MODE_NIGHT夜晚模式........


   有了這個後, android framework會根據這些做相應的處理, 然後傳入到上層, 上層java就可以判斷我們是否能支援該模式,

  在hal層, CameraHardwareInterface.h中

         

status_t initialize(hw_module_t *module){   ......   camera_module_t *cameraModule = reinterpret_cast<camera_module_t *>(module);   camera_info info;   status_t res = cameraModule->get_camera_info(atoi(mName.string()), &info);   ......}

  這裡進行初始化Camera的相關資訊, 我們所需要的情景模式儲存在結構體 camera_info中。

  在CameraService.cpp中getCameraCharacteristics()方法中擷取CameraInfo資訊

status_t CameraService::getCameraCharacteristics(int cameraId,                                                CameraMetadata* cameraInfo) {    if (!cameraInfo) {        ALOGE("%s: cameraInfo is NULL", __FUNCTION__);        return BAD_VALUE;    }    if (!mModule) {        ALOGE("%s: camera hardware module doesn't exist", __FUNCTION__);        return -ENODEV;    }    if (cameraId < 0 || cameraId >= mNumberOfCameras) {        ALOGE("%s: Invalid camera id: %d", __FUNCTION__, cameraId);        return BAD_VALUE;    }    int facing;    status_t ret = OK;    if (mModule->common.module_api_version < CAMERA_MODULE_API_VERSION_2_0 ||            getDeviceVersion(cameraId, &facing) <= CAMERA_DEVICE_API_VERSION_2_1 ) {        /**         * Backwards compatibility mode for old HALs:         * - Convert CameraInfo into static CameraMetadata properties.         * - Retrieve cached CameraParameters for this camera.  If none exist,         *   attempt to open CameraClient and retrieve the CameraParameters.         * - Convert cached CameraParameters into static CameraMetadata         *   properties.         */        ALOGI("%s: Switching to HAL1 shim implementation...", __FUNCTION__);        if ((ret = generateShimMetadata(cameraId, cameraInfo)) != OK) {            return ret;        }    } else {        /**         * Normal HAL 2.1+ codepath.         */        struct camera_info info;        ret = filterGetInfoErrorCode(mModule->get_camera_info(cameraId, &info));        *cameraInfo = info.static_camera_characteristics;    }    return ret;}

   

  

 

android中Camera擷取系統支援的情景模式

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.