
Android Camera
camera从入门移植到相对了解
小馋喵星人
这个作者很懒,什么都没留下…
展开
-
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_USERPTR - NV12格式 - 2plane
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_USERPTR - NV12格式 - 2plane1、配置摄像头输出 NV12格式数据2、获得NV12格式的Buffer size3、申请DMA Buffer4、下发 Buffer 地址到V4L25、循环获取数据分别测试拷贝数据到本地的时间6、释放Buffer本文代码和前面《 Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane》差不多,唯一不一样的就是将 YU原创 2020-11-14 10:59:22 · 1935 阅读 · 3 评论 -
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_DMABUF-YUYV格式-1plane
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_DMABUF-YUYV格式-1plane一、配置驱动准备DMA 类型Buffer二、应用层申请DMA Buffer三、申请DMA Buffer四、应用层下发Buffer 指针五、循环获取 Camera 数据六、释放Buffer 与 fd前面我们分析实现了 USERPTR 与 MMAP 两种方式的代码实例:《Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane》《原创 2020-11-14 10:01:12 · 4777 阅读 · 5 评论 -
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane
Native层打开 V4L2 video0摄像头-V4L2_MEMORY_USERPTR-YUYV格式-1plane一、Android ION CMA分配连续物理内存二、获取摄像头数据代码实例2.1 初始化摄像头(打开节点,配置输出格式)2.2 配置驱动Stream Buffer2.3 申请Stream Buffer 内存2.4 申请 ION 物理连续内存 alloc_ion_dma_buff()2.5 下发 Buffer地址给到V4L22.6 SteamON 开始输出图片2.7 循环获取摄像头数据2.8原创 2020-11-11 18:50:32 · 2190 阅读 · 2 评论 -
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_MMAP 方式实现
Native层打开 V4L2 video0摄像头 - V4L2_MEMORY_MMAP 方式实现一、打开摄像头 video0 节点,查询摄像头属性二、配置摄像头输出格式三、配置V4L2底层申请Buffer,Native层来mmap映射 Buffer四、下发Stream on命令,开始吐数据五、循环获取摄像头数据V4L2_MEMORY_MMAP 方式是由V4L2 驱动层来实现申请连续buff,Native 层通过mmap 方式来映射读取数据。相关代码可参考高通默认代码:\vendor\qcom\prop原创 2020-11-11 18:42:07 · 2165 阅读 · 0 评论 -
Kernel 打开 UVC Camera 驱动
kernel/linux-4.9/arch/arm64/configs/xxxx_defconfigkernel/linux-4.9/arch/arm64/configs/xxxx_extra_modem_defconfig内核配置开关如下:CONFIG_VIDEO_V4L2_SUBDEV_API=yCONFIG_USB_VIDEO_CLASS=yCONFIG_MEDIA_USB_SUPPORT=yCONFIG_V4L_PLATFORM_DRIVERS=y原创 2020-09-28 17:06:30 · 1645 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(22) --- Flashlight 及 Kernel Flashlight 代码分析
【高通SDM660平台 Android 10.0】22 --- Flashlight 及 Kernel Flashlight 代码分析一、[硬件] 闪光灯硬件原理图二、[vendor] 库文件 lib三、[vendor] 通用代码 flash.c 初始化3.1 module_sensor_flash_init()3.2 flash_process()四、[Kernel] flashlight 驱动4.1 Kernel probe 初始化 msm_flash_platform_probe()4.2 CFG_F原创 2020-06-22 11:50:24 · 3094 阅读 · 2 评论 -
【高通SDM660平台 Android 10.0】(21) --- 高通Camera persist使用手册
基于MSM8996平台PL1.0一. Log部分1. persist.camera.global.debug2. persist.camera.mct.debug3. persist.camera.sensor.debug4. persist.camera.iface.logs5. persist.camera.isp.debug6. persist.camera.stats.debug7. persist.camera.stats.af.debug8. persist.camera.st转载 2020-06-19 17:58:50 · 3934 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(18) --- Camera start_session() 过程分析
【高通SDM660平台 Android 10.0】18 --- Actuator 与 Kernel Actuator代码分析 及 Camera start_session过程分析1. module_sensor_init( )1.1 module_sensor_start_session( )1.2 module_sensor_init_session()1.3 module_sensor_offload_init_config( )《【高通SDM660平台】(1) — Camera 驱动 Bring原创 2020-06-19 11:44:31 · 1801 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(19) --- Camera_focus、Camera_snapshot、volume_up 按键工作原理分析
【高通SDM660平台 Android 10.0】19 --- Camera_focus、Camera_snapshot、volume_up 按键工作原理分析一、 DTS代码配置二、 Kernel 代码解析2.1 按键初始化 gpio_keys_probe()2.1.1 解析gpio dts节点 gpio_keys_get_devtree_pdata()2.2 按键工作原理2.2.1 中断注册 gpio_keys_setup_key()2.2.2 按键工作流程一、 DTS代码配置Camera_focu原创 2020-06-18 15:42:43 · 1979 阅读 · 3 评论 -
【高通SDM660平台 Android 10.0】(20) --- Actuator 与 Kernel Actuator代码分析
【高通SDM660平台 Android 10.0】Qcom Camera Daemon 代码分析一、[vendor] 库文件 libactuator_lc898217xc.so二、[vendor] 马达通用驱动三、[kernel] 马达驱动《【高通SDM660平台】(1) — Camera 驱动 Bringup Guide》《【高通SDM660平台】(2) — Camera Kernel 驱动层代码逻辑分析》《【高通SDM660平台】(3) — Camera V4L2 驱动层分析 》《【高通SDM原创 2020-06-15 10:47:41 · 2189 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(17) --- ISP算法相关-待学习文章
【高通SDM660平台 Android 10.0】---ISP处理流程一、概述一、概述待学习:《基于IC设计的实用ISP介绍》《ISP基本框架及算法介绍》《ISP(图像信号处理)算法概述、工作原理、架构、处理流程》《图像基础算法处理》《基本ISP算法》《专栏----笔记-ISP算法系统概念》《专栏----ISP算法----图像处理》《如何深入研究ISP算法?》...原创 2020-05-13 17:41:34 · 4913 阅读 · 1 评论 -
【高通SDM660平台 Android 10.0】(16) ---什么是HDR
【高通SDM660平台 Android 10.0】---什么是HDR一、什么是HDR?二、HDR能带来什么?三、HDR和IPS硬屏四、近乎完整的呈现HDR片源效果一、什么是HDR?HDR全称是High-Dynamic Range,即高动态范围图像技术。这项技术最早应用于摄影,在拍照过程中开启HDR,可以让原先的暗场景变得更明亮更通透。现在,HDR技术已经应用在了家电、智能终端等各个方面。简而言之,就是把几张不同曝光的照片合并到一起,找回大光比环境中的高光和阴影细节。二、HDR能带来什么?拿电脑转载 2020-05-13 15:47:22 · 1706 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(15) --- 自动对焦系统概述
【高通SDM660平台 Android 10.0】 --- 自动对焦系统概述一、CDAF 原理二、PDAF 原理三、Laser AF 原理四、 Actuator driver对焦系统目前有三种CDAF(反差式对焦)PDAF(相差式对焦)Laser assited AF(激光协助对焦) 由于成本原因,没有采用了一、CDAF 原理CDAF的原理图如下所示:AF算法从ISP得到统计信息FV(Focus Value),算出镜头下一次要移动的距离和方向,遍历完NE(Near End)和FE(Fa转载 2020-05-13 15:40:08 · 2221 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(14) --- Camera ISP
【高通SDM660平台 Android 10.0】--- Camera ISP一、Camera ISP 与 DSP 区别1.1 名词解释1.2 功能解释1.3 手机摄像头ISP是独立好还是内置好二、Camera ISP 图像处理流程网上看到一兄弟写的特别好,在此转载类似备份下:原文:http://camera.geek-docs.com/camera-isp/camera-isp-flow-intro.html一、Camera ISP 与 DSP 区别在介绍Camera ISP和DSP区别前,我们先转载 2020-05-13 14:56:40 · 2093 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(13) --- Camera ISP 之 数字成像系统介绍
【高通SDM660平台 Android 10.0】 --- Camera ISP 之 数字成像系统介绍一、成像系统的组成1.1 视角1.2 曝光1.3 感光度 ISO1.4 光源1.5 光学1.6 机械1.7 半导体二、3A 系统概述2.1 3A在系统中的作用是什么?2.2 ISP统计信息2.3 3A统计信息在ISP Pipeline中输出的位置2.4 AE的统计信息2.5 AWB统计信息2.6 AF统计信息2.7 其他ISP统计信息本文转自: http://camera.geek-docs.com/ca转载 2020-05-13 14:34:36 · 3233 阅读 · 2 评论 -
【高通SDM660平台 Android 10.0】(12) --- Camera Chromatix 代码分析
【高通SDM660平台 Android 10.0】Qcom Camera Daemon 代码分析《【高通SDM660平台】(1) — Camera 驱动 Bringup Guide》《【高通SDM660平台】(2) — Camera Kernel 驱动层代码逻辑分析》《【高通SDM660平台】(3) — Camera V4L2 驱动层分析 》《【高通SDM660平台】(4) — Camera Init 初始化流程 》《【高通SDM660平台】(5) — Camera Open 流程》《【高通S原创 2020-05-13 10:41:50 · 3666 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(11) --- Eeprom lib 与 Kernel eeprom代码分析
【高通SDM660平台 Android 10.0】--- Eeprom lib 与 Kernel 代码分析一、 libmmcamera_rohm_brcg064gwz_3_eeprom.so 代码分析二、 EEPROM 初始化(CFG_EEPROM_INIT)三、获取 EEPROM 数据(CFG_EEPROM_READ_CAL_DATA)以 imx258 为例,它使用的eeprom 是 rohm_brcg064gwz_3。一、 libmmcamera_rohm_brcg064gwz_3_eeprom.s原创 2020-05-12 14:55:29 · 1947 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(10) --- Camera Sensor lib 与 Kernel Camera Probe 代码分析
【高通SDM660平台 Android 10.0】Camera Sensor lib 与 Kernel Camera Probe 代码分析一、libmmcamera_imx258.so 代码分析1.1 struct sensor_lib_t 结构体1.2 imx258_lib.h 头文件分析《【高通SDM660平台】Camera 驱动 Bringup Guide》《【高通SDM660平台】Camera Kernel 驱动层代码逻辑分析》《【高通SDM660平台】Camera V4L2 驱动层分析 》原创 2020-05-11 11:52:01 · 4107 阅读 · 0 评论 -
【高通SDM660平台 Android 10.0】(9) --- Qcom Camera Daemon 代码分析
【高通SDM660平台 Android 10.0】Qcom Camera Daemon 代码分析一、mm-qcamera-daemon 进程1.1 server.c高通camera把sensor端底层设置、ISP效果参数、chomatix等进行了单独的剥离,放在daemon进程中进行。一、mm-qcamera-daemon 进程其代码位于/vendor/qcom/proprietary/mm-camera/mm-camera2/server-imaging/Android.mkLOCAL_SRC_原创 2020-05-09 18:14:24 · 3762 阅读 · 1 评论 -
【高通SDM660平台】(8) --- Camera MetaData介绍
【高通SDM660平台】Camera Metadata一、Camera Metadata 作用简介二、Metadata 定义介绍2.1 Camera Metadata 内存分布2.2 基本宏定义 camera_metadata_tags.h2.3 基本API定义 camera_metadata.h2.4 产商API自定义 camera_vendor_tags.h2.5 将宏与字符串绑定 camer...原创 2020-04-28 16:39:32 · 5463 阅读 · 0 评论 -
【高通SDM660平台】(7) --- Camera onPreview 代码流程
【高通SDM660平台】Camera onPreview 流程一、Camera onPreview 流程1. [ Framework ] Camera.java2. [ JNI ] android_hardware_Camera.cpp3. [ Native ] Camera.cpp4. [ Native ] CameraClient.cpp5. [ Hardware ] CameraClien...原创 2020-04-28 10:07:56 · 3351 阅读 · 0 评论 -
FLV格式解析
本文目的:熟悉FLV格式,能够直接使用ultrEdit直接分析一段FLV文件或许相关信息,或者编写程序解析出FLV文件相关信息一、FLV文件格式FLV是流媒体格式的一种FLV是一个二进制文件,由文件头(FLV header)和很多tag组成。tag又可以分成三类:audio、video、script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)FLV文件 = FLV头文件...转载 2020-04-26 17:21:39 · 1370 阅读 · 0 评论 -
图像数据格式介绍 yuv420sp、yuv420sp、yv12、nv12等
图像数据格式介绍 yuv420sp、yuv420sp、yv12、nv12等YUV定义:分为三个分量,“Y”表示明亮度(Luminance或Luma),也就是灰度值;“U”和“V” 表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色。YUV格式通常有两大类:打包(packed)格式和平面(planar)格式。对于planar的YUV格...转载 2020-04-26 16:49:34 · 1063 阅读 · 0 评论 -
【高通SDM660平台】(6) --- Camera getParameters 及 setParameters 流程
【高通SDM660平台】Camera getParameters 及 setParameters 流程一、 getParameters 及 setParameters 总结二、 getParameters 及 setParameters 流程代码分析《【高通SDM660平台】Camera Kernel 驱动层代码逻辑分析》《【高通SDM660平台】Camera V4L2 驱动层分析 》《...原创 2020-04-20 18:13:36 · 2714 阅读 · 0 评论 -
【高通SDM660平台】(5) --- Camera Open 流程 及 后续更新思路
【高通SDM660平台】mm-qcamera-daemon一、mm-qcamera-app二、mm-qcamera-daemon一、mm-qcamera-app代码位于 vendor/qcom/proprietary/mm-camera/apps/v4l2-qcamera-app/二、mm-qcamera-daemon代码位于vendor/qcom/proprietary/mm-cam...原创 2020-04-15 18:13:40 · 4390 阅读 · 0 评论 -
【高通SDM660平台】(4) --- Camera Init 初始化流程
【高通SDM660平台】Camera Init 初始化流程一、Camera 系统架构二、Camera Init 初始化流程2.1 CameraService 启动2.2 CameraService::instantiate()2.3 CameraService.cpp2.3.1 CameraService::CameraService()2.3.2 CameraService::onFirstRe...原创 2020-04-14 18:43:28 · 5647 阅读 · 0 评论 -
【高通SDM660平台】(3) --- Camera V4L2 驱动层分析
【高通SDM660平台】Camera Kernel V4L2驱动层分析 Linux系统中视频输入设备主要包括以下四个部分: 字符设备驱动:V4L2本身就是一个字符设备,具有字符设备所有的特性,暴露接口给用户空间; V4L2驱动核心:主要是构建一个内核中标准视频设备驱动的框架,为视频操作提供统一的接口函数; 平台V4L2设备驱动:在V4L2框架下,根据平台自身的特性实现与平台相关的V...原创 2020-04-13 11:16:01 · 4903 阅读 · 0 评论 -
【高通SDM660平台】(2) --- Camera Kernel 驱动层代码逻辑分析
【高通SDM660平台】Camera Kernel 驱动1. Camera Kernel 驱动2. qcom,msm-cam在前面《【高通SDM660平台】Camera 驱动 Bringup Guide》中,我们学习了如何移植Camera 驱动,今天开始,我们要结合代码,学习下Kernel 中Camera 驱动具体的原理。1. Camera Kernel 驱动Kernel 驱动中 高通把C...原创 2020-04-12 13:19:25 · 7720 阅读 · 17 评论 -
【高通SDM660平台】(1) --- Camera 驱动 Bringup Guide
【高通SDM660平台】Camera 驱动 Bringup Guide一、Kernel 代码移植1. dts 目录1.1 sdm660.dtsi一、Kernel 代码移植1. dts 目录dts 文件目录:arm64 与 arm 走的是同一套代码,kernel\msm-4.4\arch\arm64\boot\dts\qcom这个目录其实是 \kernel\msm-4.4\arch\ar...原创 2020-04-09 14:43:00 · 12862 阅读 · 10 评论 -
视频编码之I帧 、P帧、B帧
视频传输原理视频是利用人眼视觉暂留的原理,通过播放一系列的图片,使人眼产生运动的感觉。单纯传输视频画面,视频量非常大,对现有的网络和存储来说是不可接受的。为了能够使视频便于传输和存储,人们发现视频有大量重复的信息,如果将重复信息在发送端去掉,在接收端恢复出来,这样就大大减少了视频数据的文件,因此有了H.264视频压缩标准。在H.264压缩标准中I帧、P帧、B帧用于表示传输的视频画面。帧...原创 2019-05-31 11:14:17 · 1742 阅读 · 0 评论