帮帮文库

返回

基于v4l2的视频驱动开发的设计与开发 基于v4l2的视频驱动开发的设计与开发

格式:word 上传:2022-06-25 17:08:16

《基于v4l2的视频驱动开发的设计与开发》修改意见稿

1、“.....这个调用通常不会失败,除非是硬件出现了非常严重的问题。其他的回调函数还有与捕获接口样使用相同的方式使用同个字段。多数应用都想最终对硬件进行配置以使其为应用提供种符合其目的的格式。改变视频格有两个接口。第个是调用,它在驱动中转化为下面的回调函数要处理这个调用,驱动会查看请求的视频格式,然后断定硬件是否支持这个格式。如果应用请求的格式是不能支持的,就会返回所以,例如,个描述了个不支持格的编码或者请求了个隔行扫描的视频,而设备只支持逐行扫描的就会失败。在另方面,驱动可以调整字段,以与硬件支持的图像大小相适应。普便的做法是可能的话就将大小调小。所以个只能处理分辨率的设备驱动会根据情况相应地调整和参数而成功返回。结构体会在调用后复制给用户空间驱动应该更新这个结构体以反映改变的参数......”

2、“.....这个处理对于驱动来说是可选的,但是不推荐忽略这个功能如果提供了的话,这个函数可以在任何时候调用,甚至时设备正在工作的时候。它不可以对实质上的硬件参数做任何改变,只是让应用知道都可以做什么的种方式。如果应用要真正的改变硬件的格式,它使用调用,它以下面的方式到达驱动与不同,这个调用是不能随时调用的如果硬件正在工作,或者有流缓冲器己经开辟了未来另篇文章的,改变格式会带来无尽的麻烦。想想会发生什么,比如说,个新的格式比现在使的缓冲区大的时候。所以驱动要直保证硬件是空闲的,如果不空闲就对请求返回失败格式的改变应该是原子的它或者改变所以的参数以实现请求否则就必须个也不改变同样,驱动在必要时是可以改变图像的大小的,通常的回调函数格式与下面的差不多使用句柄可以避免代码重写而且可以避免任何没有先实现那个函数的借口如果函数成功返回,结果格式就己知并且可以直接编程进硬件......”

3、“.....将来的文章将会讨论他们中的部分。支持设置格式就足以让应用开始传输图像了,而且那也这个结构体的最终目的所以下篇文章,希望会在这次之后的时间不会太久我们会来关注对视频数据的读和写的支持。驱动编写篇第六基本的帧输入输出基本的帧输入输出关于视频驱动的这系列文章己经更新了好几期,但是我们还没有传输过帧的视频数据。虽然在这点上,我们己经了解了足够多的关于格式协定方面的细节,我们可以看下视频帧是如何在应用和设备之间传输的了。定义了三种不同的传输视频帧的方法,现在有两种是可以实现的和系统调用这种普通的方法根据硬件和驱动的不同,这种方法可能会非常慢但也不是定会那样将帧直接以视频流的方法送到应用可以访问的缓冲区视频流这际上是传输视频数据的最有效的方法这种接口还允许在图像帧中附带些其他信息视频流的方法有两种变种,其分别在于缓冲的开辟是在用户空间还是内核空间......”

4、“.....然而这种模式还没有实现,因此不能使用。这篇将关注的是简单的和接口,视频流的方式将在下期来讲解。和规范并没有规定要实现和,然而很多简单的应用希望这种系统调用可用,所以可能的话,驱动的作者应该使之工作。如果驱动没有实现这些系统调用,它应该在保证置位,来回应调用。然而以笔者的经验,多数的应用在使用调用之前,根本就不会是费心查看调用是否可用。驱动的和或方法必须存在相关的结构中的字段里。注意规范要求实现这些方法,从而也提供操作。在下视频捕获设备上实现操作是非常直接的驱动告诉硬件开始捕获帧,发送帧到用户空间缓冲,然后关停硬件并返回。如果可能的话,驱动应该安排操作直接将数据传送到目的缓冲区,但这种方式只有在控制器可以处理分散聚集的时候可能。否则,驱动应该在内核里启用帧缓冲区。同样,写操作也是尽可能直接传到设备,否则启用帧缓冲区。不那么简单的操作也是可以的......”

5、“.....在秒钟的下部分,摄像头中的后续帧将会存储在内核的缓冲区中,如果应用发出了另个读的调用,它将会更快的反应,无续再次启动硬件。经过定数目的帧都没有读的话,控制器就会被放回空闲的状态。同理,写操作时,也会廷时几十毫秒,意在帮助应用与硬件帧同步。流参数和系统调用会调整些,专用的参数,其中些更加普便。它看起来像是个设置没有明显归属的杂项的调用。我们在这里就了解下,虽然有些参数同时会影响流输入输出的参数。支持这些调用的驱动提供如下两个方法结构包含下面的联合,这系列文章的读者到现在应该对它们己经很熟悉了。字段描述的是在涉及的操作的类型。对于视频捕获设备,应该为。对于输出设备应该为。它的值也可以是,在这种情况下,字段用来传递些私有的,不可移植的,甚至是不鼓励的数据给内核。对于捕获设备而言,字段是要关注的内容,这个结构体如下字段是组功能标签......”

6、“.....它代表可以改变帧频率。也是个只定义了个标签的字段,这个标签意在使硬件在高清模式下工作,实现单帧的捕获。这个模式可以做出任何的牺牲包括支持的格式,曝光时间等,以达到设备可以处理的最佳图片质量。字段用于指定想要使用的帧频率,它又是个结构体和所描述的系数给出的是成功的帧之间的时间间隔。另个驱动相关的字段是,它在中没有明确的意义。字段是操作被调用时内核应为输入的帧准备的缓冲区数量。对于输出设备,其结构体如下和字段与捕获设备中的意义相同。和与和对应相同。当应用想要查询现在的参数时,它会发出个调用,因而调用驱动的方法。驱动应该提供现在的设置,不用的话确保将设为,并且把字段永远设为设置参数将调用。在这种情况下,驱动将参数设为与应用所提供的参数尽可能近的值,并调整结构体以反应现行使用的值。例如,应用可以会请求个比硬件所能提供的更高的帧频率,在这种情况下,帧频率会设为最高......”

7、“.....如果应用提供为,这句不懂。如果或是,驱动应返回现行设置而不是删除缓冲区。到现在为止,我们已经可以写个支持和方式帧传输的简单的驱动了。然而多数正式的应用要使用流输入输出方式流的方式使高性能变得更简单帧可以打包带上附加信息如帧序号,请继续关注本系列的下篇文章,我们将讨论如何在视频驱动中实现流驱动编写篇第六流输入输出在本系列文章的上期中,我们讨论了如何通过和的方式实现视频帧的传输,这样的实现尝试将通过直接将数据传送到用户空间,那将会非常的具有挑战性。要想把数据直接传送到用户空间,驱必须先缓冲区的所以的页,并将其锁定。可以做这件事注意这个函数会在开辟很大的内存空间和硬盘它可能会卡住很长时间。你得注意要保证重要的驱动功能不能在时停止,因为它可能停止很长时间等待许多视频帧通过。下面就是要告诉设备把图像数据传到用户空间缓冲区或是相反的方向了。缓冲区在物理上不是相临的,相反......”

8、“.....很明显,设备得可以实现分散聚集操作才行。如果设备立即传输个完整的视频帧,它就需要接受个包含很多页的分散列表。个位格式的解决方案的图像需要个页,随着图像大小的增加,分散列表的大小也会增加规范说如果硬件需要,驱动要与物理内存交换内存页,以产生相临的内存区。这对内核子系统的虚拟内存中的应用来说是透明的。然而,笔者却不推荐驱动作者尝试这种深层的虚拟内存技巧。有个更有前途的方法就是要求用户空间缓冲区分配成大的页,但是现在的驱动不那么做。如果你的设备转输的是小图像如摄像头,直接从到用户空间的设定就简单些。在任何情况下,不得不支持到用户空间缓冲区的直接时,驱动作者都应该确定的确值得这么大的麻烦,因为应用更趋向于使用内存映射缓冲区。使用屋,它可以帮你解决些痛苦的难题。旦流输入输出开始,驱动就要从它的传入队列里抓取缓冲区,让设备更快地实现转送请求......”

9、“.....转输开始时,缓冲区标签也要相应调整。像序号和时间戳这样的字段必需在这个时候添充。最后,应用会在传出队列中认领缓冲区,让它变回为用户空间状态。这是的工作,它最终变为如下调用这里,驱动会从传出队列中移除第个缓冲区,把相关的信息存入通常,传出队列是空的,这个调用会处于阻塞状态直到有缓冲区可用。然而是用来处理非阻塞的,所以如果视频设备是以方式打开的,在队列为空的情况下驱动就该返回当然,这个要求也暗示驱动必须为流支持剩下最后的个步骤实际上就是告诉设备开始流输入输出操作。这个任务的驱动方法是对的调用应该在检查类型有意义之后让设备开始工作。如查需要的话,驱动可以请求等传入队列中有定数目的缓冲区后再开始流的转输当应用关闭时,它应发出个对的调用,这个调用要停止设备。驱动还应从传入还传出队列是移除所有的缓冲区,使它们都处于用户空间状态。当然,驱动必须准备好......”

下一篇
温馨提示:手指轻点页面,可唤醒全屏阅读模式,左右滑动可以翻页。
基于v4l2的视频驱动开发的设计与开发.doc预览图(1)
1 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(2)
2 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(3)
3 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(4)
4 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(5)
5 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(6)
6 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(7)
7 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(8)
8 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(9)
9 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(10)
10 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(11)
11 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(12)
12 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(13)
13 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(14)
14 页 / 共 46
基于v4l2的视频驱动开发的设计与开发.doc预览图(15)
15 页 / 共 46
预览结束,还剩 31 页未读
阅读全文需用电脑访问
温馨提示 电脑下载 投诉举报

1、手机端页面文档仅支持阅读 15 页,超过 15 页的文档需使用电脑才能全文阅读。

2、下载的内容跟在线预览是一致的,下载后除PDF外均可任意编辑、修改。

3、所有文档均不包含其他附件,文中所提的附件、附录,在线看不到的下载也不会有。

  • Hi,我是你的文档小助手!
    你可以按格式查找相似内容哟
DOC PPT RAR 精品 全部
小贴士:
  • 🔯 当前文档为word文档,建议你点击DOC查看当前文档的相似文档。
  • ⭐ 查询的内容是以当前文档的标题进行精准匹配找到的结果,如果你对结果不满意,可以在顶部的搜索输入框输入关健词进行。
帮帮文库
换一批

搜索

客服

足迹

下载文档