共计 1786 个字符,预计需要花费 5 分钟才能阅读完成。
Camera 提出的 HAL3 接口,其中包含一系列操作主体的构造体以及具体操作函数。
1)外围构造体
HAL3 次要定义 camera_module_t、camera3_device_t、camera3_stream_configuration、camera_stream 以及 camera3_stream_buffer 这几个次要构造体.
camera_module_t: 次要用于示意 Camera 模块
camera_device_t: 次要用来示意 Camera 设施,其中定义了 Camera3_device_ops 操作汇合,用来实现失常获取图像数据以及管制 Camera 的性能。
camera3_stream_configuration: 该构造体次要用来代表配置的数据流列表,外部装有下层须要进行配置的数据流的指针。
camera3_stream_t: 次要用来代表具体的数据流实体。在整个配置过程中,须要在下层进行填充,当下发到 HAL 中后,HAL 会针对其中的各项属性进行配置。
camera3_stream_buffer_t: 次要用来代表具体的 buffer 对象
2) 外围接口函数
HAL3 的外围接口都是在 camera3_device_ops 中被定义。
camera3_device_ops 构造体定义了一系列的函数指针,用来指向平台厂商理论的实现办法。——> 此一系列办法是下层间接对上层管制 Camera Hal
1.initialize
何时被调用:在 camera_modul_t 中的 open 办法之后,其余 camera3_device_ops 办法之前被调用。
次要作用:将下层实现的回调办法注册到 HAL 中,并依据须要在该办法中退出自定义的一些初始化操作。
返回工夫:在 5ms 内返回,最长不能超过 10ms。
2.configure_streams
何时被调用:在 Initialize 办法实现之后,在调用 process_capture_request 办法之前被调用
次要作用:重设以后正在运行的 Pipeline 以及设执行的输入输出流,其中它回见 stream_list 中的新的数据流替换之前配置的数据流。
返回工夫:500ms 内返回,最长不能超过 1000ms。
3.construct_default_request_settings
次要作用:构建一系列默认的 Camera Usecase 的 capture 设置项。通过 camera_medata_t 来进行形容,其中返回值是一个 camera_metadata_t 指针,其指向的内存地址是有 HAL 来进行保护。
返回工夫:1ms 内返回,最长不超过 5ms
4.process_capture_request
次要作用:下发单次新的 capture request 到 HAL 中,下层必须保障该办法的调用都是在一个线程中实现,而且该办法是异步的,其后果是通过 HAL 调用另一个接口 process-capture_result()来返回后果给下层,在应用过程中,通过
in-flight 机制,保障短时间内下发足够多的 requst,从而满足帧率要求。
5.dump
次要作用:打印以后 Camera 设施的状态
原理: 下层通过 dumosys 工具输入 debug dump 信息或被动抓取 bugreport 的时候被调用,该办法必须是非阻塞实现。
返回工夫:保障 1ms 内返回,最长不能超过 10ms。
6.flush
何时调用:下层执行新的 configure_strams 的时候,且调用该办法时需革除以后曾经在解决的或者行将解决的工作,为配置数据流提供绝对稳固的环境。
次要作用:所有的还在流转 derequest 会尽快返回;并未开始进行流转的 request 会间接返回,并携带错误信息;任何能够打断的硬件操作会立刻被进行;任何无奈进行打断的硬件操作在以后状态下进行休眠
什么时候返回:flush 会在所有 buffer 都得已开释,所有 request 都返回胜利才真正返回。
返回工夫:在 100ms 内返回,最长不超过 1000ms。
camera3_callback_ops 构造体中定义的回调办法将数据或者事件返回至下层。
1.process_capture_result
次要作用:返回 HAL 局部产生的 metadata 和 image buffers。
返回工夫:在 5ms 内返回。
2,notify
次要作用:异步返回 HAL 事件到下层,必须非阻塞实现
返回工夫:要在 5ms 内返回