第8讲 CamSync架构介绍

本讲是Camera KMD ISP子系统专题的第8讲,我们讲解Camera KMD ISP子系统CAMSYNC 框架。

更多资源:

资源 描述
在线课程 极客笔记在线课程
知识星球 星球名称:深入浅出Android Camera
星球ID: 17296815
Wechat 极客笔记圈

What is android fence?

在android系统中fence用于不同模块需要访问同一块buffer的同步,例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。

camera需要生产图像数据到preview buffer时需要等待preview buffer的 fence可用。如下:

What is android fence?

What is camera sync?

camera sync是高通camx框架里面用于各个node之间进行buffer同步的一套机制,其利用了v4l2 event机制来实现KMD与UMD通信。

What is camx fence?

camx fence

  • csl fence
  • chi fence

Camx Fence与camera sync的关系

camx fence(chi fence/csl fence)与camera sync驱动的sync object一一对应。

sync object type

  • CAM_SYNC_TYPE_INDV

  • CAM_SYNC_TYPE_GROUP

sync object type

camera sync object

struct sync_table_row {
    char name[CAM_SYNC_OBJ_NAME_LEN];//camx fence name
    enum sync_type type;//sync obj type
    int32_t sync_id;//camx fence id
    struct list_head parents_list;//merge sync object时用于保存自己的parent sync object
    struct list_head children_list;// merge sync object时用于保存自己的children sync object
    uint32_t state;//当前sync object的状态(active, signaled_success等)
    uint32_t remaining;//还有多少个children没有被signal,针对group type的row
    struct completion signaled;//用于同步wait的fence
    struct list_head callback_list;//sync object对应的kernel callback func
    struct list_head user_payload_list;//保存当前sync object的用户空间payload;
    //payload[0]为回调函数指针,payload[1]为传给回调函数的参数
    atomic_t ref_cnt;//sync object的引用计数
};

camera sync软件框架图

camera sync软件框架图

SyncManager剖析

SyncManager剖析

Sync Manager初始化

Sync Manager初始化

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程