UVC_APP源码分析

UVC_APP源码分析_第1张图片

虚线表示:该任务的主循环;

 

check_uvc_video_id : 检测是否有可用的视频输出设备一般检查/sys/class/video4linux/

add_uvc_video: 根据检测出的id,添加可用的视频输出设备,创建uvc gadget线程

uvc_read_camera_buffer: 将摄像头数据(原始、处理后、模拟图片等)按照uvc格式进行编码、流缓存处理

uvc_encode_process: 根据uvc配置进行摄像头流数据压缩处理,一般格式V4L2可编码转化为YUYV/MJPEG/H264

uvc_buffer_write:将编码后的数据通过读写双缓冲方式交于gadget线程处理,即由gadget交付给Host端

uvc_open:根据id打开视频输出设备,并导入默认配置如亮度、对比度等

uvc_events_init: 初始化uvc设备的,设置应用监听的uvc host事件、例如配置控制、流设置、流打开、流关闭

uvc_events_process:uvc事件处理、主要是VC、VS事件

uvc_video_process:gadget线程处理摄像头线程发送过来的数据

uvc_events_process_setup:VC事件处理

uvc_events_process_data:VS事件处理

uvc_events_process_class:UVC类控制端点事件处理,包括控制事件、流控制事件

uvc_events_process_control: UVC类控制事件处理、例如设置灰度、亮度、对比度、饱和度、 背光补偿、锐度等

uvc_events_process_streaming: 流控制处理

uvc_events_process_control_data: UVC流控制数据处理,例如传递外部数据等

uvc_handle_streamon_event: 该接口在流打开或者host请求时调用,用于HOST请求设置分辨率。

 

先分析到这里,后续一些细节还需要深入研究、例如数据拷贝、事件监听、热插拔过程以及UVC协议数据格式等。

你可能感兴趣的:(linux,嵌入式,linux)