唠嗑
最近看了维神的《沙丘》,我觉得是真的好看,配乐精彩绝伦,构图美轮美奂,场景气势磅礴,但是不是适合所有人;在各种廉价爆米花电影充斥主流商业片的今天,还能看到这么一部如此古典叙事且代表着好莱坞最高制作水准的巨作,简直幸运!
##系列文章
高通msm-V4L2-Camera驱动浅析1-初识
高通msm-V4L2-Camera驱动浅析2-框架详解
高通msm-V4L2-Camera驱动浅析3-session
一、session(会话)的设计思路
在微信聊天的时候,我们想要跟人沟通联系,就会创建一个session(会话),多个人单独聊天,就会有多个session;
每一个session负责管理所有的资源,比如表情包、图片、聊天记录等。
高通的思路也是如此:
- 将camera的所有功能划分为不同的模块,让模块自己来决定自己的事情(高内聚,低耦合),模块需要有统一的接口和格式。
- 模块中有端口,通过端口把模块连接起来,又把模块挂在总线上。
- 每一个端口的连接就是一个流,把这些流用pipeline来管理。
- 每次启动一个camera就创建一个会话,由这个会话来管理此camera的一切事物。
- 对于每一个会话,模块是共享的,它可以是camera的硬件资源也可以是其它资源(如一些软件算法等资源)。
二、一个session是如何创建的
2.1、session的数据结构
msm_session
struct msm_session {
struct list_head list;
/* session index */
unsigned int session_id;
/* event queue sent by imaging server */
struct msm_event event_q;
/* ACK by imaging server. Object type of
* struct msm_command_ack per open,
* assumption is application can send
* command on every opened video node
*/
struct msm_queue_head command_ack_q;
/* real streams(either data or metadate) owned by one
* session struct msm_stream
*/
struct msm_queue_head stream_q;
struct mutex lock;
struct