
camera
文章平均质量分 94
Android camera
埋头干饭ing
这个作者很懒,什么都没留下…
展开
-
MM-Camera架构-ProcessCaptureRequest 流程分析
func:mm_stream_map_buf,func:mm_camera_util_s_ctrl,以及每一帧结束后的func:mm_stream_unmap_buf。mm_camera_load_shim_lib里面dlopen:libmmcamera2_mct_shimlayer.so。从日志看,每次captureRequest,mct_shimlayer_process_event会被调用两次,cmd_type分别是CAM_SHIM_REG_BUF和CAM_SHIM_SET_PARM。原创 2023-10-07 16:34:32 · 1536 阅读 · 0 评论 -
MM-Camera架构-Preview 流程分析
cpp_init_mem() : 其实就是获取cpp_dev->iommu_hdl,这个东西是在msm_cam_smmu设备driver中统一管理的,vfe中有记录过这里。cpp_init_hardware():设置一些硬件参数、时钟、注册中断以及buf管理接口:msm_cam_buf_mgr_register_ops()这里的是CPP_HW_CMD_SUBSCRIBE_EVENT即cpp_hardware_subcribe_v4l2_event。是将当前的文件指针挂到等待队列中。这个的原理应该一样。原创 2023-10-07 16:33:57 · 1090 阅读 · 0 评论 -
MM-Camera架构-Open 流程分析
整个Camera Open 过程总结如下:Java APP 层调用 Frameworks 层 Camera.java 中的 open() 方法,在open camera 后,才开始调用对应的 getParameters(),setParameters(), startPreview() 等 函数,这些后续分析Frameworks 层 Camera.java 中的 open()(1) 在Camera open() 函数中,如果没有指定open 对应的camera id,则默认打开后摄。原创 2023-10-07 16:33:02 · 1715 阅读 · 0 评论 -
MM-Camera架构-驱动代码架构
高通的camera驱动架构设计大致的原理如此:将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口和格式。模块中有端口,通过端口把模块连接起来,又把模块挂在总线上。每一个端口的连接就是一个流,把这些流用pipeline来管理。每次启动一个camera就创建一个,由这个来管理此camera的一切事物。对于每一个,模块是共享的,它可以是camera的硬件资源也可以是其它资源(如一些软件算法等资源)。原创 2023-10-07 16:31:15 · 493 阅读 · 0 评论 -
常用图像像素格式 NV12、NV21、I420、YV12、YUYV
从映射出的像素点中可以看到,四个 Y 分量是共用了一套 UV 分量,而且是按照 2*2 的小方格的形式分布的,相比 YUV 4:2:2 采样中两个 Y 分量共用一套 UV 分量,这样更能够节省空间。YUV 4:4:4 采样,意味着 Y、U、V 三个分量的采样比例相同,因此在生成的图像里,每个像素的三个分量信息完整,都是 8 bit,也就是一个字节。YUV 422P 格式,又叫做 I422,采用的是平面格式进行存储,先存储所有的 Y 分量,再存储所有的 U 分量,再存储所有的 V 分量。原创 2022-09-06 10:14:41 · 4054 阅读 · 0 评论 -
安卓相机架构概览
camera转载 2022-07-05 22:07:14 · 660 阅读 · 1 评论