1.UVC摄像i头从插入到加载驱动,看我前面的文章分析过程
2.UVC摄像头驱动加载时在kernel\drivers\media\usb\uvc\uvc_driver.c uvc_probe->函数中完成的
整个流程如下
uvc_register_chains->
uvc_register_terms->
uvc_register_video->
vdev->v4l2_dev = &dev->vdev;
vdev->fops = &uvc_fops;
vdev->ioctl_ops = &uvc_ioctl_ops;
video_register_device->
__video_register_device-> H:\RK3399\kernel\drivers\media\v4l2-core\v4l2-dev.c
case VFL_TYPE_GRABBER:
name_base = "video";
//这个字符串就是我们在/dev/下面看到的vido0,video1等设备,按摄像头
3.应用层app打开camera,最后必然调用open("/dev/video0") 打开设备
uvc_v4l2_open-> kernel\drivers\media\usb\uvc\uvc_v4l2.c
4.摄像头打开的同时就开始操作摄像头,进行抓取视频流的初始化工作
从uvc_start_streaming-> drivers/media/usb/uvc/uvc_queue.c 开始
uvc_init_video_isoc->urb->complete = uvc_video_complete;
重要的就是注册了一个uvc_video_complete一个urb完成函数,这个就是我们视频数据解析的开始
完成的时候注册了一个视频解析函数uvc_video_decode_isoc
uvc_video_decode_isoc 分析
static void uvc_video_decode_isoc(struct urb *urb, struct uvc_streaming *stream,
struct uvc_buffer *buf)
{
u8 *mem;
int ret, i;
for (i =

本文详细介绍了UVC摄像头从插入到加载驱动的过程,包括关键函数uvc_register_chains、uvc_register_terms、uvc_register_video等的作用。同时,还深入探讨了视频数据解析的核心函数uvc_video_decode_isoc的工作原理。
最低0.47元/天 解锁文章
2983

被折叠的 条评论
为什么被折叠?



