国外设计网站app吗昆明优秀网站
国外设计网站app吗,昆明优秀网站,建设银行网站怎么修改手机号码吗,公司商标设计当应用调用CameraManager#openCamera获取到已打开的camera设备后#xff0c;会调用createCaptureSession方法来完成camera stream创建和stream的相关配置。在createCaptureSession方法中#xff0c;首先将应用的surfaces信息封装成可跨binder传递的OutputConfiguration对象会调用createCaptureSession方法来完成camera stream创建和stream的相关配置。在createCaptureSession方法中首先将应用的surfaces信息封装成可跨binder传递的OutputConfiguration对象然后调用createCaptureSessionInternal方法来进行进一步的配置。
在createCaptureSessionInternal方法中主要完成3件事情1检查camera状态和session是否已经创建如果创建则重置session状态2通过configureStreamsChecked方法完成camera stream创建和配置3根据isConstrainedHighSpeed标志位来创建不同的CameraCaptureSession对象然后在session构造函数根据camera stream配置结果通过不同的回调上报session对象和状态。
/frameworks/base/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java /frameworks/base/core/java/android/hardware/camera2/impl/CameraCaptureSessionImpl.java 接下来分析configureStreamsChecked流程。在这个流程中主要完成camera stream命令请求的重置并根据应用传递的camera surface参数重新创建和配置camera stream(input和output)。具体分为以下4件事情1对比本地和当前的configuration差异获取需要移除的camera stream信息2停止并清空底层的camera stream命令请求为下一步重新配置camera stream命令做准备3根据1中获取的结果更新camera stream通路4调用endConfigure完成camera stream的配置。 接下来分析更新camera stream的deleteStream流程。在这个流程中mRemoteDevice通过binder调用到CameraDeviceClient#deleteStream方法中主要完成2件事情1更新本地列表中缓存的camera stream信息移除streamId对应的camera stream2调用Camera3Device#deleteStream查找本地camera stream列表中id对应的deletedStream然后调用deletedStream#disconnect最终调用到Camera3OutputStream#disconnectLocked来完成surface连接并移除deletedStream本地记录。
/frameworks/av/service/camera/libcameraservice/api2/CameraDeviceClient.cpp /frameworks/av/service/camera/libcameraservice/device3/Camera3Device.cpp
/frameworks/av/service/camera/libcameraservice/device3/Camera3OutputStream.cpp
接着分析更新camera stream的createStream流程。在这个流程中mRemoteDevice通过binder调用到CameraDeviceClient#createStream方法中主要完成4件事情1检查应用pid状态、surface及stream之间的对应关系限制和camera physical id的合法性2检查createStream方法中的参数outputConfiguration对应的buffer producer是否已经创建调用createSurfaceFromGbp方法创建最匹配outputConfiguration参数对应的camera surface并保存到本地。3检查需要创建的camera stream属性调用Camera3Device#createStream完成camera stream的创建保存camera stream id对应的outputConfiguration信息和创建的surface4调用setStreamTransformLocked来完成camera stream相关的方向变换将camera stream id返回给framework。
/frameworks/av/service/camera/libcameraservice/api2/CameraDeviceClient.cpp /frameworks/av/service/camera/libcameraservice/utils/SessionConfigurationUtils.cpp /frameworks/av/service/camera/libcameraservice/utils/SessionConfigurationUtils.cpp /frameworks/av/service/camera/libcameraservice/device3/Camera3Device.cpp 当camera stream创建完成后mRemoteDevice#endConfigure方法通过binder调用到CameraDeviceClient#endConfigure最终通过Camera3Device# configureStreams来完成camera stream的配置。在configureStreams方法中通过filterParamsAndConfigureLocked获取默认session参数并最终调用configureStreamsLocked来完成camera stream配置。在configureStreamsLocked方法中首先暂停Camera3Device中的PreparerThread然后调用inputStream/outputStream#startConfiguration获取到已经创建的camera stream配置camera_stream_configuration参数接着调用mInterface#configureStreams通过之前创建好的cameraDeviceSession完成hal层的camera stream配置然后再调用inputStream/outputStream#finishConfiguration并最终通过Camera3OutputStream# configureConsumerQueueLocked来完成camera stream中surface参数的初始化配置最后启动Camera3Device中的PreparerThread循环等待mPendingStreams中stream并执行buffer申请。至此createCaptureSession流程分析完成framework完成CameraCaptureSession的创建native/hal层完成stream的创建和配置并启动PreparerThread等待进一步的初始化流程。
/frameworks/av/service/camera/libcameraservice/device3/Camera3Device.cpp /frameworks/av/service/camera/libcameraservice/device3/Camera3Device.cpp /hardware/interfaces/camera/device/3.2/default/CameraDeviceSession.cpp /frameworks/av/service/camera/libcameraservice/device3/Camera3OutputStream.cpp /frameworks/av/service/camera/libcameraservice/device3/Camera3Device.cpp
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/88971.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!