主题 : S5PV210 android下USB摄像头问题 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 2908
精华: 0
发帖: 28
金钱: 205 两
威望: 80 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2008-12-16
最后登录: 2012-07-24
楼主  发表于: 2011-11-28 11:36

 S5PV210 android下USB摄像头问题

请问android下210的CMOS摄像头和USB摄像头是否可以同时使用?由于210的BSP里自带了CMOS的驱动,我以为只要再内核里配上支持USB摄像头的UVC就可以,结果当我配上UVC后,插入USB摄像头得到如下提示:
usb 1-1.3: new high speed USB device using s5p-ehci and address 5uvcvideo: Found UVC 1.00 device USB2.0 PC CAMERA (18ec:3290)input: USB2.0 PC CAMERA as /devices/platform/s5p-ehci/usb1/1-1/1-1.3/1-1.3:1.0/input/input3I/EventHub(   92): New keyboard: device->id=0x20000 devname='USB2.0 PC CAMERA' propName='hw.keyboards.131072.devname' keylayout='/system/usr/keylayout/qwerty.kl'I/EventHub(   92): New device: path=/dev/input/event2 name=USB2.0 PC CAMERA id=0x20000 (of 0x3) index=3 fd=91 classes=0x1I/InputReader(   92): Device added: id=0x20000, name=USB2.0 PC CAMERA, sources=00000101I/InputManager-Callbacks(   92): No input device calibration properties found for device USB2.0 PC CAMERA.
级别: 新手上路
UID: 2908
精华: 0
发帖: 28
金钱: 205 两
威望: 80 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2008-12-16
最后登录: 2012-07-24
1楼  发表于: 2011-11-28 12:51
版主大哥,能否从技术层面简单提下实现思路?
是否需要修改UVC驱动,不直接实现V4L2接口,而与FIMC关联,再用FIMC实现V4L2接口?
不知道我这样理解是否正确
级别: 新手上路
UID: 2908
精华: 0
发帖: 28
金钱: 205 两
威望: 80 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2008-12-16
最后登录: 2012-07-24
2楼  发表于: 2011-11-28 15:38
版主大哥,我刚才直接配置了下UVC,没有生成/dev/video
我再在配置里去掉V4L2 API for digital camera to be contributed by samsung 后,插入USB摄像头,生成了/dev/video3
(FIMC自动生成了 /dev/video0 1 2),但该节点不能在android里被操作。
级别: 新手上路
UID: 2908
精华: 0
发帖: 28
金钱: 205 两
威望: 80 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2008-12-16
最后登录: 2012-07-24
3楼  发表于: 2011-11-29 14:55
感谢版主热心快速的回复。
我按你的思路,现在已经顺利生成了节点,
# ls -l /dev/video*
crw-rw---- system   camera    81,   0 1970-01-09 20:39 video0
crw-rw---- system   camera    81,   1 1970-01-09 20:39 video1
crw-rw---- system   system    81,  14 1970-01-09 20:39 video14
crw-rw---- system   camera    81,   2 1970-01-09 20:39 video2
crw-rw---- system   system    81,  21 1970-01-09 20:39 video21
crw-rw---- system   system    81,  22 1970-01-09 20:39 video22
crw-rw-rw- system   camera    81,   3 1970-01-09 20:39 video3

但不知道如何测试,我希望在android下打开该摄像头预览,但默认他是打开的/dev/vedio0 ,我跟踪代码,找到SecCamera::create(int index)
将open(CAMERA_DEV_NAME, O_RDWR); 直接改为/dev/vedio3 ,还是不行,报错如下:

V/RenderScript_jni(  183): surfaceDestroyed
V/CameraHolder(  446): open camera 0
I/SecCamera(   70): Name of input channel[0] is Camera 1
I/SecCamera(   70): Name of input channel[0] is S5K4BA
I/SecCamera(   70): Name of input channel[0] is Camera 1
I/StagefrightPlayer(   70): setDataSource('/system/media/audio/ui/camera_click.ogg')
I/StagefrightPlayer(   70): setDataSource('/system/media/audio/ui/VideoRecord.ogg')
D/Camera  (  446): app passed NULL surface
V/camera  (  446): startPreview
E/SecCamera(   70): unsupported pixel format
E/SecCamera(   70): int android::SecCamera::startPreview()::867 fail. errno: Invalid argument, m_camera_id = 0
E/CameraHardwareSec(   70): ERR(virtual android::status_t android::CameraHardwar
eSec::startPreview()):Fail on mSecCamera->startPreview()
W/ActivityManager(   98): Launch timeout has expired, giving up wake lock!
W/ActivityManager(   98): Activity idle timeout for HistoryRecord{408a98f8 com.android.camera/.Camera}

对android确实不熟,不知道该如何是好,还望指点再三
级别: 新手上路
UID: 2908
精华: 0
发帖: 28
金钱: 205 两
威望: 80 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2008-12-16
最后登录: 2012-07-24
4楼  发表于: 2011-11-30 13:23
我还是没太明白。android下可以打开V4L2接口的CMOS摄像头节点/dev/video0 ,而USB的也是用的UVC的标准V4L2接口,为什么两者不同呢?
我在X86下配置了UVC后可以用luvcview打开该摄像头,看到预览。
移植了静态交叉编译后的luvcview,放在板子上,chmod 777 后,放在/system/bin下,
还是不能在板子上运行,提示找不到luvcview 。彻底凌乱中
级别: 新手上路
UID: 2908
精华: 0
发帖: 28
金钱: 205 两
威望: 80 点
贡献值: 0 点
综合积分: 56 分
注册时间: 2008-12-16
最后登录: 2012-07-24
5楼  发表于: 2011-12-01 15:09
我把210的摄像头驱动框架整理了一下,不知道是否理解正确,请见附件的框图jpg.请指正。
按我的理解,无论是CMOS还是CCD摄像头,都是在最后reg.c硬件层才有区别,上面的V4L2接口层都是一样。
而UVC是单独的一套V4L2体系,他自己实现了V4L2接口,所以应该是独立的。与210的FIMC无关。
但如果这么理解,就无法解释我的问题,为何上层总识别不了UVC的节点/dev/video3,还请指点再三。

[ 此帖被lang567890在2011-12-01 16:25重新编辑 ]