linux视频媒体(kernel层分析)主要包括三个文件:

  (/drivers/media/media-device.c ,  /drivers/media/media-devnode.c , /drivers/media/media-entity.c)

一.主要分析/drivers/media/media-device.c文件,此文件中主要的结构是:

  

/*dev->driver_data points to this struct*/
struct media_device { //媒体设备结构体
struct device *dev; //Parent device
struct media_devnode devnode; //媒体设备节点
char model[];//设备型号名称
char driver_name[]; //驱动的名称,如果没有设置,就返回dev->driver->name
char serial[];//设备序列号
char bus_info[];//设备位置标识符
u32 hw_revision;
u32 driver_version; //驱动版本
u32 topology_version; //拓扑版本
u32 id;//注册的图形对象上使用的唯一ID
struct ida entity_internal_idx;
int entity_internal_idx_max;
struct list_head entities; //List of registered entities
struct list_head interfaces; //List of registered interfaces
struct list_head pads; //List of registered pads
struct list_head links; //List of registered links
   /*entity注册成功的回调通知链表*/
struct list_head entity_notify; //notify callback list invoked when a new entity is registered
spinlock_t lock; //Protects the graph objects creation/removal
struct mutex graph_mutex; //Serializes graph operations.
struct media_entity_graph pm_count_walk; //Graph walk for power state walk.
void *source_priv;//Driver Private data for enable/disable source handlers
int (*enable_source)(struct media_entity *entity, struct media_pipeline *pipe);
void (*disable_source)(struct media_entity *entity);
  /**
  * Supported link_notify @notification values.
    #define MEDIA_DEV_NOTIFY_PRE_LINK_CH 0
    #define MEDIA_DEV_NOTIFY_POST_LINK_CH 1
  */
  int (*link_notify)(struct media_link *link, u32 flags, unsigned int notification);//Link state change notification callback
};

/*此结构体对应于struct media_device结构体中的 struct list_head entity_notify链表*/
struct media_entity_notify {
struct list_head list;
void *notify_data; // Input data to invoke the callback
void (*notify)(struct media_entity *entity, void *notify_data); //Callback function pointer
};

主要API:

  void media_device_init(struct media_device *mdev);

  void media_device_cleanup(struct media_device *mdev);

  media_device_register(mdev); // __media_device_register(struct media_device *mdev, struct module *owner);

  void media_device_unregister(struct media_device *mdev);

linux视频之media媒体框架的更多相关文章

  1. python全栈开发day51-jquery插件、@media媒体查询、移动端单位、Bootstrap框架

    一.昨日内容回顾 技术行业 (1)ajax技术 XMLHttpRequest() <1>创建XMLHttpRequest()对象 <2>检测状态(通过readyState的改变 ...

  2. 【Linux开发】V4L2驱动框架分析学习

    Author:CJOK Contact:cjok.liao#gmail.com SinaWeibo:@廖野cjok 1.概述 Video4Linux2是Linux内核中关于视频设备的内核驱动框架,为上 ...

  3. css3 media媒体查询器用法总结

    随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得在国内IE6用户居高不下的情况下,这些新的技术还不会广泛的蔓延下去,那你就错了,如今淘宝,凡客,携程等等公司都已经在大胆 ...

  4. Virtio:针对 Linux 的 I/O 虚拟化框架

    Virtio:针对 Linux 的 I/O 虚拟化框架 --http://www.ibm.com/developerworks/cn/linux/l-virtio/#ibm-pcon 使用 KVM 和 ...

  5. css3 media媒体查询器用法总结 兼容ie8以下的方法

    总结一下响应式设计的核心CSS技术Media(媒体查询器)的用法. http://www.360doc.com/content/14/0704/06/10734150_391862769.shtml ...

  6. linux视频录制,推流处理

    1.linux视频合成(视频后缀要一致) ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -lavfi hstack=inputs=3 4.mp4 (input=3表示希望合并的视 ...

  7. CSS Media媒体查询使用大全,完整媒体查询总结

    前面的话 一说到响应式设计,肯定离不开媒体查询media.一般认为媒体查询是CSS3的新增内容,实际上CSS2已经存在了,CSS3新增了媒体属性和使用场景(IE8-浏览器不支持).本文将详细介绍媒体查 ...

  8. css3 media媒体查询器用法总结(附js兼容方法)

    css3 media媒体查询器用法总结 标签:class   代码   style   html   sp   src 随着响应式设计模型的诞生,Web网站又要发生翻天腹地的改革浪潮,可能有些人会觉得 ...

  9. Linux 视频设备驱动V4L2最常用的控制命令

    http://blog.csdn.net/shaolyh/article/details/6583226 Linux 视频设备驱动V4L2最常用的控制命令使用说明(1.02) 命令 功能 VIDIOC ...

随机推荐

  1. HK2使用详解

    HK2介绍 组件 生命周期 定义服务 注入服务 HK2介绍 HK2是一个轻量级动态依赖注入框架,它是JSR-330的实现. 组件 在HK2组件模型中,一个组件的功能是通过服务接口-服务实现的模式声明的 ...

  2. Web.py 框架学习笔记 - ctx

    摘要: ctx用于存取web请求的环境变量,基于ThreadedDict类进行实例化.ThreadedDict类可实例化字典类型的对象,该对象某些属性可用于存取处理线程的id. 这样字典化实例的线程池 ...

  3. 图论中DFS与BFS的区别、用法、详解…

    DFS与BFS的区别.用法.详解? 写在最前的三点: 1.所谓图的遍历就是按照某种次序访问图的每一顶点一次仅且一次. 2.实现bfs和dfs都需要解决的一个问题就是如何存储图.一般有两种方法:邻接矩阵 ...

  4. socket和抓包工具wireshark

    socket和抓包工具wireshark 最近在学习Python代码中的socket和抓包工具wireshark,故又将socket等概念又学习了一遍,温故而知新: Python代码如下: serve ...

  5. KVM虚拟化主机安装

    KVM虚拟化主机安装 最小化安装CentOS6.X或者CentOS7.X,RHEL6.X以上系列建议建议选择安装最小虚拟化主机 如果要安装桌面可以先选择最小化虚拟主机,再选择Gnome桌面包 安装过程 ...

  6. 201521123091 《Java程序设计》第8周学习总结

    Java 第八周总结 第八周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 1.本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集 ...

  7. mysql外键设置选项

    . cascade方式 在父表上update/delete记录时,同步update/delete掉子表的匹配记录 . set null方式 在父表上update/delete记录时,将子表上匹配记录的 ...

  8. 201521123056 《Java程序设计》第6周学习总结

    1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...

  9. 201521123098 《Java程序设计》 第5周学习总结

    1. 本周学习总结 1.1 尝试使用思维导图总结有关多态与接口的知识点. 1.2 可选:使用常规方法总结其他上课内容. 1. 对接口这一定义有了初步的了解: 2. 学习了如何定义实现类和如何实现一些接 ...

  10. 201521123087 《Java程序设计》第2周学习总结

    1.本周学习总结 类名第一个字母大写,类名下的方法如main第一个字母要小写: Java有三种基本数据类型:整型(byte,short,int,long,char),浮点型(float,double) ...