camera API的详细步骤
1 Framework层调用函数camera_module_t->common.open(),将返回一个hardware_device_t类型的结构体。
2 Framework层检查字段hardware_device_t->version,根据版本信息,实例化一个适合这个版本的camera硬件设备的句柄。例如版本号是CAMERA_DEVICE_API_VERSION_3_0,则这个设备将被转化为camera3_device_t。
3 Framework层调用函数camera3_device_t->ops->initialize(),并传递了framework层的回调函数指针。这个函数只能被调用一次,且在调用函数open()之后,在其他函数被调用之前。
4 Framework层调用函数camera3_device_t->ops->configure_streams(),向这个HAL层设备传递了输入输出的流信息。
/*
configure_stream 就是为了打道整个相机数据流的通道,为后续的数据
流通做准备.而它的主要过程如下:
(先依据流配置选择对应的usecase,如果为选到区创建,然后依据usecaseid选择
对应的feature,确定feature后,根据pstreamconfig,配置stream,并去创建usease对象
在其创建的过程中确定featurepipelinecount.并使cameraid和 sessionid 映射到
pipeline.完成映射后为每条pipeline注时回调,然后开始创建 pipeline.
完成后去创建rescriptor,在创建描述符的过程中创建 node,并完成初始化
当pipeline创建完成后.根据管道深度创建session.并在过程中创建并初始化
request队列ÿ