Linux kernel media framework(阅读理解与记录)

1.Abstract media device model

在系统内部的拓扑结构中,快速找到设备,并进行实时配置,是设计该模型的一个重要目的,为了实现它,把那些具有方向图表性的构件抽象为通过pads相连的entities的硬件设备模型。
三要素:
entity:实体,sensor, controller等。
pad: entity用于连接其他entity的端点。
link: pad间的点对点连接。

2.Media device

强制要赋值的属性
dev, 指向parent device
model,device model name

3.Entities

通过调用如下函数完成初始化
media_entity_init( struct media_entity *entity,
u16 num_pads,
struct media_pad *pads,
u16 extra_links)
注:
a.每个pad需要提前设定数据方向,其他成员会在此函数中完成初始化;
b.link数可动态申请;
c.其他函数
media_device_register_entity(struct media_device *mdev, struct media_entity *entity);
media_device_unregister_entity(struct media_entity *entity);
media_entity_cleanup(struct media_entity *entity);

4.Pads

a.flags
MEDIA_PAD_FL_SINK indicates that the pad supports sinking data.
MEDIA_PAD_FL_SOURCE indicates that the pad supports sourcing data.

5.Links

通过调用如下函数创建link
media_entity_create_link( struct media_entity *source,
u16 source_pad,
struct media_entity *sink,
u16 sink_pad,
u32 flags);
a.flags
MEDIA_LNK_FL_ENABLED
MEDIA_LNK_FL_IMMUTABLE, link enable state不能在运行过程中被修改

6.Graph traversal

相关的函数
media_device_for_each_entity
media_entity_graph_walk_start
media_entity_graph_walk_next
media_entity_find_link
media_entity_remote_pady

7.Link setup

当一个link开启或者关闭时,sink/source entities(media_entity)中的link_setup(强制要求,如果是非IMMUTABLE类型的)会被media framework调用,当link_notify非空时,该回调函数也会被调用。

8.Pipelines and media streams

当启动视频流时,Pipeline中所有的entities都应当被通知,可调用以下函数实现
media_entity_pipeline_start(struct media_entity *entity, struct media_pipeline *pipe);
当停止时,调用下列函数通知所有实体
media_entity_pipeline_stop(struct media_entity *entity);

9.Link Validation

该过程在media_entity_pipeline_start调用时执行,位于media_entity.link_validate回调函数,entity driver应当检查pad和link的匹配条件。

10.其他参考文章

https://www.freesion.com/article/68991131584/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值