零基础学V4L2框架

V4L2


video for linux 2 有更好的扩展性和灵活性,支持的硬件设备更多。

V4L与V4L2


支持多种设备

1、视频采集接口

高频头、摄像头

2、视频输出接口

驱动计算机的外围视频图像设备(电视信号格式的设备)

3、直接传输视频接口

不经过系统CPU 直接把视频采集设备采集的信号直接输出到输出设备上

4、视频间隔消隐信号接口

使应用可以访问传输消隐期的视频信号

5、收音机接口

可处理高频头收来的音频流

基本流程

  • 打开V4L设备节点

一般设备节点名 /dev/videoN

intfd=open("/dev/video0", O_RDWR|O_NONBLOCK);

  • 配置设备/查询设备属性

通过ioctl操作

intioctl (int__fd, unsignedlongint__request, /*args*/);

//__request是V4L2一些ioctl命令

  • 处理V4L视频数据

设备有些从硬件取出,送到应用程序处理。

通过V4L接口把视频数据发送给应用程序(显示屏幕或保存成为文件)。

  • mmap方式,驱动将内部数据空间映射到应用程序空间上,双方直接在这个空间进行数据交换,效果最高

  • 直接读取设备文件方式 直接调用 read()、write() 函数进行数据的读入和输出,配合 select( ) 使用

  • 用户指针方式 由应用程序申请缓冲区,缓冲区传给驱动,驱动将其作为缓冲区。内存共享

  • 关闭设备

调用close() ;如果是内存映射方式 在关闭前需要调用munmap接触映射

区别

V4L

V4L2

头文件

#include<linux/videodevice.h>

#include<linux/videodevice2.h>

IOCTL编号

VIDIOCXXXX

VIDIOC_XXXX 或者 VIDIOC_G_XXXX

设备版本-属性

VIDIOCGCAP

VIDIOC_QUERYCAP

数据结构-前缀

Video_

v4l2_

V4L2框架


IC模块(实体:USB摄像头包含的ISPSensor,抽象:USB设备里面的抽象拓扑结构),在 /dev 目录下生成多个设备节点,IC模块还创建非V4L设备(DVBALSAFBI2C

V4L2驱动要支持IC模块来进行音/视频的混合/编解码操作

sub-devices:有些IC模块通过一个或多个 I2C 总线连接到主桥驱动上,其他主线仍可使用。(摄像头Sensor传感器,用I2C命令 同时使用MIPILVDS等接口进行图像数据传输)


[MIPI] 移动行业处理器接口(Mobile Industry Processor Interface)

[LVDS] 小振幅差分信号技术(Low Voltage Differential Signaling)

[ISP] 图像信号处理(Image Signal Process)

[Sensor] 传感器

[DVB]

[ALSA]

[FB]

[I2C]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值