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. Symbol的控件模板

    <esriSymbols:TextSymbol x:Name="text1" Text="adadfdf"></esriSymbols:Tex ...

  2. 源代码方式调试Mycat

    如果是第一次刚接触MyCat建议下载源码在本地通过eclipse等工具进行配置和运行,便于深入了解和调试程序运行逻辑. 1)源代码方式调试与配置 由于MyCat源代码目前主要托管在github上,大家 ...

  3. 20161208xlVBA工作表数据导入Access

    Sub InsertToDataBase() Dim DataPath As String Dim SQL As String Const DataName As String = "yun ...

  4. mac 地址

  5. android升级adt和sdk之后无法识别SDK Location的一个解决方式

    我把android的adt和sdk从4.0升级到4.2,发现eclipse的android设置里面原来列出的各种api level的platform消失了,而且无法新建android工程.而且检查过了 ...

  6. Leetcode 105

    /** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode ...

  7. UA 列表

    设备 系统 浏览器 User-Agent iPhone IOS QQ浏览器 Mozilla/5.0 (iPhone 84; CPU iPhone OS 10_3_3 like Mac OS X) Ap ...

  8. elasticsearch term match multi_match区别

    转自:http://www.cnblogs.com/yjf512/p/4897294.html match 最简单的一个match例子: 查询和"我的宝马多少马力"这个查询语句匹配 ...

  9. WindowsLiveWriter安装步骤

    WindowsLiveWriter 安装WindowsLiveWriter.exe http://www.cnblogs.com/rhxuza1993/

  10. Jquery中bind(), live(), on(), delegate()四种注册事件的优缺点,建议使用on()

    jquery中注册的事件,注册事件很容易理解偏差,叫法不一样.我第一反应就是如何添加事件,使用onclick之类的,暂时不讨论js注册事件的方法. 也看到园内前辈写过相关的帖子,但不是很详细,我找到了 ...