Android之摄像头框架简介
  gcIluVlGdpHJ 2023年12月15日 73 0


Android之摄像头框架简介

Android Camera HAL

每个Soc厂家的HAL实现不一样,以前主要基于V4L2,openMAX等,如TI等,后面随着Android相机功能越来越多,运用越来越复杂,都形成了自己独有的一套架构,比如高通Camx架构,MTK的MtkCam3架构等

Camx架构:

MtkCam3:

新版HAL3

从 Android 8.0 开始,相机 HAL 实现必须使用 HIDL API,不支持使用旧版接口。

新相机 HAL 的 HIDL 接口在 hardware/interfaces/camera 中定义

HIDL 的目标是,可以在无需重新构建 HAL 的情况下替换框架。HAL 将由供应商或 SOC 制造商构建,并放置在设备的 /vendor 分区中,这样一来,就可以在框架自己的分区中通过 OTA 替换框架,而无需重新编译 HAL。
从 Android 10 开始,HIDL 已废弃,Android 将在所有位置改用 AIDL

应用框架
应用代码位于应用框架级别,它使用 Camera 2 API 与相机硬件进行互动。在内部,此代码会调用相应的 Binder 接口,以访问与相机互动的原生代码。
Native框架
此框架位于 frameworks/av/ 中,并提供相当于 CameraDevice 和 CameraCaptureSession 类的原生类。另请参阅 NDK camera2 参考。
相机服务
位于 frameworks/av/services/camera/libcameraservice/CameraService.cpp 下的相机服务是与 HAL 进行互动的实际代码。
HAL
硬件抽象层定义了由相机服务调用、且您必须实现以确保相机硬件正常运行的标准接口。
内核驱动程序
相机的驱动程序可与实际相机硬件以及您的 HAL 实现进行互动。

Android USB Camera

Android下面的USB摄像头和其系统自带的摄像头实现是有一定差别的。

UVCCamera库

基于 libuvc 开发 https://github.com/libuvc/libuvc
libuvc 是一个跨平台开发库,基于 libusb,功能包括 UVC 设备识别与控制,视频流传输,视频流格式转换等

https://github.com/saki4510t/UVCCamera jni/libjpeg, jni/libusb and jin/libuvc

Android 官方推出的 ExternalCamera

作者: Shell

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月15日 0

暂无评论

推荐阅读
  dwHry2iKGG0I   2023年12月26日   11   0   0 githubgithubhtmlhtml
gcIluVlGdpHJ