Entities、pads、links 实体、垫、链接

Entities:
1.实体由一个struct media_entity实例表示。结构通常嵌入到一个较高级别的结构,例如v4l2_subdev或video_device实例,虽然驱动程序
可以直接分配实体。
2.驱动程序初始化实体
media_entity_init(struct media_entity *entity, u16 num_pads,struct media_pad *pads, u16extra_links);
驱动向媒体设备注册实体:
media_device_register_entity(structmedia_device *mdev, struct media_entity*entity);
驱动程序注销实体:
media_device_unregister_entity(structmedia_entity *entity);
驱动程序释放与实体相关联的资源:
media_entity_cleanup(structmedia_entity * entity);

①可以在调用media_entity_init之前或之后初始化media_entity的name,type,flags,revision和group_id字段。嵌入在较高级别标准结构中的
实体可以具有由较高级别框架设置其中的某些字段。
②由于pad的数目是预先已知的,所以pad阵列不是动态分配的,而是由实体驱动器管理。大多数驱动程序会将驱动程序阵列嵌入到驱动程序特
定的结构中,从而避免动态分配。
③驱动程序必须在调用media_entity_init之前设置pad数组中每个pad的方向。该功能将初始化其他pad字段。
④与pad的数量不同,链接的总数不总是由实体驱动程序预先知道。作为初始估计,media_entity_init预分配等于衬垫数量的链路数量加上可
选数量的额外链路。如果链路数组增长超过初始估计,它将被重新分配。
⑥实体由唯一的正整数ID标识。 驱动程序可以在注册之前填充media_entity id字段来提供ID,或者请求媒体控制器框架自动分配ID。手动提
供ID的驱动程序必须确保所有ID是唯一的。ID不能保证是连续的,即使它们都由框架自动分配。
⑦注销实体不会更改其他实体的ID,并且ID将永远不会重新用于新注册的实体。当媒体设备未注册时,其所有实体都将自动取消注册。不需要手
动实体注销。
⑧在注销实体后,必须在清除阶段调用media_entity_cleanup函数。请注意,如果需要,驱动程序必须显式释放media_entity实例本身。
⑨实体具有描述实体能力和状态的标志,eg.MEDIA_ENT_FL_DEFAULT:表示给定类型的默认实体。这可用于报告默认的音频和视频设备或默认
相机传感器。
逻辑实体组可以通过将所有成员实体的组ID设置为相同的非零值来定义。实体组在内核中不起作用,但在实体枚举期间会报告给用户空间。
group_id字段属于媒体设备驱动程序,且不能由实体驱动程序触摸。
10.如果几个实体在逻辑上绑定在一起,媒体设备驱动程序应该定义组。eg
- 携带相同媒体流的ALSA,VBI和视频节点
- 与传感器相关联的透镜和闪光控制器

Pads:
pad由一个struct media_pad实例表示,每个实体将其焊盘存储在由实体驱动器管理的焊盘阵列中。驱动程序通常将数组嵌入到驱动程序特定
的结构中。
pads由其实体和其在pads阵列中的基于0的索引来标识。这两个信息都存储在media_pad结构中,使media_pad指针可以存储和传递链接引用的
规范方式。
pads具有描述pad的能力和状态的标志:
MEDIA_PAD_FL_SINK 表示该pad支持目标数据。
MEDIA_PAD_FL_SOURCE 表示该pad支持源数据。
必须为每个pad设置MEDIA_PAD_FL_SINK和MEDIA_PAD_FL_SOURCE中的一个且仅有一个。

Links:
链接由struct media_link实例表示。每个实体存储源自或针对链路阵列中的任何其pads的所有链路。因此,给定link被存储两次,一次在
源实体中,一次在目标实体中。数组是预分配并根据需要动态增长。
驱动程序创建链接:
media_entity_create_link(struct media_entity *source, u16source_pad,struct media_entity*sink, u16 sink_pad,u32 flags);

每个实体的链接阵列中的条目被分配并且存储指向源和接收pads的指针。

链接具有描述链接能力和状态的标志:
MEDIA_LNK_FL_ENABLED 表示链接已启用,可用于传输媒体数据。当两个或更多链路以接收器焊盘为目标时,每次只能启用其中一个。
MEDIA_LNK_FL_IMMUTABLE 指示无法在运行时修改链接启用状态。如果设置MEDIA_LNK_FL_IMMUTABLE,则由于始终启用不可变链接,因此也
必须设置MEDIA_LNK_FL_ENABLED。

Entities、pads、links 实体、垫、链接的更多相关文章

  1. EF实体实现链接字符串加密

    1.加密解密方法 using System;using System.Security.Cryptography; using System.Text;namespace DBUtility{ /// ...

  2. Umbraco中使用Related Links显示内部链接和外部链接

    在Umbraco的论坛里看到的办法,演示了如何在Umbraco中使用Related Links并显示的过程. 原文地址:http://www.nibble.be/?p=48

  3. HTML字符实体(Character Entities),转义字符串(Escape Sequence)

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  4. HTML字符实体(Character Entities),转义字符串(Escape Sequence)【转】

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  5. HTML字符实体(Character Entities),转义字符串(Escape Sequence) 转

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  6. [转]HTML字符实体(Character Entities),转义字符串(Escape Sequence)

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  7. html 和 html5(一)(表格 | 列表 | 提交按钮 | 单选 |复选 | 框架 | 脚本 | html字符实体 )

    一.框架 使用iframe来显示目录链接页面 iframe可以显示一个目标链接的页面 目标链接的属性必须使用iframe的属性,如下实例: 实例 <iframe src="demo_i ...

  8. java转换 HTML字符实体,java特殊字符转义字符串

    为什么要用转义字符串? HTML中<,>,&等有特殊含义(<,>,用于链接签,&用于转义),不能直接使用.这些符号是不显示在我们最终看到的网页里的,那如果我们希 ...

  9. EF Core 2.0中如何手动映射数据库的视图为实体

    由于Scaffold-DbContext指令目前还不支持自动映射数据库中的视图为实体,所以当我们想使用EF Core来读取数据库视图数据的时候,我们需要手动去做映射,本文介绍如何在EF Core中手动 ...

随机推荐

  1. LeetCode--122--卖卖股票的最佳时机II

    问题描述: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易( ...

  2. hdoj2476 String painter

    题意:有一刷子,能将区间内涂成同一字母.给出src,dst串,问最少涂几次? 用dp[i][j]表示区间[i,j]内最少涂的次数.len=1,2时很明显.len=3时,dp[i][j]要么就在dp[i ...

  3. Jon Snow and his Favourite Number CodeForces - 768C (技巧)

    链接 题意 给定数组, 每次操作先将数组排序, 再将奇数位全部异或x, 求k次操作后数组最大值与最小值 (1 ≤ n ≤ 105, 0 ≤ k ≤ 105, 0 ≤ x ≤ 103) 题解 直接暴力模 ...

  4. Jzzhu and Numbers CodeForces - 449D (高维前缀和,容斥)

    大意: 给定集合a, 求a的按位与和等于0的非空子集数. 首先由容斥可以得到 $ans = \sum \limits_{0\le x <2^{20}} (-1)^{\alpha} f_x$, 其 ...

  5. java MongoDB查询(一)简单查询

    前言 MongoDB的java驱动提供了查询的功能,查询条件也是bson对象,这篇就看下怎么进行简单的数据查询 1.数据结构 集合:firstCollection 数据内容: { "_id& ...

  6. 未能加载文件或程序集“LinqToExcel”或它的某一个依赖项。试图加载格式不正确的程序。

    未能加载文件或程序集“*”或它的某一个依赖项.试图加载格式不正确的程序. 原因:操作系统是64位的,但发布的程序引用了一些32位的ddl,所以出现了兼容性的问题解决方案一:如果是64位机器,IIS—— ...

  7. Struts2的手工自定义验证--完整实例代码

    ActionSupport类实现了Validateable.ValidationAware接口, 其中Validateable接口就是验证器接口,该接口有一个validate()方法, validat ...

  8. 一、WCF学习之旅-创建第一个服务

    WCF基本介绍:http://baike.baidu.com/link?url=TGjLYt3HS4dt4-hIiGRknLy6udRsZ52QxJz9cmRKlR4NXbP9rCZDsKn2fDfG ...

  9. 手把手教你搭建一个Elasticsearch集群

    一.为何要搭建 Elasticsearch 集群 凡事都要讲究个为什么.在搭建集群之前,我们首先先问一句,为什么我们需要搭建集群?它有什么优势呢? (1)高可用性 Elasticsearch 作为一个 ...

  10. ZedGraph实时曲线实例

    2010-10-17 11:23:58| 分类: ASP.NET |举报|字号 订阅public partial class FrmMain : Form { // 起始时间以毫秒为单位 int ti ...