1.Camera Hal3数据流程通路
2.open流程(黑色箭头线条)
CameraManager注册AvailabiltyCallback回调,用于接收相机设备的可用性状态变更的通知。
CameraManager通过调用getCameraldList()来获取当前可用的Camera id,通过
getCameraCharacteristcs() 函数获取指定相机设备的特性。
CameraManager调用openCamera()打开指定相机设备,并返回一个CameraDevice对象,后续
通过该CameraDevice对象操作具体的相机设备。
使用CameraDevice对象的createCaptureSession创建一个session,数据请求(预览,拍照等)
都是通过session进行,在创建session时,需要surface作为参数,用于接收返回的对象。
3.configurestream流程(蓝色箭头线条)
申请Surfuace,如上图的OUTPUT STRAMS DESTINATIONS框,用于在创建surface是作为
参数,接收session返回的图像。
创建session后,surface会被设置成框架的stream,在框架中,strram定义了图像的size及
format。每个request都需要携带target surface用于返回的图像是归属到那个被configure的
strram的。
4.request处理流程(橙色箭头线条)
CameraDevice对象createCaptureRequest()来创建request,每个requesr都需要有surface
和settings(settings就是matada,request包含的所有配置信息都是放在matada中的)。
使用session的capture(),captureBurst(),setStreamRequest(),setStreamingBurst()等AP
都可以将request发送到框架。
预览的request,通过setStreamRequest(),setStreamingBurst()发送,仅调用一次。
拍照的requser,通过capture(),captureBurst()发送,每次拍照都会调用。
拍照每次触发,都会直接将request入到pending requesr queue里面,所以拍照的request比
预览的request的优先级高。
5.callback数据返回流程(紫色箭头线条)
硬件层面返回的数据会放到reslit里面返回,会通过session的capture callback回调响应。