[RK3288][Android6.0] USB UVC Camera 功能支持的添加

Platform: RK3288
OS: Android 6.0
Kernel: 3.10.92

Kernel层:
打开UVC的宏

CONFIG_USB_VIDEO_CLASS=y

CONFIG_VIDEO_V4L2_SUBDEV_API=y
CONFIG_MEDIA_USB_SUPPORT=y
CONFIG_USB_VIDEO_CLASS=y
CONFIG_V4L_PLATFORM_DRIVERS=y

这个宏一般默认是配好的.
编译下载插上usb camera开机之后应该会有类似如下log:
[    3.612836] usb 3-1: New USB device found, idVendor=058f, idProduct=3822
[    3.612857] usb 3-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0
[    3.612867] usb 3-1: Product: USB 2.0 HD Camera 
[    3.614985] uvcvideo: Found UVC 1.00 device USB 2.0 HD Camera  (058f:3822)
[    3.622648] input: USB 2.0 HD Camera  as /devices/ff540000.usb/usb3/3-1/3-1:1.0/input/input3


查看设备是否注册成功:
shell@rk3288:/ $ ls /dev/video*                                                
/dev/video0
/dev/video1
/dev/video_state

video0是CIF camera, video1就是UVC Camera了.

HAL层:
系统默认只支持1颗Camera, 所以第二颗即使驱动注册成功,上层也无法识别到,
因此修改如下:
[cpp]  view plain  copy
  1. int camera_device_open(const hw_module_t* module, const char* name,  
  2.                 hw_device_t** device)  
  3. {  
  4. ......  
  5.   
  6.     if (name != NULL) {  
  7.         cameraid = atoi(name);  
  8.   
  9.         if(cameraid > gCamerasNumber) {  
  10.             LOGE("camera service provided cameraid out of bounds, "  
  11.                     "cameraid = %d, num supported = %d",  
  12.                     cameraid, gCamerasNumber);  
  13.             rv = -EINVAL;  
  14.             goto fail;  
  15.         }  
  16. /*Kris, Support two cameras. {*/  
  17. #if 0  
  18.         if(gCamerasOpen >= CAMERAS_SUPPORTED_SIMUL_MAX) {  
  19.             LOGE("maximum number(%d) of cameras already open",gCamerasOpen);  
  20.             rv = -EUSERS;  
  21.             goto fail;  
  22.         }  
  23. #endif  
  24. /*Kris, Support two cameras. }*/  
  25. ......  
  26. }  
这样就可以了!

注意: 

RK3288目前不支持高清类型的也就是说mjpeg数据格式的UVC Camera,需要用YUYV格式的.

最快的区分方法是查看HAL层log, code会读取数据格式并打印出来.
01-01 12:03:15.420   216   578 D CameraHal: CameraHal(121): it is a uvc camera!
01-01 12:03:15.420   216   578 D CameraHal: Calling process is: com.android.camera2
01-01 12:03:15.465   216   578 D CameraHal: cameraCreate(374): Camera driver: uvcvideo   Driver version: 3.10.0  CameraHal version: 1.55.2
01-01 12:03:15.465   216   578 D CameraHal: cameraCreate(381): mCamDriverSupportFmt: fmt = 1448695129,index = 0
01-01 12:03:15.465   216   578 D CameraHal: cameraCreate(419): cameraCreate(419):mCamDriverPreviewFmt(YUYV) is cameraHal and camera driver is also supported!!
01-01 12:03:15.465   216   578 D CameraHal: cameraCreate(421): mCamDriverPreviewFmt  = 1448695129
01-01 12:03:15.465   216   578 D CameraHal: cameraCreate(427): cameraCreate(427): Current driver is uvcvideo, v4l2 memory is V4L2_MEMORY_MMAP
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值