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