2.9. DEMO_UVC工程说明
2.9.1. 工程简介
该工程主要演示UVC设备使用的示例。
2.9.2. 工程配置说明
1.在 apps/demo/demo_uvc/UVC/user_video_rec.c
在user_video_rec0_open(void)函数中配置视频的相关参数
#ifdef CONFIG_UVC_VIDEO2_ENABLE req.rec.uvc_id = uvc_host_online(); #endif #ifdef CONFIG_VIDEO_REC_PPBUF_MODE req.rec.bfmode = VIDEO_PPBUF_MODE; #endif #ifdef CONFIG_VIDEO_SPEC_DOUBLE_REC_MODE req.rec.wl80_spec_mode = VIDEO_WL80_SPEC_DOUBLE_REC_MODE; //wl80硬件限制的特殊模式 #endif req.rec.picture_mode = 0;//非绘本模式 req.rec.camera_type =VIDEO_CAMERA_UVC;// 摄像头类型; req.rec.channel = 1; req.rec.width = CONFIG_USER_VIDEO_WIDTH;//摄像头的分辨率 req.rec.height = CONFIG_USER_VIDEO_HEIGHT;//摄像头的分辨率 req.rec.state = VIDEO_STATE_START;//视频状态 req.rec.fpath = CONFIG_REC_PATH_0;//储存的地方 /*req.rec.format = NET_VIDEO_FMT_AVI;*/ req.rec.format = USER_VIDEO_FMT_AVI; //视频格式 req.rec.quality = VIDEO_LOW_Q;//VIDEO_MID_Q;//图片质量高中低 req.rec.fps = 0; //需要录的帧率 req.rec.real_fps = 15;//帧率 //需要音频:请写audio.sample_rate和audio.buf、audio.buf_len req.rec.audio.sample_rate = 0;//8000 音频采样率 req.rec.audio.channel = 1; req.rec.audio.channel_bit_map = 0; req.rec.audio.volume = 64;//音频增益0-100 req.rec.audio.buf = NULL;//音频BUFF req.rec.audio.buf_len = 0;//音频BUFF长度 req.rec.abr_kbps = user_video_rec_get_abr(req.rec.width);//JPEG图片码率 req.rec.buf = __this_user->user_video_buf; req.rec.buf_len = USER_VIDEO_SBUF_SIZE; req.rec.block_done_cb = 0;
2.9.3. 工程操作说明
测试前请根据实际原理图配置好相应板级文件,尤其是串口打印的对应IO口配置,还有AD按键对应阻值的配置。
UVC设备插在开源版背面的USB2.0 type-c接口。
如果使用途中拔出了UVC设备,显示屏黑屏了。重新插入UVC设备后可以按下K4按键恢复显示。
- 按键操作说明:
K1:拍照
K2:录像模式:按下的第一下是开始录像 ,再一次就是停止录像。
K4:UVC设备重新上线后恢复LCD显示。
2.9.4. 代码流程
- platform_initcall(ui_demo_task_init)
A)创建任务ui_demo
- ui_demo()
A)在函数camera_to_lcd_init()中调用uvc_video_test()创建任务uvc_video_task
- uvc_video_task()
1.在这里不断地循环检测UVC设备是否在线
2.检测到UVC设备上线,就打开视频解码等服务和注册回调函数。
3.若UVC设备断开就关闭视频解码等服务,等待UVC设备重新上线。
2.9.5. 示例工程
具体的示例工程代码详见 apps/demo/demo_uvc