USB Video Class驱动是WINDOWS系统包含的一个针对于USB VIDEO 类的驱动程序.

好多project师都做过USB VIDEO设备端的开发, 基本的工作内容为: 使用FIRMWARE,或者LIINUX GADGET驱动程序, 构建USB VIDEO设备的描写叙述符, 通过这些描写叙述符的TOPOLOGY关系, 让系统了解,设备所支持的某些控制, 支持的视频格式, 系统驱动通过对这些描写叙述符的解释, 构建自己的KS, FILTER, NODE, PIN网络, 属性, 方法, 终于, 又由这些FILTER, NODE, PIN的属性,方法提供的接口,供DShow展现给上层应用.

设备端须要LENS的视频数据(VSYNC,HSYNC, DATA)打成USB VIDEO类型的包, 加上12字节的头, 通过BULK或者ISO EP往上层传输, 对应的PROBE/COMMIT, 视频属性的控制,终于都是将上层的CLASS REQUEST转化为底层硬件的设置.

设备端的开发, 能够说,仅仅是一部分, 对整个系统的了解,也仅仅是较小的一块.

WINDOWS帮助USB VIDEO CLASS的系统实现了很多其它的部分.

USBVIDEO.SYS作为PIN-CENTRIC 的AVSTREAM minidriver, 依据设备的描写叙述符, 创建了filter factory(同一时候对对设备的INPUT,OUTPUT terminal).

利用设备描写叙述符内容, USB VIDEO CLASS驱动, 在系统内部构建了FILTER, NODE, 与CONNECTIONS建立的一张GRAPH.

同一时候,通过描写叙述符中对应的控制CONTROL, USB VIDEO CLASS也在FILTER, PIN, NODE的描写叙述符及其属性中增加对应的AUTOMATION TABLES.

依据描写叙述符中的视频数据格式, 驱动相同向KS提交数据范围的列表以及数据交集的处理名柄.

该驱动相同为音视频同步做了考虑, 主旨是通过KS的MASTER CLOCK给视频数据打上时间戳, 作为同步需求的參考时间.

为了和驱动交互, 应用程序通过DShow COM 接口来达到应用的目的.

做过AVStream/BDA驱动的project师都了解,AVStream/BDA的架构的复杂程度, 与设备端的程序的直观性, 易理解性,易调试性,都不是一个数量级的.

要真正从底层到顶层, 一个USB VIDEO CLASS设备的理解, 包含USB DEVICE CONTROLLER, CMOS, FIRMWARE/LINUX GADGET, 还包含, AVSTREAM/BDA架构与细节, DShow, 等一系列的内容.

转载于:https://www.cnblogs.com/ldxsuanfa/p/9943276.html

第十八篇:融汇贯通--谈USB Video Class驱动相关推荐

  1. 2021年安全生产工作总结及2022年思路计划(二十八篇)PPTX(附下载)

    摘要:2021年安全生产工作总结及2022年思路计划(二十八篇) 公众号:安全生产星球

  2. 实习日志_实习律师实习日志第十八篇(连载30篇)

    提供实习律师实习日记相关的文章资讯,希望我的分享能让您感到满意! 这个月接触最多的是人身损害赔偿的一些案件,交通事故.工伤的一些案件最多.起初,以为这些案件就是走走法律流程便可了事,最简单不过,可当完 ...

  3. 第六十八篇:从ADAS到自动驾驶(一):自动驾驶发展及分级

    作者:liaojiacai     邮箱: ljc_v2x_adas@foxmail.com 从ADAS到自动驾驶(一):自动驾驶的发展及分级 从今天起,我将根据自己所接触的ADAS和无人驾驶技术,来 ...

  4. “约见”面试官系列之常见面试题之第八十八篇之什么是vue生命周期(建议收藏)

    我们知道vue是一个构建数据驱动的 web 界面的渐进式框架,那么vue生命周期是什么呢?本篇文章就给大家来介绍一下vue生命周期的内容,希望可以帮助到有需要的朋友. vue生命周期是什么? Vue生 ...

  5. 第十八篇,Simulink with Git

    一.综述 本篇以MATLAB R2021b为基础讲解如何对Simulink模型做Git管理,mdl与slx均可. Git并非只能对手写代码做版本管理,它的应用十分广泛,囊括了各种使用编程语言编写的代码 ...

  6. SpringBoot第十八篇: 定时任务(Scheduling Tasks)

    这篇文章将介绍怎么通过spring去做调度任务. 构建工程 创建一个Springboot工程,在它的程序入口加上@EnableScheduling,开启调度任务. @SpringBootApplica ...

  7. 第十八篇:Question Answering问答系统

    目录 介绍 事实问题 非事实问题 为什么我们关注 NLP 中的事实问题? 2 种关键方法 大纲 IR-based QA 基于 IR 的 事实(Factoid) QA:TREC-QA 问题处理 答案类型 ...

  8. Java程序员从笨鸟到菜鸟之(六十八)细谈Spring(二)自己动手模拟spring

    在我们学习spring之前,根据spring的特性,我们来自己来模拟一个spring出来,也就是说不利用spring来实现spring的效果.本实例主要是实现spring的IOC功能. 点击下载源码: ...

  9. WPF效果第一百七十八篇ItemsControl旋转

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果.Expande ...

最新文章

  1. 阎崇年:《袁崇焕传》自序
  2. PYTHON -MYSQLDB安装遇到的问题和解决办法
  3. [转]Laravel 4之URL生成
  4. python tkinter Listbox用法
  5. Office Web Apps安装部署(一)
  6. 手机运行内存越大就越好吗?4GB与8GB的差距真的很明显吗?
  7. uva 1331 - Minimax Triangulation(dp)
  8. 新版 世界地图 中文版地图 国界地图 高清全彩矢量地图 CDR 2021年整理制作
  9. vue怎么编辑已有视频_vue如何编辑视频 vue编辑视频方法
  10. 通讯录 C语言分类,C语言 通讯录
  11. 社会网络分析中的基本概念
  12. mysql创建学生信息选课系统_MySQL学生信息管理系统
  13. 圆锥曲线的定值定点问题
  14. 【每日AI】什么是维数?
  15. 6657生成调试工程pdkProjectCreate说明
  16. Python学习路线图
  17. 卡塔尔世界杯出现了半自动越位识别技术、Feelix Palm、动作轨迹捕捉等黑科技,一起来看看吧。
  18. 微信支付分(二)--查询支付分订单
  19. python中pass语句的作用是什么_简述 Python 中 pass 语句的作用。
  20. HTML5+CSS3选择器

热门文章

  1. Kindling the Darkness: A Practical Low-light Image Enhancer
  2. python骨灰教学_10招!看骨灰级Pythoner玩转Python的方法
  3. 这座“坟墓”埋葬着谷歌那些年死去的产品
  4. K-means聚类以及利用K-means来压缩图像
  5. NTC热敏电阻温度计算公式
  6. 支付宝统一支付回调接口(适用于H5、PC、APP)
  7. 别让STAR原则的简历毁了你的前途!
  8. 罗辑思维时间的朋友2021跨年演讲:长大以后
  9. 用matlab解方程组例子,Matlab求解超定方程组实例
  10. matplotlib 怎么画核密度