高通camera学习笔记(一)

高通新的camera驱动架构设计发生了一些变化,借用互联网上常用的一种结构,大致的原理如此:将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口和格式。模块中有端口,通过端口把模块连接起来,又把模块挂在总线上。每一个端口的连接就是一个流,把这些流用pipeline来管理。每次启动一个camera就创建一个会话,由这个会话来管理此camera的一切事物。对于每一个会话,模块是共享的,它可以是camera的硬件资源也可以是其它资源(如一些软件算法等资源)。

那么如何来定义这个模块的结构呢?
1.端口——端口属于模块,如果这个模块只有source端口,那么它就是一个src模块;如果只有sink端口就是sink模块,如果都有就是中间模块。没有端口的模块是不能连接到流中的,但他可以完成一些其他的功能,比如接收引擎的设置,报告事件到bus等。连接到流中的端口,也就是说流事件(set/get)主要通过端口来处理。而来自于引擎的(set/get)通过模块来处理,当然端口也可以把事件交给模块来处理。模块内部的端口可以通过模块来建立关系,也可以建立内部的连接,端口有关get/set process。
2.模块线程——每个模块可以有一个线程来处理模块的事情。一个线程对应一个队列,线程就是从队列中取出数据处理,然后应答回去。
3.总线回调——挡一个模块向总线注册时,总线向其提供一个回调函数,当模块有事件发生时,调用这个函数向bus发消息,然后总线把这个消息提交给管道,管道把这个消息顺着流发下去。
4.模块的get、set以及process。

管道、引擎与会话
管道有两端,一端用于读,一端用于写。camera引擎负责对管道的监控,而会话管理camera引擎。

从代码结构上来看这种新的驱动架构
高通的camera deamon代码放置在vendor\qcom\proprietary\mm-camera目录下,而此目录下的mm-camera2就是新的camera架构位置,进入里面可以看到media-controller、server-imaging、server-tuning及其它几个目录,我们这里需要关注的就是media-controller目录。

media-controller
    |- mct——应该就是camera的引擎?里面包含了引擎、pipiline、bus、module、stream及event等定义及封装。
    |- modules——这里面就是划分好的一些模块代码,各模块大致功能如下
        |- sensor —— sensor 的驱动模块?                                                                                   —— src模块
        |- iface —— ISP interface模块                                                                                         —— inter模块
        |- isp —— 主要是ISP的处理,其内部又包含了众多的模块                                                         —— inter模块
        |- stats —— 一些统计算法模块,如3A,ASD,AFD,IS,GRRO等数据统计的处理                             —— sink模块
        |- pproc —— post process处理                                                                                        —— inter模块
        |- imglib —— 主要是图片的一些后端处理,如HDR等                                                              —— sink模块
以上各模块内部又包含了众多的模块,具体需要看代码分析。

时间: 2024-08-04 23:12:02

高通camera学习笔记(一)的相关文章

高通camera学习笔记二

高通camera daemon进程 1.概述 高通在Android的camera架构中,依旧沿用了其传统的方式,将其自身的一些处理放在一个daemon进程中.这部分内容出于应用于driver之间,是为了保护自身及硬件厂商的利益而专门弄出来的一个东东.其它各家平台也采用类似的方式将这部分的处理放在HAL层处理. 2.进程的入口    做为一个单独的进程,那肯定是有其main函数入口的.在vendor\qcom\proprietary\mm-camera\mm-camera2\server-imag

高通camera学习笔记三

media controller线程 1.概述    MCT线程是camera新架构的引擎部分,负责对管道的监控,由此来完成一个camera设备的控制运转.它运行在daemon进程空间,由MSM_CAMERA_NEW_SESSION事件来开启,具体开启函数为mct_controller_new(). 2.mct_controller_new()函数    此函数创建一个新的MCT引擎,这将对应一个事务的pipeline.我们知道上层可以创建多个事务,每个对应一个camera,也对应自己的MCT及

高通camera学习笔记五(actuator驱动参数解析)

1.概述 actuator驱动信息文件是指vendor目录下的$ActuatorName_actuator.h文件(如gigaset_actuator.h).此信息文件就是一个actuator_driver_ctrl_t结构体.包括actuator_params与actuator_tuned_params两部分,即driver与tunning两部分.文档以目前最主流的VCM为例进行参数的介绍. 2.driver部分信息——actuator_params act_type: actuator类型,

高通camera学习笔记四

sensor模块 1.概述 sensor模块是众多模块中的一个,主要是由模组的各个硬件模块组成,包括sensor.Flash.Af.EEprom.OIS.CSI等.这个模块主要描述了模组硬件的一些工作原理及部分驱动相关部分. 2.module_sensor_init()函数 在前面讲到的server process中提到,服务进程开始后会初始化各个模块,其中就包括sensor模块,sensor初始化入口函数即为module_sensor_init(...).这个函数将创建sensor模块并返回其

高通camera基本代码架构【转】

本文转载自:http://blog.sina.com.cn/s/blog_c0de2be70102vyn1.html 1  camera基本代码架构 高通平台对于camera的代码组织,大体上还是遵循Android的框架:即上层应用和HAL层交互,高通平台在HAL层里面实现自己的一套管理策略:在kernel中实现sensor的底层驱动.但是,对于最核心的sensor端的底层设置.ISP效果相关等代码则是单独进行了抽离,放在了一个 daemon进程中进行管理: 图1 Qualcomm平台camer

高通camera结构【转】

本文转载自:http://www.cnblogs.com/whw19818/p/5853407.html 摄像头基础介绍 一.摄像头结构和工作原理. 拍摄景物通过镜头,将生成的光学图像投射到传感器上,然后光学图像被转换成电信号,电信号再经过模数转换变为数字信号,数字信号经过DSP加工处理,再被送到电脑中进行处理,最终转换成手机屏幕上能够看到的图像. 数字信号处理芯片DSP(DIGITAL SIGNAL PROCESSING)功能:主要是通过一系列复杂的数学算法运算,对数字图像信号参数进行优化处理

数通技术学习笔记

Day 1 SOHO--Small office(and) Home office 家居办公 大多指那些专门的自由职业者 ISP(Internet Service Provider),互联网服务提供商,即向广大用户综合提供互联网接入业务.信息业务.和增值业务的电信运营商,能提供拨号上网服务.网上浏览.下载文件.收发电子邮件等服务,是网络最终用户进入Internet的入口和桥梁.它包括Internet接入服务和Internet内容提供服务.这里主要是Internet接入服务,即通过电话线把你的计算

高可用keepalived学习笔记

keepalived完全遵守VRRP协议包括竞选机制,至于VRRP是什么这里不说了参考http://wenku.baidu.com/link?url=1UbkmHuQlGECgC90P7zF6u2xYyifLK0F-G_7pehNVUitZZExISjZ-B22TJKKGyYIZXh9X7uULA8lA1nKw0NsyNGelrt_yQ317knkVyjwCqW,不同的是VRRP里的路由器在keepalive中变成服务器 vrrp的术语:虚拟路由器.VRID.Master.Backup.VIP.

高通msm8926 camera调试笔记

前些天在调试一组高通msm8926上的摄像头,之前ov5648+imx135已正常的点亮了,但是后续需要一个mini配置版本的方案,需要兼容ov2685+ov8865,于是先做好调试的前期准备,跟摄像头模组厂要模组spec和芯片的datasheet,先仔细阅读一下ic的datasheet,并仔细查看模组的打样图纸和模组spec,首先要确认的是ic的各路电压是可以正常的供出,一般需要注意的就是DVDD,IOVDD,AVDD,还有STANDBY和RESET,这些管脚的连接要和主板上兼容,确保在硬件上