原址

1、Camera成像原理介绍

Camera工作流程图

Camera的成像原理可以简单概括如下:

景物(SCENE)通过镜头(LENS)生成的光学图像投射到图像传感器(Sensor)表面上,然后转为电信号,经过A/D(模数转换)转换后变为数字图像信号,再送到数字信号处理芯片(DSP)中加工处理,再通过IO接口传输到CPU中处理,通过DISPLAY就可以看到图像了。

电荷耦合器件(CCD)或互补金属氧化物半导体(CMOS)接收光学镜头传递来的影像,经模/数转换器(A/D)转换成数字信号,经过编码后存储。

流程如下: 
1、CCD/CMOS将被摄体的光信号转变为电信号—电子图像(模拟信号) 
2、由模/数转换器(ADC)芯片来将模拟信号转化为数字信号 
3、数字信号形成后,由DSP或编码库对信号进行压缩并转化为特定的图像文件格式储存

数码相机的光学镜头与传统相机相同,将影像聚到感光器件上,即(光)电荷耦合器件(CCD) 。CCD替代了传统相机中的感光胶片的位置,其功能是将光信号转换成电信号,与电视摄像相同。

CCD是半导体器件,是数码相机的核心,其内含器件的单元数量决定了数码相机的成像质量——像素,单元越多,即像素数高,成像质量越好,通常情况下像素的高低代表了数码相机的档次和技术指标。

2、Android Camera框架

Android的Camera子系统提供一个拍照和录制视频的框架。

它将Camera的上层应用与Application Framework、用户库串接起来,而正是这个用户库来与Camera的硬件层通信,从而实现操作camera硬件。

3、Android Camera的代码结构

Android的Camera代码主要在以下的目录中: 
Camera的JAVA部分 
packages/apps/Camera/。其中Camera.java是主要实现的文件。这部分内容编译成为目标是Camera.apk 
com.android.camera这个包,几个主要的类文件如下: 
PhotoViewer:GalleryPicker.java(所有图片集)--->ImageGallery.java(某个Folder下图片列表)--->ViewImage.java(看某张具体图片) 
VideoPlayer:GalleryPicker.java(所有视频集) --->MovieView.java(看某一个视频) 
Camera:Camera.java(Camera取景及拍照) 
VideoCamera:VideoCamera.java(VideoCamera取景及摄像)

Camera的framework供上层应用调用的部分

base/core/java/android/hardware/Camera.java

这部分目标是framework.jar

Camera的JNI部分 
frameworks/base/core/jni/android_hardware_Camera.cpp 
这部分内容编译成为目标是libandroid_runtime.so。

Camera UI库部分 
frameworks/base/libs/ui/camera 
这部分的内容被编译成库libcamera_client.so。

Camera服务部分 
frameworks/base/camera/libcameraservice/ 
这部分内容被编译成库libcameraservice.so。

Camera HAL层部分 
hardware/msm7k/libcamera 
或 
vendor/qcom/android-open/libcamera2 
为了实现一个具体功能的Camera,在HAL层需要一个硬件相关的Camera库(例如通过调用video for linux驱动程序和Jpeg编码程序实现或者直接用各个chip厂商实现的私有库来实现,比如Qualcomm实现的libcamera.so和libqcamera.so),实现CameraHardwareInterface规定的接口,来调用相关的库,驱动相关的driver,实现对camera硬件的操作。这个库将被Camera的服务库libcameraservice.so调用。

未完待续

在下一篇中,我会以两条路径来详细介绍Camera HAL的实现:自己依据V4l2规范来实现CameraHardwareInterface; Qualcomm的Camera架构(QualcommCameraHardware和mm-camera/mm-still)。当然,在涉及到Qualcomm私有库部分,为避免不必要的麻烦,我会一笔带过。敬请见谅!

Android Camera架构浅析相关推荐

  1. Android Clean 架构浅析

    该原创文章首发于微信公众号"字节流动" Android 常用的架构主要有 MVC,MVP,MVVM 以及 Clean .以上架构设计模式没有绝对的优劣之分,关键要看具体的应用场景. ...

  2. Android Camera 架构

    和你一起终身学习,这里是程序员 Android 本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容: 一.Android Camera整体架构简述 二. Came ...

  3. Qualcomm Android camera 架构简析及如何debug

    一. Camera模组(CCM)介绍: CCM一般包含四大件: 镜头(lens).传感器(sensor).软板(FPC).图像处理芯片(DSP):     Camera的成像原理可以简单概括如下: 1 ...

  4. android camera工程师,浅析Android Camera架构

    本博文是基于Android 4.4讲解 1.application 层: 当我们Android工程师想打开camera时通常直接调用Camera.java中的  Camer.open(cameraId ...

  5. android摄像头框架,FS_S5PC100平台上Android Camera架构分析

    1. Android-Camera架构分析 Android的camera系统架构自上而下分别为应用层-框架层-硬件抽象层-linux驱动层.层与层之间通过Binder.回调函数或者系统调用联系. 我们 ...

  6. Android Camera架构分析

    源代码版本:allwinner 4.0.4 frameworks代码: frameworks/base/core/java/Android/hardware/Camera.java JNI层代码: f ...

  7. 一种MVVM风格的Android项目架构浅析

    前几天接触公司一Android项目,刚看代码时,不知道这么多层级的代码都是干嘛的,看着有点儿懵.只有清楚了结构和流程,才能够在浩瀚的代码里游刃有余. 先不管局部是什么,从全局上去看才能把一件事情看清楚 ...

  8. Android camera开发(11)---Camera软件架构

    Camera软件架构 Camera软件架构 主要包含三个部分的介绍: 1)Android Camera 架构:Android系统原生架构简要介绍. 2)Mediatek Android Camera架 ...

  9. Android Camera模块(一)

    Android Camera模块(一) 一.Android Camera架构 1.1 整体架构 架构参考Android Camera简单整理(一)-Camera Android架构(基于Q) goog ...

最新文章

  1. 在Ubuntu 16.04.1 LTS上安装ATS 6.2.1 LTS实录
  2. 18 款顶级代码生成器平台!
  3. 差异分析定位Ring 3保护模块
  4. 安卓勒索软件进一步扩散
  5. 粒子群优化算法_每日论文19:粒子群优化算法综述
  6. Python学习笔记:Day5 编写web框架
  7. pythonselenium兼容性_对于旧版Google Chrome,无法在Python中使用Selenium找到Chrome
  8. finalize方法注意事项(防止子类没有显示调用super.finalize())
  9. Pycharm 转化ui文件为py文件:报错Error in input file: not well-formed (invalid token): line 1, column 1
  10. Tool-图片压缩-腾讯智图:腾讯智图
  11. Otsu最大类间方差法
  12. POI导出Excel设置自适应列宽
  13. 鸿蒙系统吹了多少年了还没出,实话实说,在鸿蒙系统上,余承东吹了几次牛都没实现...
  14. 计算机术语int,整型(计算机语言)_百度百科
  15. springboot之Result结果类处理
  16. 三种近场通信的特点,以及未来近场通信技术的应用场景的分析和预测
  17. UVA10306 - e-Coins(二维完全背包)
  18. 通过搜狗抓取微信公众号--------破解url
  19. JS逆向-请求参数验证(案例:七麦数据)
  20. Codeforces Round #702 (Div. 3)——B

热门文章

  1. bootstrap多模态框
  2. Java:JSON解析工具-org.json
  3. linux 添加硬盘
  4. asp调用数据库汉字显示乱码解决方案
  5. 新东方私有化背后的秘密
  6. socket编程:SO_REUSEADDR例解
  7. 前端开发 V8引擎是什么?
  8. Web开发的未来:React、Falcor和ES6
  9. AOL架构原则.优秀API设计.Yeoman工具
  10. rdd数据存内存 数据量_Spark 性能优化(二)——数据倾斜优化