camera 控制流程


CameraHardwareInterface.h定义了用于实现设定,获取参数,预览,拍照的硬件抽象层接口。CameraHardwareInterface的基类是RefBase。CameraService调用openCameraHardware()方法就能获得一个指向硬件抽象层类的实例的强类型指针,并且

openCameraHardware()方法能够多次被调用来获得多个实例。

 

正常的流程如下:

CameraService调用openCameraHardware()之后,getParameters()和setParameters()将会被调用来初始化camera hardware abstract layer(HAL)实例。CameraService接着调用getPreviewHeap()方法来建立对preview堆内存的访问,接着用SurfaceFlinger来注册这段堆内存,这样在预览的时候就能够更高效率的刷新屏幕。接下来调用startpreview()方法,预览线程被启动,camera HAL在受到底层的一桢完整数据的时候就会发送一个CAMERA_MSG_PREVIEW_FRAME消息,预览线程回接收并处理相应的消息。

拍照的过程也很类似,有拍照的指令下来后,CameraService先调用autofocus()方法,自动对焦线程被启动,再完成自动对焦线程后,camera HAL送出一个CAMERA_MSG_FOCUS消息,自动对焦线程接收这个消息,并做相应的处理。接下来CameraService调用takePicture()方法来实现拍照的动作,takePicture回销毁预览线程同时打开拍照线程,拍照线程调用camera HAL完成拍照动作,拍照线程同样接收并处理Shutter,raw,compressed等消息。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值