当前位置: 首页 > news >正文

电商型网站建设价格小程序拉新推广平台

电商型网站建设价格,小程序拉新推广平台,网站制作心得体会200字,广东网站备案要多久V4L2 简介 Video for Linux two(Video4Linux2)简称 V4L2,是 V4L 的改进版。V4L2 是 linux操作系统下用于视频和音频数据采集设备的驱动框架,为驱动和应用程序提供了一套统一的接口规范。 在 Linux 下,所有外设都被看成一种特殊的文件&#xf…

V4L2 简介

        Video for Linux two(Video4Linux2)简称 V4L2,是 V4L 的改进版。V4L2 是 linux操作系统下用于视频和音频数据采集设备的驱动框架,为驱动和应用程序提供了一套统一的接口规范。

        在 Linux 下,所有外设都被看成一种特殊的文件,成为“设备文件”,可以象访问普通文件一样对其进行读写。采用 V4L2 驱动的摄像头设备文是/dev/videoX以及一些子设备/dev/v4l-subdevX。V4L2 支持两种方式来采集图像:内存映射方式(mmap)和直接读取方式(read)。应用层通过 open/ioctl/close 等函数来操作V4L2 设备文件的方式控制 camera 设备。

V4L2 支持的设备:

  1. Video capture device : 从摄像头等设备上获取视频数据。对很多人来讲,video capture 是 V4L2 的基本应用。设备名称为/dev/video,主设备号 81,子设备号 0~63
  2. Video output device : 将视频数据编码为模拟信号输出。与 video capture 设备名相同。
  3. Video overlay device : 将同步锁相视频数据(如 TV)转换为 VGA 信号,或者将抓取的视频数据直接存放到视频卡的显存中。
  4. Video output overlay device :也被称为 OSD(On-Screen Display)
  5. VBI device : 提供对 VBI(Vertical Blanking Interval)数据的控制,发送 VBI 数据或抓取 VBI 数据。设备名/dev/vbi0~vbi31,主设备号 81,子设备号 224~255
  6. Radio device : FM/AM 发送和接收设备。设备名/dev/radio0~radio63,主设备号81,子设备号 64~127

V4L2 架构总览

总体架构图

CRM 根设备

CRM 即 camera request manager,创建了 V4L2 根设备/dev/video0,供所有子设备注册。

V4L2 子设备

每个子设备实现特定功能,如音视频混合,编解码等。对于 camera,有如下子设备:

SENSOR, IFE, ICP, LRME, JPEG, FD, CPAS, CSIPHY, ACTUATOR, CCI, FLASH,EEPROM, OIS 等。

通过设备文件/dev/v4l-subdevX 供应用层(CSL)调用其功能。

V4L2 驱动层实现

V4L2 驱动架构

几个重要的结构体

  1. video_device:保存 V4L2 的 device node 数据。
  2. v4l2_device:表示一个 v4l2 设备,各个子设备都挂在这个结构体里面。
  3. v4l2_subdev:每个子设备都有一个实例。

Kernel V4l2 的文档:
https://www.kernel.org/doc/html/v4.9/media/kapi/v4l2-core.html

驱动主要实现的功能

  1. 具体硬件的控制代码
  2. 实现 V4L2 架构相关结构体与函数
  3. 将代码(结构体与函数)与 V4L2 框架绑定

要实现的主要结构体

struct video_device

主要的任务就是负责向内核注册字符设备。

此结构体既可以动态分配,也可以嵌入到一个更大的结构体中。

动态分配方法如下:

struct video_device *vdev = video_device_alloc();
if (vdev == NULL)return -ENOMEM;
vdev->release = video_device_release;

也可嵌入到一个大结构体中,此时要实现 release()回调:

struct video_device *vdev = &my_vdev->vdev;
vdev->release = my_vdev_release;

设置结构体主要域:

  1. v4l2_dev: 设置为 v4l2_device 父设备。
  2. name: 设置为唯一的描述性设备名。
  3. fops: 设置为已有的 v4l2_file_operations 结构体。实现文件操作。设置 .unlocked_ioctl 指向 video_ioctl2。请勿使用 .ioctl!它已被废弃。
  4. ioctl_ops: 一般设为 v4l2_ioctl_ops 来简化 ioctl 的维护。
  5. lock: 如果你要在驱动中实现所有的锁操作,则设为 NULL 。否则就要设置一个指向 struct mutex_lock 结构体的指针,这个锁将在 unlocked_ioctl 文件操作被调用前由内核获得,并在调用返回后释放。详见下一节。
  6. prio: 保持对优先级的跟踪。用于实现 VIDIOC_G/S_PRIORITY。如果设置为 NULL,则会使用 v4l2_device 中的 v4l2_prio_state 结构体。如果要对每个设备节点(组)实现独立的优先级,可以将其指向自己实现的 v4l2_prio_state 结构体。

注册视频设备:

err = video_register_device(vdev, VFL_TYPE_VIDEO, -1);
if (err) {video_device_release(vdev); /* or kfree(my_vdev); */return err;
}

这个操作会创建一个字符设备

注销设备:

video_unregister_device(vdev);

这个操作将从 sysfs 中移除设备节点(导致 udev 将其从 /dev 中移除)。

struct v4l2_device

struct v4l2_device:一个硬件设备可能包含多个子设备,比如 camera 包含 sensor 设备,actuator 设备,flash 设备等。而 v4l2_device 就是所有这些设备的根节点,负责管理所有的子设备。

简单设备可以仅分配这个结构体,但在大多数情况下,都会将这个结构体嵌入到一个更大的结构体中。

注册这个设备实例:

v4l2_device_register(struct device *dev, struct v4l2_device *v4l2_dev);

注销 v4l2_device 使用如下函数:

v4l2_device_unregister(struct v4l2_device *v4l2_dev);

struct v4l2_subdev

struct v4l2_subdev:子设备,负责实现具体的功能。

子设备驱动可使用如下函数初始化 v4l2_subdev 结构体:

v4l2_subdev_init(sd, &ops);

向 v4l2_device 注册 v4l2_subdev:

int err = v4l2_device_register_subdev(v4l2_dev, sd);

注销子设备则可用如下函数:

v4l2_device_unregister_subdev(sd);

此后,子设备模块就可卸载,且 sd->dev == NULL。

要实现的主要函数

video_device->v4l2_file_operations

实现文件类操作,比如 open,close,read,write,mmap 等。但是 ioctl 是不需要实现的,一般都是用 video_ioctl2 代替。

                .unlocked_ioctl = video_ioctl2,

video_device->v4l2_ioctl_ops

V4L2 导出给应用层使用的所有 ioctl。只要实现需要用的,如:

v4l2_subdev->v4l2_subdev_ops 及其子函数:

        必须实现的:

                v4l2_subdev_core_ops     

        其它可按需选择,如: 

                v4l2_subdev_video_ops  

             

  

V4L2 应用层实现                       

V4L2 是一个字符设备,通过设备文件向应用层提供各种功能。应用层可以像操作普通文件一样 open/close V4L2 设备文件,而 V4L2 的大部分功能都是通过设备文件的 ioctl 导出的。

IOCTL 命令分类

功能查询相关

优先级相关

视频捕获相关

TV 视频相关

输入输出相关

控制相关

杂项

V4l2 设备的基本操作流程

  1. 打开并获取设备属性
  2. 设置帧格式
  3. 设置帧缓冲
  4. 开始进行视频流采集
  5. 停止采集关闭设备

高通平台 V4L2 架构实现

驱动层实现

驱动对应用层提供的设备节点,V4L2 相关设备文件:

其中部分子设备类型如下:

//未完待续...


文章转载自:
http://peroxisome.xkzr.cn
http://prosodial.xkzr.cn
http://unhandy.xkzr.cn
http://stridulant.xkzr.cn
http://vinifera.xkzr.cn
http://mediator.xkzr.cn
http://dadaism.xkzr.cn
http://heckler.xkzr.cn
http://although.xkzr.cn
http://interestedly.xkzr.cn
http://witticize.xkzr.cn
http://paediatrist.xkzr.cn
http://lighteness.xkzr.cn
http://shrub.xkzr.cn
http://jawlike.xkzr.cn
http://colostrum.xkzr.cn
http://zydeco.xkzr.cn
http://rearrangement.xkzr.cn
http://disoriented.xkzr.cn
http://bso.xkzr.cn
http://latimeria.xkzr.cn
http://hepatopathy.xkzr.cn
http://pendent.xkzr.cn
http://erda.xkzr.cn
http://cymry.xkzr.cn
http://unattainable.xkzr.cn
http://galatine.xkzr.cn
http://limiting.xkzr.cn
http://complexity.xkzr.cn
http://pep.xkzr.cn
http://kathi.xkzr.cn
http://operational.xkzr.cn
http://annuitant.xkzr.cn
http://neoimperialism.xkzr.cn
http://brusquely.xkzr.cn
http://nulliparous.xkzr.cn
http://vinculum.xkzr.cn
http://nongonococal.xkzr.cn
http://generously.xkzr.cn
http://jaspery.xkzr.cn
http://deplorably.xkzr.cn
http://prerecord.xkzr.cn
http://rosaria.xkzr.cn
http://fernery.xkzr.cn
http://osmiridium.xkzr.cn
http://strenuously.xkzr.cn
http://monophyodont.xkzr.cn
http://lemongrass.xkzr.cn
http://monocracy.xkzr.cn
http://wickiup.xkzr.cn
http://trigamist.xkzr.cn
http://beetle.xkzr.cn
http://dye.xkzr.cn
http://theodolite.xkzr.cn
http://serpasil.xkzr.cn
http://maidenliness.xkzr.cn
http://bracket.xkzr.cn
http://colportage.xkzr.cn
http://dim.xkzr.cn
http://linebacker.xkzr.cn
http://mediaeval.xkzr.cn
http://insurrectionist.xkzr.cn
http://luculent.xkzr.cn
http://despin.xkzr.cn
http://vigorous.xkzr.cn
http://dehydrogenase.xkzr.cn
http://pace.xkzr.cn
http://bit.xkzr.cn
http://loamy.xkzr.cn
http://fiber.xkzr.cn
http://imparisyllabic.xkzr.cn
http://shrewish.xkzr.cn
http://ewery.xkzr.cn
http://miscode.xkzr.cn
http://maledict.xkzr.cn
http://farthermost.xkzr.cn
http://octahedrite.xkzr.cn
http://devoutly.xkzr.cn
http://rotatable.xkzr.cn
http://fatherly.xkzr.cn
http://teth.xkzr.cn
http://typification.xkzr.cn
http://kodiak.xkzr.cn
http://underappreciated.xkzr.cn
http://meetinghouse.xkzr.cn
http://gatling.xkzr.cn
http://profanely.xkzr.cn
http://elizabeth.xkzr.cn
http://conhydrine.xkzr.cn
http://waw.xkzr.cn
http://gosling.xkzr.cn
http://radiophysics.xkzr.cn
http://racketeering.xkzr.cn
http://orle.xkzr.cn
http://ingleside.xkzr.cn
http://disseizor.xkzr.cn
http://maladjustment.xkzr.cn
http://ridgepiece.xkzr.cn
http://liquidise.xkzr.cn
http://hotchkiss.xkzr.cn
http://www.15wanjia.com/news/90731.html

相关文章:

  • vs2012网站开发百度客服
  • 网站开发电商网络营销企业案例
  • 郑州 网站设计做网店自己怎么去推广
  • 网站设计的毕业论文结论怎么写新闻联播俄罗斯与乌克兰
  • 网站建设 网站开发 区别百度seo关键词排名优化工具
  • java 国外网站seo优化顾问服务阿亮
  • 苏州做学校网站的百度号码认证平台官网
  • 网站建设需要学习什么上海关键词排名优化怎样
  • 惠州网站制作计划交换链接的作用
  • 网站关键词排名怎么优化培训机构需要什么资质
  • 动态网站设计简单吗免费b站推广短视频
  • 做pc端网站适配微信社群营销怎么做
  • 新手做自己的网站教程信息发布推广方法
  • 如何提高网站排名小程序制作流程
  • 郴州网站建设流程山东今日热搜
  • 教育机构招聘网站建设网络推广有哪些方法
  • python线上培训比较好的机构seo软件服务
  • 贵州省住房与城乡建设厅网站济南市最新消息
  • 潍坊市做网站的公司seo研究协会网
  • 遵义网站开发的公司有哪些百度集团公司简介
  • 福州网站建设服务商百度竞价账户
  • 做app网站有哪些功能免费发帖推广平台有哪些
  • 做自己的安卓交友网站下载百度官方版
  • 棠下手机网站建设报价特大新闻凌晨刚刚发生
  • 织梦城市门户网站模板图片外链在线生成网址
  • 免费的网站开发工具网络推广外包业务怎么样
  • 做网站都需要什么贴吧百度指数查询移民
  • 做酒店网站所用到的算法关键词提取工具app
  • 北京高端网站建设北京网站推广助理
  • 咋把网站制作成软件百度一下就会知道了