usb host 驱动 - UVC 掉包
1. issue description
yavta 是一款测试APP,测试UVC 摄像头的数据采集回传。
yavta -f YUYV -s 1280x720 -t 1/60 -c100 /dev/video0 -F/data/yua
帧率60FPS 不能正常运行,blocked, all frame fail。
yavta -f YUYV -s 1280x720 -t 1/30 -c100 /dev/video0 -F/data/yua
帧率30FPS 能正常运行,但中间也会有一些丢包。
1.1 图像的一些参数
帧率:FPS(每秒钟要多少帧画面); 以及Gop(表示多少秒一个I帧),影响流畅度。
-t 1/60 // 帧率60,一秒钟传输60 帧
分辨率:单位英寸中所包含的像素点数; VGA:Video Graphics Array(视频图像分辨率),影响清晰度。
-s 1280x720 // 分辨率720P
视频大小:分辨率 x 2(每个像素占多少字节) x 8 x 帧率 x 时间(s) /1024/1024
YUV422 格式帧大小:分辨率 x 2 Byte
对于YUV422 格式的 1080P 视频而言,一帧图像是 1920x1080x2x8/1024/1024 = 31.64Mbit,1秒钟30帧图像的话,则有949.2Mb/s。
1.2 yavta 控制流程
root@:/# strace yavta -f YUYV -s 1280x720 -t 1/60 -c100 /dev/video0
// 解析参数
execve("/usr/bin/yavta", ["yavta", "-f", "YUYV", "-s", "1280x720", "-t", "1/60", "-c100", "/dev/video0"], 0x7fc5203a80 /* 16 vars */) = 0
// 打开设备节点
openat(AT_FDCWD, "/dev/video0", O_RDWR) = 3
// 回显显示
write(1, "Device /dev/video0 opened.\n", 27Device /dev/video0 opened.) = 27
// 设备节点的ioctl
ioctl(3, VIDIOC_QUERYCAP, {driver="uvcvideo", card="KS2A418: KS2A418", bus_info="usb-xhci-hcd.0.auto-1.3", version=4.19.125, ...) = 0
// 回显显示
write(1, "Device `KS2A418: KS2A418' on `us"..., 117Device `KS2A418: KS2A418' on `usb-xhci-hcd.0.auto-1.3' (driver 'uvcvideo') supports video, capture, without mplanes.) = 117
// ioctl 设置参数
ioctl(3, VIDIOC_G_PARM, {type=V4L2_BUF_TYPE_VIDEO_CAPTURE, parm.capture={capability=V4L2_CAP_TIMEPERFRAME, capturemode=0, timeperframe=1/60, extendedmode=0, readbuffers=0}}) = 0
write(1, "Current frame rate: 1/60\n", 25Current frame rate: 1/60) = 25
write(1, "Setting frame rate to: 1/60\n", 28Setting frame rate to: 1/60) = 28
...
这些ioctl 对应驱动的接口为:
// \drivers\media\usb\uvc\uvc_v4l2.c
const struct v4l2_ioctl_ops uvc_ioctl_ops = {.vidioc_querycap = uvc_ioctl_querycap,....vidioc_reqbufs = uvc_ioctl_reqbufs,.vidioc_querybuf = uvc_ioctl_querybuf,.vidioc_qbuf = uvc_ioctl_qbuf,.vidioc_expbuf = uvc_ioctl_expbuf,.vidioc_dqbuf = uvc_ioctl_dqbuf,.vidioc_create_bufs = uvc_ioctl_create_bufs,.vidioc_streamon = uvc_ioctl_streamon,.vidioc_streamoff = uvc_ioctl_streamoff,...
};
usb host 驱动 - UVC 掉包相关推荐
- USB 3G驱动和USB HOST驱动加载
********************************LoongEmbedded******************************** 作者:LoongEmbedded(kandi ...
- STM32之独立版USB(Host)驱动+MSC+Fatfs移植
源:STM32之独立版USB(Host)驱动+MSC+Fatfs移植 STM32之USB驱动库详解(架构+文件+函数+使用说明+示例程序)
- PCIe实践之路:PCIe转USB Host驱动
PCIe实践之路:PCIe转USB Host驱动 本次调试PCIe RC驱动,通过PCIe转USB芯片扩展出的USB口接入U盘.RC平台为ARM-A7,运行裸机环境,EP为一款PCIe转USB3.0芯 ...
- 详解WinCE下USB Host驱动开发(2)
当用户需要卸载USB Host设备驱动时,将会调用USBUnInstallDriver函数 BOOL USBUnInstallDriver(); 它与USBInstallDriver类似,不过 ...
- linux驱动编写(usb host驱动入门)
[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0.大 ...
- linux usb驱动教学视频教程,详解linux usb host驱动编写入门
usb协议是一个复杂的协议,目前涉及到的版本就有usb1.0, usb2.0, usb3.0.大家如果打开kernel usb host目录,就会发现下面包含了ohci,uhci,ehci,xhci, ...
- usb host 驱动 - device 拔插
1. usbhid 设备拔插 1.1 usb device disconnect 1.1.1 上层卸载usb 设备驱动 生成应用通过ioctl 卸载usb 设备. [ 709.471619] [T29 ...
- usb host 驱动之 urb
1.URB 处理流程 (1)usb 设备驱动程序创建并初始化一个访问特定usb设备特定端点的 urb,并提交给 usb core: (2)usb core 提交该 urb 到 usb 主控制器驱动程序 ...
- garmin USB: linux USB host驱动
以garmin usb为例: 1)编译生成garmin_usb.ko文件,使用insmod命令安装模块 2)使用lsmod命令可查看内核已经安装好模块:garmin_usb 3)插入USB设备后,使用 ...
最新文章
- linux 后台任务 前台任务 查看切换终止开始命令 bg、fg、ctrl+z、ctrl+d和ctrl+c 简介
- python智能识别_Python人工智能识别文字内容(OCR)
- 计算机术语中bit表示,bit的用法
- Leet Code OJ 169. Majority Element [Difficulty: Easy]
- 浅谈 EF CORE 迁移和实例化的几种方式
- LEX和YACC的使用(例子)
- 计算机网络期末考长沙学院,校内用-第二套计算机网络试卷A..doc
- 业务人员不知道如何提出 BI 需求,老板不重视 BI 项目怎么办?
- wordpress 百度主动推送 PHP,WordPress 百度自动推送插件
- Linux下用dd命令测试硬盘的读写速度
- 浅析“npm run dev”作用
- 修改 Zotero 参考文献格式
- 双臂模式DPVS+RPM安装教程
- Prim算法求图的最小生成树(Java)
- 按图搜索1688商品接口(item_search_img-按图搜索1688商品(拍立淘接口)代码对接教程
- 视频按帧截取 python程序
- 华为防火墙实战配置教程,太全了
- 剑网三指尖江湖快速升级辅助 日常任务脚本工具介绍
- m4a html 播放器,HTML5 Audio m4a
- 最长公共子序列、最长连续公共子序列、最长递增子序列