本讲是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的引用计数
};