mtk camera configureStreams 流程

837eeb7cd1a81148a12b110585bbeddc.gif

和你一起终身学习,这里是程序员Android

经典好文推荐,通过阅读本文,您将收获以下知识点:

一、camera configureStreams 流程
二、Log 分析

一、camera configureStreams 流程

1.1 相机api简述

as we all know Android Camera API的 步骤

(1)、监听和枚举相机设备

get_number_of_cameras、get_camera_characteristic

(2)、打开设备并连接监听器

connect、open

(3)、配置目标使用情形的输出(如static 、capture、video等)

configure_stream

(4)、为目标使用情形创建请求  (5)捕获/重复请求和连拍

process_capture_request

(6) 、接受结果metadata和图片数据

proces_capture_result

(7)、切换使用情形时,返回第三步
1.2 原文阅读

The framework calls camera3_device_t->ops->configure_streams() with a list * of input/output streams to the HAL device.

简单翻译-->

framework调用结构体camera_device方法ops调用结构体camera3_device_ops的configure_streams方法配流,camera3_device_t-> ops-> configure_streams(),并把input stream&output stream 的列表作为参数送到Hal层。

1.3 结构体

hardware/libhardware/include/hardware/camera3.h

camera3_device_ops_t 映射函数指针操作: hardware/libhardware/modules/camera/3_0/Camera.cpp

1.4 代码流程

hardware/interfaces/camera/device/3.2/default/CameraDeviceSession.cpp

Return<void> CameraDeviceSession::configureStreams(
        const StreamConfiguration& requestedConfiguration,
        ICameraDeviceSession::configureStreams_cb _hidl_cb)  {
    Status status = initStatus();
    HalStreamConfiguration outStreams;

    ATRACE_BEGIN("camera3->configure_streams");
    status_t ret = mDevice->ops->configure_streams(mDevice, &stream_list);
    ATRACE_END();
}

frameworks/av/services/camera/libcameraservice/device3/Camera3Device.cpp

status_t Camera3Device::configureStreamsLocked(int operatingMode,
        const CameraMetadata& sessionParams, bool notifyRequestThread) {
   

    //配流开始log
    ALOGV("%s: Camera %s: Starting stream configuration", __FUNCTION__, mId.string());

  略...

    //创建buffer

    const camera_metadata_t *sessionBuffer = sessionParams.getAndLock();
    res = mInterface->configureStreams(sessionBuffer, &config, bufferSizes);

   //这里还有重新配流的代码,省略

  // Update device state
    const camera_metadata_t *newSessionParams = sessionParams.getAndLock();
       省略部分代码

    ALOGV("%s: Camera %s: Stream configuration complete", __FUNCTION__, mId.string());

    // tear down the deleted streams after configure streams.
    mDeletedStreams.clear();

    return OK;
}

status_t Camera3Device::HalInterface::configureStreams(const camera_metadata_t *sessionParams,
        camera3_stream_configuration *config, const std::vector<uint32_t>& bufferSizes) {
    ATRACE_NAME("CameraHal::confi
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员Android

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值