关于camera:某些平台抄袭我自己写文章
某平台是真的恶心,我前两篇文章写完,他们就当天转载是真的恶心到我了,齐全复制粘贴而后谬误还是截然不同还在文章的最初注明本人的版权,我不打算写对于CamX-CHI框架文章了。
某平台是真的恶心,我前两篇文章写完,他们就当天转载是真的恶心到我了,齐全复制粘贴而后谬误还是截然不同还在文章的最初注明本人的版权,我不打算写对于CamX-CHI框架文章了。
CamX-CHI 根本架构与根本组件的概念CamX-CHI根本架构 模块间的通信Camera Provider<Main>与CamX之间的通信:通过Camera HAL3接口实现相互沟通。CamX与CHI之间的通信:通过相互dlopen so库和获取对方的操作接口并将本身的本地的操作方法中的函数地址赋值给回调函数/构造体中的每一个函数指针。Camera provider与kenet/Driver之间的通信:通过Camera Provider的CamX中的csl专门与Camera Driver通信的模块建设连贯。 目录性能的论述CamX中的目录Core分为hal与chi目录:寄存CamX的外围实现模块 hal/:实现hal3接口的hal/目录chi/:负责CHI进行交互的chi/目录hwl/:寄存本身算法具备独立运算能力的硬件node---受到csl治理swl/:寄存并不具备独立运算能力,必须依附CPU能力实现的nodecsl/:负责camx与camera driver的通信模块,为camx提供了对立的Camera driver管制接口CHI中的目录chioverride/:寄存CHI实现的外围模块,负责与Camx进行交互并且实现了CHI的总体框架以及业务解决bin/:寄存平台相干的配置信息。topolog/:寄存用户自定义的Usecase xml配置信息node/:寄存用户自定义性能的nodemodule/:寄存不同的sensor的配置文件,在初始化sensor时候须要用到。tuning/:寄存不同场景下的成果参数的配置文件。sensor/:寄存不同sensor的只有信息以及寄存器配置参数actuator/:寄存不同对焦模块的配置信息。ois/:寄存防抖模块的配置信息。flash/:寄存闪光灯模块的配置信息。eeprom/:寄存eeprom内部存储模块的配置信息。fd/:寄存人脸识别模块的配置信息。 根本组件组件的基本概念1)Usecase:负责了CHI中的业务解决以及资源管理。2)Feature:代表一个特定的性能。3)Session:用于治理pipeline的形象管制单元,其中至多蕴含一个pipeline,并管制着所有的硬件资源,管控着每个pipeline外部的request流转以及数据的输入输出。4)Pipeline:提供繁多特定性能的所有资源汇合,保护着所有硬件资源以及数据的流转,负责整条pipeline的软硬件资源的保护以及业务逻辑的解决。5)Node:单个具备独立11解决性能的形象模块,能够是软件单元也能够是硬件单元。6)Link:定义不同的Port的连贯端口--输出端口:<SrcPort>,输入端口:<DstPort>。7)Port:作为Node的输入输出端口--应用OutputPort以及InputPort构造定义XML文件。 组件之间的关系
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 Hal1.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内返回,最长不超过5ms4.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内返回