本讲是Camera KMD ISP子系统专题的第8讲,我们讲解Camera KMD ISP子系统CAMSYNC 框架。
更多资源:
| 资源 | 描述 | 
|---|---|
| 在线课程 | 极客笔记在线课程 | 
| 知识星球 | 星球名称:深入浅出Android Camera  星球ID: 17296815  | 
| 极客笔记圈 | 
What is android fence?
在android系统中fence用于不同模块需要访问同一块buffer的同步,例如camera和graphic。对于preview buffer, camera是生产者graphic是消费者。
camera需要生产图像数据到preview buffer时需要等待preview buffer的 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
 

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软件框架图

SyncManager剖析

Sync Manager初始化

极客笔记