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内返回