|
RK3288 Reload多路视频编解码问题请教,急
发表于 2017-10-17 18:08:15
浏览:11935
|
回复:6
打印
只看该作者
[复制链接]
楼主
工具:RK3288 Reload开发板+三个720p的usb摄像头(调试先用了两个)。系统固件:firefly-rk3288_android5.1(固件已经升级到最新)。
参照“【技术分享】Firefly-RK3288多路视频编解码技术案例源码 ...”添加uvc代码、添加uvcserver、更换libRkOMX_Resourcemanager.so、安装MultiCodecs.apk。打开MultiCodecs.apk同时只有一路视频编解码显示正常,拔除当前摄像头重新打开另一路摄像头显示正常,查看设备video0、video1正常,串口打印信息:
V/Uvc ( 163): startPreview
E/UvcIoctl( 163): buffers0.start = 0xb41ef000
E/UvcIoctl( 163): buffers1.start = 0xb3e9a000
E/UvcIoctl( 163): buffers2.start = 0xb3e03000
E/UvcIoctl( 163): buffers3.start = 0xb3d6c000
E/UvcIoctl( 163): stream_on fd 13
E/UvcIoctl( 163): VIDIOC_STREAMON error 28, No space left on device
E/UvcIoctl( 163): VIDIOC_STREAMON error 28, No space left on device
E/UvcIoctl( 163): Command VIDIOC_DQBUF error, errno: 22, Invalid argument
D/UvcJNI ( 2337): unlock
E/UvcIoctl( 163): VIDIOC_DQBUF error 22, Invalid argument
E/UvcIoctl( 163): VIDIOC_DQBUF error 22, Invalid argument
D/UvcClient( 2337): unlock
D/Uvc ( 163): dequeue err -1
D/Uvc ( 163): threadFunc exit
D/IUvc ( 163): UNLOCK
V/Uvc ( 163): unlock
修改MultiCodecs.apk源码,将分辨率改为640*480以及320*240,帧数改为2,显示的画质变差,帧数明显改变,但不知是板卡对数据处理的结果还是usb摄像头的工作参数被修改,问题没有解决。
在kernel的uvc驱动中添加打印,部分打印信息如下:
[ 234.912884] long uvc_v4l2_do_ioctl VIDIOC_S_FMT
[ 234.912895] long uvc_v4l2_set_format width=640 height=480
[ 234.912900] long uvc_v4l2_try_format
[ 234.912908] long uvc_probe_video
[ 234.912914] long uvc_set_video_ctrl wPFrameRate=0 dwFrameInterval=333333 wKeyFrameRate=0 wCompWindowSize=0
[ 234.938899] long uvc_fixup_video_ctrl wWidth=640 wHeight=480
[ 234.940123] long uvc_fixup_video_ctrl wWidth=640 wHeight=480
[ 234.940131] long uvc_set_video_ctrl wPFrameRate=0 dwFrameInterval=333333 wKeyFrameRate=0 wCompWindowSize=0
[ 234.966558] long uvc_fixup_video_ctrl wWidth=640 wHeight=480
[ 234.967096] long uvc_v4l2_do_ioctl VIDIOC_S_PARM
[ 234.967106] long uvc_v4l2_set_streamparm
[ 234.967112] long uvc_probe_video
[ 234.967129] long uvc_set_video_ctrl wPFrameRate=0 dwFrameInterval=333333 wKeyFrameRate=0 wCompWindowSize=0
[ 234.993136] long uvc_fixup_video_ctrl wWidth=640 wHeight=480
[ 234.994361] long uvc_fixup_video_ctrl wWidth=640 wHeight=480
[ 234.994369] long uvc_set_video_ctrl wPFrameRate=0 dwFrameInterval=333333 wKeyFrameRate=0 wCompWindowSize=0
[ 235.020580] long uvc_fixup_video_ctrl wWidth=640 wHeight=480
[ 235.038785] long uvc_set_video_ctrl wPFrameRate=0 dwFrameInterval=333333 wKeyFrameRate=0 wCompWindowSize=0
[ 235.069595] INFO:: check_periodic_bandwidth: already claimed usecs 64, required usecs 60
[ 235.069595]
[ 235.069615] INFO:: schedule_periodic: Insufficient periodic bandwidth for periodic transfer.
[ 235.069615]
[ 235.069627] ERROR::dwc_otg_hcd_urb_enqueue:538: DWC OTG HCD URB Enqueue failed adding QTD. Error status -28
[ 235.069627]
[ 235.069640] uvcvideo: Failed to submit URB 0 (-28).
[ 236.182745] vcodec_service: ff9a0000.vpu_service: power off...
[ 236.182835] vcodec_service: done
[ 236.247403] vcodec_service: ff9a0000.vpu_service: power on
[ 936.269574] type=1400 audit(1293884151.640:20): avc: denied { ptrace } for pid=163 comm="debuggerd" scontext=u:r:debuggerd:s0 tcontext=u:r:init:s0 tclass=process permissive=1
[ 936.641686] init: Warning! Service uvcd needs a SELinux domain defined; please fix!
[ 939.230703] vcodec_service: ff9a0000.vpu_service: power off...
[ 939.230789] vcodec_service: done
根据打印信息,分辨率应该是修改成功了。
问题一直没有解决,从最初的错误提示来看也质询了原厂说是usb带宽不够,但分辨率和帧数已经这么低了不应该带宽还不够吧,纠结好几天了,求指点。
|
|