高通msm-V4L2-Camera驱动浅析3-session

本文深入探讨了《沙丘》电影的艺术价值,并从技术角度分析了高通MSM-V4L2-Camera驱动中的会话(session)创建过程。会话管理视频设备、cmd队列和stream队列,确保资源高效使用。通过初始化session队列,创建并管理每个session,实现camera操作的模块化和低耦合。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

唠嗑

最近看了维神的《沙丘》,我觉得是真的好看,配乐精彩绝伦,构图美轮美奂,场景气势磅礴,但是不是适合所有人;在各种廉价爆米花电影充斥主流商业片的今天,还能看到这么一部如此古典叙事且代表着好莱坞最高制作水准的巨作,简直幸运!

##系列文章
高通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 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值