首页 > 系统相关 >【v4l2】Linux多媒体框架 - videobuf2详解

【v4l2】Linux多媒体框架 - videobuf2详解

时间:2023-04-23 21:34:53浏览次数:31  
标签:struct 框架 videobuf2 buffer vb2 Linux 物理地址 v4l2

框架分析

框架可以分为两部分看:控制流+数据流,之前已经大概的描述了控制流,数据流部分就是video buffer,V4l2 buffer的管理是通过videobuf2来完成的,它充当于用户空间和驱动空间之间的中间层,并提供模块化的内存管理功能。

img

上图大体包含了videobuf2的框架

1.vb2_queue:核心的数据结构,用于描述buffer队列,其中struct vb2_buffer *bufs[]是存放buffer节点的数组,该数组中的成员代表了vb2 buffer.并将在queued_list和down_list两个队列中进行流转。

2.struct vb2_buf_ops:buffer的操作函数集,由驱动来实现,并由框架通过call_bufop宏来对特定的函数进行调用;

3.struct vb2_mem_ops:内存buffer分配函数接口,buffer类型分为三种:(1)虚拟地址和物理地址都分散,,可以通过dma-sg来完成;(2)物理地址分散,虚拟地址连续,可以通过vmalloc分配;(3)物理地址连续,可以通过dma-config来完成;三种类型在vb2框架总都有实现,框架可以通过call_memop来调用。

4.struct vb2_ops:vb2队列操作函数集,由驱动来实现对应的接口,并在框架中通过call_vb_qop宏被调用。

流程分析

以omap3isp/ispvideo.c为例进行分析:

buffer申请(REQUBUFS):

img

buffer enqueue(QBUF):

img

buffer dequeue(DQBUF):

img

stream on :

img

相关结构说明

标签:struct,框架,videobuf2,buffer,vb2,Linux,物理地址,v4l2
From: https://www.cnblogs.com/Wangzx000/p/17347798.html

相关文章

  • Linux挂载硬盘(Ubuntu)
    Ubuntu挂载硬盘(小于2T,非加密磁盘)1.查看可挂载硬盘设备名fdisk-luser@test:~$sudofdisk-l如图,可以看到我们要挂载的磁盘设备名为/dev/sdb2.添加磁盘,并按图中标注的操作(n,p,回车,回车,回车,w)。user@test:~$sudofdisk/dev/sdb通过fdisk-l再次查看,如下图,设备名已经为/......
  • linux切换桌面模式
    指定运行级别(指定运行级别使用的是init0~6或者是systemctlget-default是查看当前运行级别。systemset-defaultmulti-user.target表示切换到运行级别3systemset-defaultgraphical.target表示切换到运行级别5) ......
  • Linux 删除 No such file or directory
    -rw-rw-r--1appsapps35859Apr2317:10weblogicdate+%Y%m%d%H%M.log[apps@anvx-8-90logs]$rmweblogicdate+%Y%m%d%H%M.logrm:cannotremove‘weblogicdate’:Nosuchfileordirectoryrm:cannotremove‘+%Y%m%d%H%M.log’:Nosuchfileordirectory......
  • javax.swing.JFrame linux x11
    Causedby:org.springframework.beans.BeanInstantiationException:Couldnotinstantiatebeanclass[com.enation.javashop.core.service.impl.HtmlToJpgUtil]:Constructorthrewexception;nestedexceptionisjava.awt.HeadlessException:No......
  • linux 的touch命令
    之前一直以为,touch命令的原本意图是创建文件,这也是我们运行touch的大部分场景。今天,看到了官方手册页的描述,touch-changefiletimestamps,刷新了认知。原来touch是修改文件的时间戳的。UpdatetheaccessandmodificationtimesofeachFILEtothecurrenttime.......
  • Linux作为rsync的服务端,Windows作为rsync的客户端
    服务端:centos7     172.16.106.199客户端:Windows10  172.16.106.143 服务端配置:创建服务器要同步数据的目录/tmp/rsyncmkdir/tmp/rsync设置权限为700chmod700 /tmp/rsync/ 编辑配置文件/etc/rsyncd.conf (修改该文件 除了修改监听端口跟ip需要重启,修......
  • linux top命令参数详细介绍
    top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。top显示系统当前的进程和其他状况,是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,......
  • linux中误删掉/tmp目录后,怎么办?
    chmod1777/tmp或mkdir/tmp&&chmod1777/tmp在Linux系统中TMP目录比较特殊,所有用户都能创建属于自己的文件。我们需要使用特殊权限粘滞位(stickybit)来授权:drwxrwxrwt表示1777......
  • 抓住Linux黄金60秒
    如果你的Linux服务器突然负载暴增,告警短信快发爆你的手机,如何在最短时间内找出Linux性能问题所在?来看Netflix性能工程团队的这篇博文,看它们通过十条命令在一分钟内对机器性能问题进行诊断。概述通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。uptimedmesg|tail......
  • Linux 环境,设置git账户密码,免登录
    1git配置个人用户信息#配置用户名gitconfig--globaluser.namewangjing#配置用户邮箱[email protected]#配置记住用户验证信息gitconfig--globalcredential.helperstore#查看相关配置信息gitconfig--lis  2保存账号2.1创建配......