【Android Camera】之 Preview

本文详细介绍了Android Camera预览数据的获取过程,包括通过V4L2从硬件驱动获取数据,以及通过Overlay和Surface两种方式显示预览数据。讨论了Overlay在硬件支持下的实现,以及使用Surface进行预览数据注册。还分析了Preview数据回调的优化,特别是如何避免频繁分配和释放ByteArray以提高性能。
摘要由CSDN通过智能技术生成

 Preview data Preview callback


 

  Android Camera小系统:

 Android Camera

 

       嗯……直接看Camera HAL层,它实现是主要的工作, 它一般通过ioctl调用V4L2 command 从linux kernel中的camera driver得到preview数据. 然后交给surface(或overlay)显示或者保存为文件.在HAL层需要打开对应的设备文件,并通过ioctrl访问camera driver. Android通过这个HAL层来保证底层硬件(驱动)改变,只需修改对应的HAL层代码,FrameWork层与JAVA Ap的都不用改变.

      注释:①V4L2(video 4 linux 2)

      备注:①这个驱动并不是camera本身而是控制camera的主设备,这个camera控制器在linux里被抽象成为v4l2层通用,最后由(*attach)连接到具体每个不同的camera设备驱动里。camera=camera控制器+外接的camera sensor,控制器集成在cpu里,linux下的设备结点就是/dev/video0.


 

 

preview数据的显示过程:

Java app 呼叫 Jni Jni调用各种.so

libandroid_runtime.so ---> libcamera_client.so ---> Binder IPC---> libcameraservice.so ---> libcamera.so

     注释:请原谅我用【呼叫】这个动词,实在想不出更加形象的词汇了。

 

    

1.打开linux kernel中的camera driver的设备文件,调用CameraHardwareInterface.h 中定义的openCameraHardware(),打开camera driver的设备文件(例如/dev/video0).

     2.CameraHardwareInterface.h 中定义的 setParameters()函数,

  • 4
    点赞
  • 33
    收藏
    觉得还不错? 一键收藏
  • 49
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 49
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值