首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Linux V4L2子系统-videobuf2框架分析

为此,Linux内核抽象出了videobuf2机制,用于管理存放视频图像的帧缓冲。videobuf2抽象层像一座桥梁,将用户空间和V4L2 driver连接起来。...二、分类: 不是所有的Video设备都使用同一种类型的videobuf2。实时上,Linux内核中有3中不同类型的videobuf2。 (1)缓冲区物理地址和虚拟地址不连续。...Linux系统分为用户空间和内核空间,应用程序处于用户空间,而内核运行在内核空间。V4L2子系统属于内核的组件,也运行在内核空间,其采集的数据也保存在内核空间的内存中。...[include/uapi/linux/videodev2.h] // videobuf2类型枚举 enum v4l2_buf_type { V4L2_BUF_TYPE_VIDEO_CAPTURE...[include/linux/dma-direction.h] enum dma_data_direction { // DMA数据传输方向 DMA_BIDIRECTIONAL

98370
您找到你想要的搜索结果了吗?
是的
没有找到

V4L2 实例分析 —— vivi.c 源码详解(深度好文)

一、V4L2 驱动核心: V4L2 驱动源码在 drivers/media/video 目录下,主要核心代码有: v4l2-dev.c:Linux 版本 2 视频捕捉接口,主要结构体 video_device...的注册; v4l2-common.c:在 Linux 操作系统体系采用低级别的操作一套设备 struct tures/vectors 的通用视频设备接口; v4l2-device.c:V4L2 的设备支持...v4l2_device; v4l2-ioctl.c:处理 V4L2 的 ioctl 命令的一个通用的框架; v4l2-subdev.c:v4l2 子设备; v4l2-mem2mem.c:内存到内存为 Linux...和 videobuf 视频设备的框架,设备的辅助函数,使用其源和目的 videobuf 缓冲区。...video_register_device 在 v4l2-dev.c 中定义:(就直接在代码中注释了) /** * __video_register_device - register video4linux

46110

宋宝华:世上最好的共享内存(Linux共享内存最透彻的一篇)

我早就想系统地写一篇综述Linux里面各种共享内存方式的文章了,但是一直被带娃这个事业牵绊,今日我决定顶着娃娃们的山呼海啸,也要写一篇文章不吐不快。...数字本身在Linux的fd里面真地是一点都不重要,除了几个特殊的0,1,2这样的数字外。...我只能说,你对Linux内核的只提供机制不提供策略,以及软件工程每个模块各司其责,高内聚和低耦合的理解,还停留在裸奔的阶段。...比如在v4l2驱动中,v4l2驱动支持把dma_buf导出(前面讲了v4l2也支持dma_buf的导入,关键看数据方向),它的代码体现在: drivers/media/common/videobuf2/...videobuf2-dma-contig.c中的: ?

42.9K1313

宋宝华:论Linux的页迁移(Page Migration)完整版

我认为有2种场景下,你会关注这个Page迁移的问题:一个是在Linux里面写实时程序,尤其是Linux的RT补丁打上后的情况,你希望你的应用有一个确定的时延,不希望跑着跑着你的Page正在换位置而导致的延迟...在Linux中,执行mlock()操作的时候,相应的VMA会被设置VM_LOCKED标记。...我们可以看看V4L2驱动,如果用户空间传一个指针进来进行DMA,V4L2驱动的内核态是如何处理的,相关代码位于drivers/media/v4l2-core/videobuf-dma-sg.c: ?...videobuf_dma_init_user_locked()根据用户空间buffer的开始地址和大小,计算出page的数量,然后调用pin_user_pages()把这些page在内核pin住。...从用户场景上来看,内核驱动Pin住了USERPTR对应的memory后,进一步,V4L2的代码videobuf_dma_map()会把这个buffer转换为sg进行map_sg操作,之后就可以DMA了。

4.1K41
领券