文档章节

Android Camera架构浅析

s
 sflfqx
发布于 2014/10/31 13:43
字数 911
阅读 289
收藏 0

1Camera成像原理介绍

Camera工作流程图

image

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

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

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

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

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

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

2Android Camera框架

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

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

image

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取景及摄像)

 

Cameraframework供上层应用调用的部分

 

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私有库部分,为避免不必要的麻烦,我会一笔带过。敬请见谅!

本文转载自:http://blog.csdn.net/qikaibinglan/article/details/6088337

s
粉丝 42
博文 202
码字总数 0
作品 0
深圳
高级程序员
私信 提问
Android Camera 架构简析1

前言 最近整体看了一下Android Camera 部分代码,从Framework的Camera 应用框架到 Hardware的Camera HAL 再到 Kernel的 Camera Driver。把对Camera部分的学习整理成笔记,方便理解。 2. 概述...

Jerikc
2012/09/03
0
0
Android的MediaRecorder架构介绍

第一部分 MediaRecorder概述 Android的MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。 MediaRecorder在底层是基于...

长平狐
2012/08/14
5.5K
0
Android Camera模块解析之视频录制

《Android Camera架构》 《Android Camera进程间通信类总结》 《Android Camera模块解析之拍照》 《Android Camera模块解析之视频录制》 《Android Camera原理之CameraDeviceCallbacks回调模...

天王盖地虎626
06/18
0
0
Android的MediaRecorder架构介绍

第一部分 MediaRecorder概述 Android的MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。 MediaRecorder在底层是基于...

长平狐
2012/08/21
372
0
Android的MediaRecorder架构介绍

第一部分 MediaRecorder概述 Android的MediaRecorder包含了Audio和video的记录功能,在Android的界面上,Music和Video两个应用程序都是调用MediaRecorder实现的。 MediaRecorder在底层是基于...

长平狐
2012/08/09
599
0

没有更多内容

加载失败,请刷新页面

加载更多

链接命令ln

命令ln 用途:在文件之间建立连接(link) 语法: ]# ln [选项] 源 [目标] 选项: -s, --symbolic 建立符号连接(以路径的形式存在,类似Windows系统的快捷方式), ...

迷失De挣扎
31分钟前
2
0
小白讲网络安全系列

注入攻击防护 XSS注入 SQL注入 命令注入 文件上传 文件解压缩 CSRF防护 对称加密 非对称加密 数字证书 数字签名 完整性校验 消息验证码 单向散列Hash函数 口令单向加密算法 审计日志 认证鉴权...

一刀
今天
2
0
MYSQL 嵌套事务(SAVEPOINT) 与Spring 事务传播

摘要 savepoint 关键字可以实现嵌套事务。结合savepoint关键字,更方便理解spring的事务传播。 事务嵌套 初始化表脚本 drop table t;create table t(a int, primary key(a)); 开启事务 my...

liangxiao
今天
4
0
Chrome OS 更新新版本可让Linux访问USB连接的Android设备

谷歌再次为Chrome OS带来了重大版本更新,使版本号达到了75。本次更新的一大亮点就是允许在Chrome OS上运行的Linux能够识别通过USB方式连接的Android设备,能够让用户使用Linux进行调试等等。...

linuxCool
昨天
15
0
聊聊feign的HystrixInvocationHandler

序 本文主要研究一下feign的HystrixInvocationHandler HystrixInvocationHandler feign-hystrix-10.2.3-sources.jar!/feign/hystrix/HystrixInvocationHandler.java final class HystrixInvo......

go4it
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部