saki4510t / UVCCamera

library and sample to access to UVC web camera on non-rooted Android device
2.99k stars 1.2k forks source link

Multiple Cameras/Previews #8

Closed btut closed 8 years ago

btut commented 9 years ago

Hi, I started from USBCameraTest6 and tried to get it to show two cameras at once. I duplicated the camera button, the USBMonitor and the UVCCameraHandler. I am at the point that I have two CameraViews with a Camera Button on top of each of them. This works fine, as long as I only start one camera at a time. When I try to start the second camera while one is already running, the preview will not start. What do I have to do to get two previews simultaneously with your library? Is this even possible? Thank you!

btut commented 9 years ago

this is the log output when I try to start a second camera: 08-02 19:07:51.739: I/UVCCameraHandler(11020): supportedSize:{"formats":[{"index":1,"type":4,"default":1,"size":["640x360","320x240","640x480","960x720","1280x720"]},{"index":2,"type":6,"default":1,"size":["640x360","320x240","640x480","960x720","1280x720"]}]} 08-02 19:07:51.739: D/CameraThread(11020): handleStartPreview: 08-02 19:07:51.749: I/libUVCCamera(11020): [11569_UVCPreview.cpp:405:prepare_preview]:frameSize=(640,480)@MJPEG 08-02 19:07:51.759: E/libUVCCamera(11020): [11569_stream.c:1505:uvc_stream_start]:fail 08-02 19:07:51.759: W/libUVCCamera(11020): [11569*diag.c:88:uvc_perror]:failed start_streaming:Unknown error (-99)

saki4510t commented 9 years ago

Hi,

The log 08-02 19:07:51.749: I/libUVCCamera(11020): [11569UVCPreview.cpp:405:prepare_preview]:frameSize=(640,480)@MJPEG means negotiation with the specific resolution succeeded.
The log 08-02 19:07:51.759: E/libUVCCamera(11020): [11569stream.c:1505:uvc_stream_start]:fail means uvc_stream_start function failed. I assume it fails when calling libusb_submit_transfer but unfortunately I don't have enough time to confirm the issue now, could you check where/why the function fail?

FYI, you don't need to duplicate USBMonitor instance, just one USBMonitor instance is better otherwise it may become race condition.

saki

btut commented 9 years ago

Hi, sorry it took me so long to check, I started working in August and did not have a lot of time for this experiment. However, I found out that uvc_stream_start fails after calling libusb_set_interface_alt_setting Going deeper, I saw that op_set_interface in android_usbfs.c called by libusb_set_interface_alt_setting in core.c returns LIBUSB_ERROR_OTHER. Any Idea how I might be able to fix this?

btut commented 9 years ago

I have checked the log once again, this time for the whole system not only the app, and found out that the second camera is removed due to "epoll hang-up event" before the call to ioctl. Here is the log, would be great to get any input on how to solve this>

08-16 10:15:01.449: E/ViewRootImpl(12779): sendUserActionEvent() mView == null 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:186:dump_urb]:0:fd=72 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:191:dump_urb]:ファイフディスクリプタフラグ:20002 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:192:dump_urb]:O_ACCMODE:2 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:193:dump_urb]:ノンブロッキングかどうか:0 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:194:dump_urb]:0:type=1,endpopint=0x81,status=0,flag=0 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:195:dump_urb]:0:buffer=0xa190f118,buffer_length=32,actual_length=0,start_frame=0 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:196:dump_urb]:0:number_of_packets=0,error_count=0,signr=0 08-16 10:15:01.449: I/libUVCCamera(12779): [12805_android_usbfs.c:197:dump_urb]:0:usercontext=0xa1906320,iso_frame_desc=0xa191024c 08-16 10:15:01.449: I/EventHub(909): Removing device '/dev/input/event16' due to inotify event 08-16 10:15:01.459: I/UVCCameraHandler(12779): supportedSize:{"formats":[{"index":1,"type":6,"default":1,"size":["1280x720","640x480"]},{"index":2,"type":4,"default":1,"size":["1280x720","640x480","352x288","320x240"]}]} 08-16 10:15:01.459: D/CameraThread(12779): handleStartPreview: 08-16 10:15:01.479: I/libUVCCamera(12779): [12843_UVCPreview.cpp:405:prepare_preview]:frameSize=(1280,720)@MJPEG 08-16 10:15:01.509: I/libUVCCamera(12779): [12845_UVCPreview.cpp:171:callbackPixelFormatChanged]:PIXEL_FORMAT_RAW: 08-16 10:15:04.419: V/MainActivity(12779): onConnect: 08-16 10:15:04.419: D/CameraThread(12779): handleStopPreview: 08-16 10:15:04.419: D/UVCCameraHandler(12779): open: 08-16 10:15:04.419: D/CameraThread(12779): handleOpen: 08-16 10:15:04.419: D/CameraThread(12779): handleClose: 08-16 10:15:04.419: D/CameraThread(12779): handleStopRecording:mMuxer=null 08-16 10:15:04.419: V/RendererHolder(12779): getSurface:surface=Surface(name=android.graphics.SurfaceTexture@148d3945)/@0x2dbf6f5a 08-16 10:15:04.449: I/EventHub(909): Removing device Live! Cam Sync HD VF0770 due to epoll hang-up event. 08-16 10:15:04.449: I/EventHub(909): Removed device: path=/dev/input/event17 name=Live! Cam Sync HD VF0770 id=18 fd=322 classes=0x80000001 08-16 10:15:04.449: E/ViewRootImpl(12779): sendUserActionEvent() mView == null 08-16 10:15:04.519: I/InputReader(909): Device removed: id=18, name='Live! Cam Sync HD VF0770', sources=0x00000101 08-16 10:15:04.519: I/EventHub(909): Removing device '/dev/input/event17' due to inotify event 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:186:dump_urb]:0:fd=90 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:191:dump_urb]:ファイフディスクリプタフラグ:20002 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:192:dump_urb]:O_ACCMODE:2 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:193:dump_urb]:ノンブロッキングかどうか:0 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:194:dump_urb]:0:type=1,endpopint=0x83,status=0,flag=0 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:195:dump_urb]:0:buffer=0xaf87a078,buffer_length=32,actual_length=0,start_frame=0 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:196:dump_urb]:0:number_of_packets=0,error_count=0,signr=0 08-16 10:15:04.549: I/libUVCCamera(12779): [12814_android_usbfs.c:197:dump_urb]:0:usercontext=0xaf822400,iso_frame_desc=0xaf8321ec 08-16 10:15:04.559: I/UVCCameraHandler(12779): supportedSize:{"formats":[{"index":1,"type":4,"default":1,"size":["640x360","320x240","640x480","960x720","1280x720"]},{"index":2,"type":6,"default":1,"size":["640x360","320x240","640x480","960x720","1280x720"]}]} 08-16 10:15:04.559: D/CameraThread(12779): handleStartPreview: 08-16 10:15:04.569: I/libUVCCamera(12779): [12856_UVCPreview.cpp:405:prepare_preview]:frameSize=(1280,720)@MJPEG 08-16 10:15:04.569: E/libUVCCamera(12779): [12856_stream.c:1445:uvc_stream_start]:libusb_set_interface_alt_setting failed 08-16 10:15:04.569: E/libUVCCamera(12779): [12856_stream.c:1524:uvc_stream_start]:fail 08-16 10:15:04.569: W/libUVCCamera(12779): [12856_diag.c:88:uvc_perror]:failed start_streaming:Unknown error (-99)

saki4510t commented 9 years ago

Hello,
I assume you will make some mistakes on handling UVCCamera instance.
I just add new sample project USBCameraTest7 to demonstrate how to use two camera at the same time(and show video images from each camera side by side) and it will be help you. Theoretically multiple camera more than two will be possible if USB bandwidth permit it. I don't have enough time to check and debug this sample project and it may have some issue but it works fine on my Nexus7(2013), Nexus5, Nexus9 etc. with my several cameras.
saki

btut commented 9 years ago

Hi, Thanks a lot, that is some GREAT help. I will check as soon as I get home from work. On Aug 17, 2015 1:40 PM, saki notifications@github.com wrote:Hello, I assume you will make some mistakes on handling UVCCamera instance. I just add new sample project USBCameraTest7 to demonstrate how to use two camera at the same time(and show video images from each camera side by side) and it will be help you. Theoretically multiple camera more than two will be possible if USB bandwidth permit it. I don't have enough time to check and debug this sample project and it may have some issue but it works fine on my Nexus7(2013), Nexus5, Nexus9 etc. with my several cameras. saki

—Reply to this email directly or view it on GitHub.

btut commented 9 years ago

Hello again, unfortunately the sample 7 does not work on my Samsung Galaxy S5. I need it to work on this phone since it is the only phone I found on the market with USB OTG 3.0. Do you think this could be due to the hub?

saki4510t commented 9 years ago

Hi,
I just tried USBCameraTest7 and worked well on my GALAXY S5(SCL23, Android 5.0) with Logitech C910HD & C930e via USB3.0 OTG cable and self-powered USB2.0 hub. Unfortunately I don't have USB3.0 hub... Did you see any error message?

saki

Darksideneo commented 9 years ago

Hello. I also tried to use USBCameraTest7 and it works fine only with the one camera. I used Minoru 3D, but it works the same as 2 webcams. I also tried to use 2 the same cameras and it still doesnt work. Did you tried 2 the same cameras? I did using Sony Z3 Tablet Compact.

saki4510t commented 9 years ago

Hi, Thank you for providing feedback. I had tested different type cameras and I just tested with two same type camera and worked them as only one camera. Sorry, I found it is because current libuvc/libusb implementation search UVC camera with it's vender id and product id now.

saki

Darksideneo commented 9 years ago

Thank you for quick reply ) Will you fix it in your project branch?

saki4510t commented 9 years ago

Yes, I will but it may take several days because I'm very busy now. I will pass bus number and device address from Java to jni libraries and compare, because some camera never return actual serial value(iSerialNumber will be zero) and/or return same serial value for every devices and comparing serial value is not a good idea for those cameras.

saki

Darksideneo commented 9 years ago

I found that maybe its not the only one problem why 2 cameras dont work in my setup. Minoru 3d havent serial number as you said, but 2 cameras in it have different product id. When I turn on a one camera the second one always turns off. In logcat I can see cameras like /dev/bus/usb/001/003 and /dev/bus/usb/001/004.

More details:

device=UsbDevice[mName=/dev/bus/usb/001/004,mVendorId=2760,mProductId=13328,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[ UsbInterface[mId=0,mAlternateSetting=0,mName=Vimicro USB2.0 PC Camera,mClass=14,mSubclass=1,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=10,mInterval=5]]

and

device=UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=2760,mProductId=13344,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[]]

And also I found exceptions like:

E/AndroidRuntime﹕ FATAL EXCEPTION: USBMonitor Process: com.serenegiant.usbwebcamera, PID: 8983 android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:6264) at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:871) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.view.View.requestLayout(View.java:17454) at android.widget.AbsSpinner.requestLayout(AbsSpinner.java:324) at android.widget.AbsSpinner.setAdapter(AbsSpinner.java:141) at android.widget.Spinner.setAdapter(Spinner.java:432) at com.serenegiant.cameracommon.CameraDialog.updateDevices(CameraDialog.java:244) at com.serenegiant.cameracommon.BaseFragment.updateCameraDialog(BaseFragment.java:922) at com.serenegiant.cameracommon.BaseFragment.access$0(BaseFragment.java:919) at com.serenegiant.cameracommon.BaseFragment$2.onAttach(BaseFragment.java:839) at com.serenegiant.usb.USBMonitor$2.run(USBMonitor.java:326) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:211) at android.os.HandlerThread.run(HandlerThread.java:61)

and this one:

E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.serenegiant.usbcameratest7, PID: 24109 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.serenegiant.usbcameratest7-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libusb100.so" at java.lang.Runtime.loadLibrary(Runtime.java:366) at java.lang.System.loadLibrary(System.java:989) at com.serenegiant.usb.UVCCamera.(UVCCamera.java:105) at com.serenegiant.usbcameratest7.MainActivity$2.onConnect(MainActivity.java:158) at com.serenegiant.usb.USBMonitor$3.run(USBMonitor.java:346) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:211) at android.app.ActivityThread.main(ActivityThread.java:5321) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811) 08-24 19:21:14.257 25171-25171/? E/AndroidRuntime﹕ FATAL EXCEPTION: main Process: com.serenegiant.usbcameratest7, PID: 25171 java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.serenegiant.usbcameratest7-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]] couldn't find "libusb100.so" at java.lang.Runtime.loadLibrary(Runtime.java:366) at java.lang.System.loadLibrary(System.java:989) at com.serenegiant.usb.UVCCamera.(UVCCamera.java:105) at com.serenegiant.usbcameratest7.MainActivity$2.onConnect(MainActivity.java:158) at com.serenegiant.usb.USBMonitor$3.run(USBMonitor.java:346) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:211) at android.app.ActivityThread.main(ActivityThread.java:5321) at java.lang.reflect.Method.invoke(Native Method) at java.lang.reflect.Method.invoke(Method.java:372) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)

And some more: When I select 2nd camera I see in logcat "UVCCamera::window does not exist/already running/could not create thread etc." from UVCPreview.cpp

I am not sure is it helpful, but when I commented out the call nativeStopPreview in UVCCamra.java 1st selected camera always works, but when I select the second one nothing happens, the 1st one still works.

btut commented 9 years ago

Hi, I finally got my Hands on a USB OTG 2.0 cable and USB 2.0 HUB, but the demo is still failing on my Galaxy S5 (Android 5.0). I still get the "stream fail" error when I start the second camera. I will get another Webcam tomorrow and try with that one.

btut commented 9 years ago

still no luck...

btut commented 9 years ago

I checked the log and added a few LOGE calls and I can see that it is the function libusb_set_interface_alt_setting that fails. The function registered at usbi_backend->set_interface_altsetting seems to return -99 all the time. Any idea why this could be? The logs are still the same, [11422*stream.c:1517:uvc_stream_start]:fail when starting the second camera...

saki4510t commented 9 years ago

Hi,

Sorry for delay response and thank you for providing informations.
The actual function of libusb_set_interface_alt_setting for Android is op_set_interface in android_usbfs.c. The error will occur ioctl function in op_set_interface function. If possible, could you provide what errno value it returned?

saki

btut commented 9 years ago

hi. thanks for responding! thats exactly what I found out right now, and ioctl returns error 28, No space left on device. I don't understand how this can be, since I am using USB 3.0. Just to be sure I set the resolution to 320*240 so the used bandwith is minimal, but I still get the same error

btut commented 9 years ago

Hi, is it even enough to set DEFAULT_PREVIEW_WIDTH = 320 and DEFAULT_PREVIEW_HEIGHT = 240; to set the Cameras resolution to 320*240? Or is this just how the image is displayed and the camera still runs at higher resolutions? Also, I installed USB Host Viewer to get some information on my cameras and this is what I got, can anybody calculate the needed bandwith with this information? I don't understand any of it.

041e:4095 Device : /dev/bus/usb/001/005 Vendor : 0x041e Creative Technology, Ltd Product : 0x4095 Class : 0xef Miscellaneous Device SubClass : 0x02 ? Protocol : 0x01 Interface Association

Interface (1/19) Class : 0x0e Video SubClass : 0x01 Video Control Protocol : 0x00

Endpoint (1/1) Attr. : 0x83 (num=3,IN) Type : Interrupt Interval : 0x06 Packsize : 0x0010 (16)

Interface (2/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Interface (3/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x0080 (128)

Interface (4/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x0200 (512)

Interface (5/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x0400 (1024)

Interface (6/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x0b00 (2816)

Interface (7/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x0c00 (3072)

Interface (8/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x1380 (4992)

Interface (9/19) Class : 0x0e Video SubClass : 0x02 Video Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x81 (num=1,IN) Type : Isochronous Interval : 0x01 Packsize : 0x1400 (5120)

Interface (10/19) Class : 0x01 Audio SubClass : 0x01 Control Device Protocol : 0x00

Interface (11/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Interface (12/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x0024 (36)

Interface (13/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x0048 (72)

Interface (14/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x00c8 (200)

Interface (15/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x00d8 (216)

Interface (16/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x0024 (36)

Interface (17/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x0048 (72)

Interface (18/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x00c8 (200)

Interface (19/19) Class : 0x01 Audio SubClass : 0x02 Streaming Protocol : 0x00

Endpoint (1/1) Attr. : 0x82 (num=2,IN) Type : Isochronous Interval : 0x04 Packsize : 0x00d8 (216)

btut commented 9 years ago

any idea on how to circumvent the "No space left on device" error? You said USBCameraTest7 works on your Samsung Galaxy S5, what resolution are you using?

btut commented 9 years ago

Here is the output of lsusb when the camera is connected to a USB port on my ubuntu computer, just in case. Does your library select the right interface for all resolutions? I still cannot find out why one 720p camera is working and two 320*240 are not...

Bus 001 Device 007: ID 041e:4095 Creative Technology, Ltd 
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  idVendor           0x041e Creative Technology, Ltd
  idProduct          0x4095 
  bcdDevice           20.20
  iManufacturer           3 Creative Technology Ltd.
  iProduct                1 Live! Cam Sync HD VF0770
  iSerial                 2 2014091741833
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength         1264
    bNumInterfaces          4
    bConfigurationValue     1
    iConfiguration          4 Live! Cam Sync HD VF0770
    bmAttributes         0x80
      (Bus Powered)
    MaxPower              500mA
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         0
      bInterfaceCount         2
      bFunctionClass         14 Video
      bFunctionSubClass       3 Video Interface Collection
      bFunctionProtocol       0 
      iFunction               5 Live! Cam Sync HD VF0770
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      1 Video Control
      bInterfaceProtocol      0 
      iInterface              5 Live! Cam Sync HD VF0770
      VideoControl Interface Descriptor:
        bLength                13
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdUVC               1.00
        wTotalLength          107
        dwClockFrequency       15.000000MHz
        bInCollection           1
        baInterfaceNr( 0)       1
      VideoControl Interface Descriptor:
        bLength                18
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Camera Sensor
        bAssocTerminal          0
        iTerminal               0 
        wObjectiveFocalLengthMin      0
        wObjectiveFocalLengthMax      0
        wOcularFocalLength            0
        bControlSize                  3
        bmControls           0x0000000a
          Auto-Exposure Mode
          Exposure Time (Absolute)
      VideoControl Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      5 (PROCESSING_UNIT)
      Warning: Descriptor too short
        bUnitID                 2
        bSourceID               1
        wMaxMultiplier          0
        bControlSize            2
        bmControls     0x0000157f
          Brightness
          Contrast
          Hue
          Saturation
          Sharpness
          Gamma
          White Balance Temperature
          Backlight Compensation
          Power Line Frequency
          White Balance Temperature, Auto
        iProcessing             0 
        bmVideoStandards     0x 9
          None
          SECAM - 625/50
      VideoControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             3
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          0
        bSourceID               5
        iTerminal               0 
      VideoControl Interface Descriptor:
        bLength                27
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 4
        guidExtensionCode         {8ca72912-b447-9440-b0ce-db07386fb938}
        bNumControl             3
        bNrPins                 1
        baSourceID( 0)          2
        bControlSize            2
        bmControls( 0)       0x01
        bmControls( 1)       0x06
        iExtension              0 
      VideoControl Interface Descriptor:
        bLength                29
        bDescriptorType        36
        bDescriptorSubtype      6 (EXTENSION_UNIT)
        bUnitID                 5
        guidExtensionCode         {5bef79f6-df54-fc4b-b8cb-ca7e89a5233f}
        bNumControl             0
        bNrPins                 1
        baSourceID( 0)          4
        bControlSize            4
        bmControls( 0)       0x1f
        bmControls( 1)       0x00
        bmControls( 2)       0x00
        bmControls( 3)       0x00
        iExtension              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               6
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      VideoStreaming Interface Descriptor:
        bLength                            15
        bDescriptorType                    36
        bDescriptorSubtype                  1 (INPUT_HEADER)
        bNumFormats                         2
        wTotalLength                      589
        bEndPointAddress                  129
        bmInfo                              0
        bTerminalLink                       3
        bStillCaptureMethod                 2
        bTriggerSupport                     1
        bTriggerUsage                       0
        bControlSize                        1
        bmaControls( 0)                    27
        bmaControls( 1)                    27
      VideoStreaming Interface Descriptor:
        bLength                            27
        bDescriptorType                    36
        bDescriptorSubtype                  4 (FORMAT_UNCOMPRESSED)
        bFormatIndex                        1
        bNumFrameDescriptors                5
        guidFormat                            {59555932-0000-1000-8000-00aa00389b71}
        bBitsPerPixel                      16
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 2 fields
          Field 1 first: No
          Field pattern: Field 1 only
          bCopyProtect                      0
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 18432000
        dwMaxBitRate                110592000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            320
        wHeight                           240
        dwMinBitRate                  6144000
        dwMaxBitRate                 36864000
        dwMaxVideoFrameBufferSize      153600
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         3
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                 24576000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            38
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         4
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            960
        wHeight                           720
        dwMinBitRate                 55296000
        dwMaxBitRate                165888000
        dwMaxVideoFrameBufferSize     1382400
        dwDefaultFrameInterval         666666
        bFrameIntervalType                  3
        dwFrameInterval( 0)            666666
        dwFrameInterval( 1)           1000000
        dwFrameInterval( 2)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            34
        bDescriptorType                    36
        bDescriptorSubtype                  5 (FRAME_UNCOMPRESSED)
        bFrameIndex                         5
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1280
        wHeight                           720
        dwMinBitRate                 73728000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize     1843200
        dwDefaultFrameInterval        1000000
        bFrameIntervalType                  2
        dwFrameInterval( 0)           1000000
        dwFrameInterval( 1)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            26
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                    0
        bNumImageSizePatterns               5
        wWidth( 0)                        640
        wHeight( 0)                       360
        wWidth( 1)                        320
        wHeight( 1)                       240
        wWidth( 2)                        640
        wHeight( 2)                       480
        wWidth( 3)                        960
        wHeight( 3)                       720
        wWidth( 4)                       1280
        wHeight( 4)                       720
        bNumCompressionPatterns             5
      VideoStreaming Interface Descriptor:
        bLength                             6
        bDescriptorType                    36
        bDescriptorSubtype                 13 (COLORFORMAT)
        bColorPrimaries                     1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
      VideoStreaming Interface Descriptor:
        bLength                            11
        bDescriptorType                    36
        bDescriptorSubtype                  6 (FORMAT_MJPEG)
        bFormatIndex                        2
        bNumFrameDescriptors                5
        bFlags                              1
          Fixed-size samples: Yes
        bDefaultFrameIndex                  1
        bAspectRatioX                       0
        bAspectRatioY                       0
        bmInterlaceFlags                 0x00
          Interlaced stream or variable: No
          Fields per frame: 1 fields
          Field 1 first: No
          Field pattern: Field 1 only
          bCopyProtect                      0
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         1
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           360
        dwMinBitRate                 18432000
        dwMaxBitRate                110592000
        dwMaxVideoFrameBufferSize      460800
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         2
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            320
        wHeight                           240
        dwMinBitRate                  6144000
        dwMaxBitRate                 36864000
        dwMaxVideoFrameBufferSize      153600
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         3
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            640
        wHeight                           480
        dwMinBitRate                 24576000
        dwMaxBitRate                147456000
        dwMaxVideoFrameBufferSize      614400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         4
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                            960
        wHeight                           720
        dwMinBitRate                 55296000
        dwMaxBitRate                331776000
        dwMaxVideoFrameBufferSize     1382400
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            50
        bDescriptorType                    36
        bDescriptorSubtype                  7 (FRAME_MJPEG)
        bFrameIndex                         5
        bmCapabilities                   0x00
          Still image unsupported
        wWidth                           1280
        wHeight                           720
        dwMinBitRate                 73728000
        dwMaxBitRate                442368000
        dwMaxVideoFrameBufferSize     1843200
        dwDefaultFrameInterval         333333
        bFrameIntervalType                  6
        dwFrameInterval( 0)            333333
        dwFrameInterval( 1)            400000
        dwFrameInterval( 2)            500000
        dwFrameInterval( 3)            666666
        dwFrameInterval( 4)           1000000
        dwFrameInterval( 5)           2000000
      VideoStreaming Interface Descriptor:
        bLength                            26
        bDescriptorType                    36
        bDescriptorSubtype                  3 (STILL_IMAGE_FRAME)
        bEndpointAddress                    0
        bNumImageSizePatterns               5
        wWidth( 0)                        640
        wHeight( 0)                       360
        wWidth( 1)                        320
        wHeight( 1)                       240
        wWidth( 2)                        640
        wHeight( 2)                       480
        wWidth( 3)                        960
        wHeight( 3)                       720
        wWidth( 4)                       1280
        wHeight( 4)                       720
        bNumCompressionPatterns             5
      VideoStreaming Interface Descriptor:
        bLength                             6
        bDescriptorType                    36
        bDescriptorSubtype                 13 (COLORFORMAT)
        bColorPrimaries                     1 (BT.709,sRGB)
        bTransferCharacteristics            1 (BT.709)
        bMatrixCoefficients                 4 (SMPTE 170M (BT.601))
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0080  1x 128 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0200  1x 512 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0400  1x 1024 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0b00  2x 768 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       5
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0c00  2x 1024 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       6
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1380  3x 896 bytes
        bInterval               1
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       7
      bNumEndpoints           1
      bInterfaceClass        14 Video
      bInterfaceSubClass      2 Video Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x1400  3x 1024 bytes
        bInterval               1
    Interface Association:
      bLength                 8
      bDescriptorType        11
      bFirstInterface         2
      bInterfaceCount         2
      bFunctionClass          1 Audio
      bFunctionSubClass       2 Streaming
      bFunctionProtocol       0 
      iFunction               6 Live! Cam Sync HD VF0770
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      1 Control Device
      bInterfaceProtocol      0 
      iInterface              6 Live! Cam Sync HD VF0770
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      1 (HEADER)
        bcdADC               1.00
        wTotalLength           39
        bInCollection           1
        baInterfaceNr( 0)       3
      AudioControl Interface Descriptor:
        bLength                12
        bDescriptorType        36
        bDescriptorSubtype      2 (INPUT_TERMINAL)
        bTerminalID             1
        wTerminalType      0x0201 Microphone
        bAssocTerminal          0
        bNrChannels             1
        wChannelConfig     0x0003
          Left Front (L)
          Right Front (R)
        iChannelNames           0 
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      3 (OUTPUT_TERMINAL)
        bTerminalID             2
        wTerminalType      0x0101 USB Streaming
        bAssocTerminal          1
        bSourceID               3
        iTerminal               0 
      AudioControl Interface Descriptor:
        bLength                 9
        bDescriptorType        36
        bDescriptorSubtype      6 (FEATURE_UNIT)
        bUnitID                 3
        bSourceID               1
        bControlSize            2
        bmaControls( 0)      0x03
        bmaControls( 0)      0x00
          Mute Control
          Volume Control
        iFeature                0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       0
      bNumEndpoints           0
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       1
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]         8000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0024  1x 36 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       2
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        16000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0048  1x 72 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       3
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        44100
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00c8  1x 200 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       4
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           2
        bBitResolution         16
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00d8  1x 216 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       5
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            1 Discrete
        tSamFreq[ 0]         8000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0024  1x 36 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       6
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        16000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x0048  1x 72 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       7
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        44100
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00c8  1x 200 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        3
      bAlternateSetting       8
      bNumEndpoints           1
      bInterfaceClass         1 Audio
      bInterfaceSubClass      2 Streaming
      bInterfaceProtocol      0 
      iInterface              0 
      AudioStreaming Interface Descriptor:
        bLength                 7
        bDescriptorType        36
        bDescriptorSubtype      1 (AS_GENERAL)
        bTerminalLink           2
        bDelay                  1 frames
        wFormatTag              1 PCM
      AudioStreaming Interface Descriptor:
        bLength                11
        bDescriptorType        36
        bDescriptorSubtype      2 (FORMAT_TYPE)
        bFormatType             1 (FORMAT_TYPE_I)
        bNrChannels             2
        bSubframeSize           3
        bBitResolution         24
        bSamFreqType            1 Discrete
        tSamFreq[ 0]        48000
      Endpoint Descriptor:
        bLength                 9
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            5
          Transfer Type            Isochronous
          Synch Type               Asynchronous
          Usage Type               Data
        wMaxPacketSize     0x00d8  1x 216 bytes
        bInterval               4
        bRefresh                0
        bSynchAddress           0
        AudioControl Endpoint Descriptor:
          bLength                 7
          bDescriptorType        37
          bDescriptorSubtype      1 (EP_GENERAL)
          bmAttributes         0x01
            Sampling Frequency
          bLockDelayUnits         0 Undefined
          wLockDelay              0 Undefined
Device Qualifier (for other device speed):
  bLength                10
  bDescriptorType         6
  bcdUSB               2.00
  bDeviceClass          239 Miscellaneous Device
  bDeviceSubClass         2 ?
  bDeviceProtocol         1 Interface Association
  bMaxPacketSize0        64
  bNumConfigurations      1
Device Status:     0x0000
  (Bus Powered)
dwztommy123 commented 9 years ago

Hi.I run cameratest7,but only one camera have video display.

Darksideneo commented 9 years ago

Does it have some progress to fix issue to make 2 camera works simultaneously?

btut commented 9 years ago

Hi, I am currently on vacation and have not done anything since my last post. I kinda hoped for somebody to find a fix while I enjoy my vacation :)

On 20 Sep 2015, at 19:23, Darksideneo notifications@github.com wrote:

Does it have some progress to fix issue to make 2 camera works simultaneously?

— Reply to this email directly or view it on GitHub.

saki4510t commented 8 years ago

Hi, I improved the bandwidth issue when using two camera (same product) simultaneously.
As my test result, any combination of two camera including two same product even if they have no serial number worked well. Some issues may still exist on test app(UsbCameraTest7) though. Please try updated version.
There are some possibility if the camera transfer video images with bulk transfer mode, they may not work well simultaneously.

saki

Darksideneo commented 8 years ago

Hi, thank you!

After 2nd attempt I saw that both cameras work (by indicator on cameras), but I cant see a preview on my screen in USBCameraTest7 application (even with one camera).

Also after less than 1 minute I see device detached message and both cameras turn off.

logcat:

09-24 22:20:06.258 20294-20334/com.serenegiant.usbcameratest7 I/OpenGLRenderer﹕ Initialized EGL, version 1.4 09-24 22:20:06.287 20294-20334/com.serenegiant.usbcameratest7 D/OpenGLRenderer﹕ Enabling debug mode 0 09-24 22:20:06.405 20294-20294/com.serenegiant.usbcameratest7 W/IInputConnectionWrapper﹕ showStatusIcon on inactive InputConnection 09-24 22:20:06.405 20294-20294/com.serenegiant.usbcameratest7 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17c065b0 time:1444135 09-24 22:20:23.064 20294-20294/com.serenegiant.usbcameratest7 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17c065b0 time:1460794 09-24 22:20:49.200 20294-20294/com.serenegiant.usbcameratest7 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17c065b0 time:1486930 09-24 22:20:56.021 20294-20304/com.serenegiant.usbcameratest7 I/art﹕ Debugger is no longer active 09-24 22:21:02.189 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onAttach:null 09-24 22:21:02.265 20294-20334/com.serenegiant.usbcameratest7 V/RenderScript﹕ Application requested CPU execution 09-24 22:21:02.276 20294-20334/com.serenegiant.usbcameratest7 V/RenderScript﹕ 0xa2658000 Launching thread(s), CPUs 4 09-24 22:21:06.726 20294-20294/com.serenegiant.usbcameratest7 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17c065b0 time:1504456 09-24 22:21:06.745 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onConnect:UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=2760,mProductId=13344,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[]] 09-24 22:21:06.780 20294-23503/com.serenegiant.usbcameratest7 I/libUVCCamera﹕ [23503_UVCPreview.cpp:407:prepare_preview]:frameSize=(640,480)@YUYV 09-24 22:21:06.809 20294-23505/com.serenegiant.usbcameratest7 I/libUVCCamera﹕ [23505_UVCPreview.cpp:173:callbackPixelFormatChanged]:PIXEL_FORMAT_RAW: 09-24 22:21:07.736 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onAttach:null 09-24 22:21:09.328 20294-20294/com.serenegiant.usbcameratest7 W/InputEventReceiver﹕ Attempted to finish an input event but the input event receiver has already been disposed. 09-24 22:21:09.329 20294-20294/com.serenegiant.usbcameratest7 W/ViewRootImpl﹕ Dropping event due to root view being removed: MotionEvent { action=ACTION_MOVE, id[0]=0, x[0]=917.0668, y[0]=-94.6662, toolType[0]=TOOL_TYPE_FINGER, buttonState=0, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1507042, downTime=1507032, deviceId=6, source=0x1002 } 09-24 22:21:09.329 20294-20294/com.serenegiant.usbcameratest7 W/InputEventReceiver﹕ Attempted to finish an input event but the input event receiver has already been disposed. 09-24 22:21:11.691 20294-20294/com.serenegiant.usbcameratest7 W/libUVCCamera﹕ [20294_UVCPreview.cpp:257:startPreview]:UVCCamera::window does not exist/already running/could not create thread etc. 09-24 22:21:11.692 20294-20294/com.serenegiant.usbcameratest7 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17c065b0 time:1509422 09-24 22:21:11.716 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onConnect:UsbDevice[mName=/dev/bus/usb/001/004,mVendorId=2760,mProductId=13328,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[ UsbInterface[mId=0,mAlternateSetting=0,mName=Vimicro USB2.0 PC Camera,mClass=14,mSubclass=1,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=10,mInterval=5]] UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[] UsbInterface[mId=1,mAlternateSetting=1,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=128,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=2,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=512,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=3,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=1024,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=4,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=2816,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=5,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=3072,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=6,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=4992,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=7,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=5120,mInterval=1]]]] 09-24 22:21:11.729 20294-23545/com.serenegiant.usbcameratest7 I/libUVCCamera﹕ [23545_UVCPreview.cpp:407:prepare_preview]:frameSize=(640,480)@YUYV 09-24 22:21:11.771 20294-23549/com.serenegiant.usbcameratest7 I/libUVCCamera﹕ [23549_UVCPreview.cpp:173:callbackPixelFormatChanged]:PIXEL_FORMAT_RAW: 09-24 22:21:12.693 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onAttach:null 09-24 22:21:15.580 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onConnect:UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=2760,mProductId=13344,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[]] 09-24 22:21:15.594 20294-23562/com.serenegiant.usbcameratest7 I/libUVCCamera﹕ [23562_UVCPreview.cpp:407:prepare_preview]:frameSize=(640,480)@YUYV 09-24 22:21:15.612 20294-23564/com.serenegiant.usbcameratest7 I/libUVCCamera﹕ [23564*UVCPreview.cpp:173:callbackPixelFormatChanged]:PIXEL_FORMAT_RAW: 09-24 22:21:18.870 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/002/001,mVendorId=7531,mProductId=3,mClass=9,mSubclass=0,mProtocol=3,mManufacturerName=Linux 3.4.0-perf-g4d6e88e xhci-hcd,mProductName=xHCI Host Controller,mSerialNumber=xhci-hcd,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=224,mMaxPower=0,mInterfaces=[]] 09-24 22:21:20.712 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onAttach:null 09-24 22:21:23.871 20294-20294/com.serenegiant.usbcameratest7 D/UsbDeviceConnectionJNI﹕ close 09-24 22:21:23.872 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDisconnect:UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=2760,mProductId=13344,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[]] 09-24 22:21:23.881 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=2760,mProductId=13344,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[]] 09-24 22:21:23.885 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/001/003,mVendorId=2760,mProductId=13344,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[]] 09-24 22:21:23.914 20294-20294/com.serenegiant.usbcameratest7 D/UsbDeviceConnectionJNI﹕ close 09-24 22:21:23.915 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDisconnect:UsbDevice[mName=/dev/bus/usb/001/004,mVendorId=2760,mProductId=13328,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[ UsbInterface[mId=0,mAlternateSetting=0,mName=Vimicro USB2.0 PC Camera,mClass=14,mSubclass=1,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=10,mInterval=5]] UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[] UsbInterface[mId=1,mAlternateSetting=1,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=128,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=2,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=512,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=3,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=1024,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=4,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=2816,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=5,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=3072,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=6,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=4992,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=7,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=5120,mInterval=1]]]] 09-24 22:21:23.968 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/001/004,mVendorId=2760,mProductId=13328,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[ UsbInterface[mId=0,mAlternateSetting=0,mName=Vimicro USB2.0 PC Camera,mClass=14,mSubclass=1,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=10,mInterval=5]] UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[] UsbInterface[mId=1,mAlternateSetting=1,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=128,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=2,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=512,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=3,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=1024,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=4,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=2816,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=5,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=3072,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=6,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=4992,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=7,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=5120,mInterval=1]]]] 09-24 22:21:23.973 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/001/004,mVendorId=2760,mProductId=13328,mClass=239,mSubclass=2,mProtocol=1,mManufacturerName=Vimicro Corp.,mProductName=Vimicro USB2.0 PC Camera,mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=128,mMaxPower=64,mInterfaces=[ UsbInterface[mId=0,mAlternateSetting=0,mName=Vimicro USB2.0 PC Camera,mClass=14,mSubclass=1,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=129,mAttributes=3,mMaxPacketSize=10,mInterval=5]] UsbInterface[mId=1,mAlternateSetting=0,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[] UsbInterface[mId=1,mAlternateSetting=1,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=128,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=2,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=512,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=3,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=1024,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=4,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=2816,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=5,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=3072,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=6,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=4992,mInterval=1]] UsbInterface[mId=1,mAlternateSetting=7,mName=null,mClass=14,mSubclass=2,mProtocol=0,mEndpoints=[ UsbEndpoint[mAddress=130,mAttributes=5,mMaxPacketSize=5120,mInterval=1]]]] 09-24 22:21:23.976 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/001/002,mVendorId=6720,mProductId=257,mClass=9,mSubclass=0,mProtocol=2,mManufacturerName=null,mProductName=USB 2.0 Hub [MTT],mSerialNumber=null,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=224,mMaxPower=50,mInterfaces=[]] 09-24 22:21:23.978 20294-20294/com.serenegiant.usbcameratest7 V/MainActivity﹕ onDettach:UsbDevice[mName=/dev/bus/usb/001/001,mVendorId=7531,mProductId=2,mClass=9,mSubclass=0,mProtocol=1,mManufacturerName=Linux 3.4.0-perf-g4d6e88e xhci-hcd,mProductName=xHCI Host Controller,mSerialNumber=xhci-hcd,mConfigurations=[ UsbConfiguration[mId=1,mName=null,mAttributes=224,mMaxPower=0,mInterfaces=[]] 09-24 22:21:27.282 20294-20294/com.serenegiant.usbcameratest7 I/Timeline﹕ Timeline: Activity_idle id: android.os.BinderProxy@17c065b0 time:1525012

Darksideneo commented 8 years ago

I changed camera.setPreviewSize(UVCCamera.DEFAULT_PREVIEW_WIDTH, UVCCamera.DEFAULT_PREVIEW_HEIGHT, UVCCamera.DEFAULT_PREVIEW_MODE, 0.5f); The 1st time 0.5f to 1f then it becomes work like before (only 1 camera). The 2nd time 0.5f to 0.7f then it becomes work fine using both cameras. I am not sure why it works like it works, but I am happy that it finally works =)

I also tested another values and found that only 0.7f and 0.8f works fine for me.

Also about line: camera.setPreviewSize(UVCCamera.DEFAULT_PREVIEW_WIDTH, UVCCamera.DEFAULT_PREVIEW_HEIGHT, UVCCamera.FRAME_FORMAT_MJPEG, 0.5f); It always return the exception "Failed to set preview size", and it works the same with any bandwidth value. But if I replace this line to the line in the catch section then only one camera works...

saki4510t commented 8 years ago

Hi, The actual bandwidth value essentially should be calculated by resolution(width/height), frame rate(dwFrameInterval), dwMaxPayloadTransferSize, compression ratio(if you use compressing format like MJPEG) etc. I assume there may be much better way to adjust bandwidth automatically but I don't find yet.

Also, I don't find yet why it works when using my two different model of camera even if bandwidth parameter(last argument of setPreviewSize function) are both 1.0f, but does not work and needs to adjust bandwidth parameter when using my two same model camera...

saki

dwztommy123 commented 8 years ago

Hi: Two camera can work normally now, but 3 camera can't work and hints [uvc_stream_start_bandwidth] fail; Another question is run program in MTK CPU will not work ?

rwxrwrw commented 8 years ago

Good day! Another strange issue with two identical devices. First stream starts ok with any bandwidth value and device combination. But second stream always:

09-27 16:51:52.205: I/CarVisionSystem(7115): [stream.c:1388:uvc_stream_start_bandwidth]:isochronous transfer mode 09-27 16:51:52.205: I/CarVisionSystem(7115): [stream.c:1504:uvc_stream_start_bandwidth]:Select the altsetting 09-27 16:51:52.205: I/CarVisionSystem(7115): [stream.c:1516:uvc_stream_start_bandwidth]:Set up the transfers 09-27 16:51:52.210: I/CarVisionSystem(7115): [stream.c:1551:uvc_stream_start_bandwidth]:create callback thread 09-27 16:51:52.210: I/CarVisionSystem(7115): [stream.c:1555:uvc_stream_start_bandwidth]:submit transfers 09-27 16:51:52.210: E/CarVisionSystem(7115): [8183_stream.c:1572:uvc_stream_start_bandwidth]:fail 09-27 16:51:52.210: W/CarVisionSystem(7115): [8183_diag.c:88:uvc_perror]:start_streaming:I/O error (-1)

saki4510t commented 8 years ago

Hi, As I mentioned, some camera like my Logitech C910HD/C930e/C270 etc. and their any combination do not need bandwidth adjustment(unfortunately I have only one for each). On the other hand, I have two UCAM-DLY300TA(ELECOM) and they need bandwidth adjustment. I don't confirm yet why they are different. Yesterday additional C270 come and I will test.

Regarding MTK(and also Allwiner and Rockchip), as I know most of them always fail isochronous transfer inside their kernel driver(crash). As you will know, most UVC camera use isochronous transfer and when I tried bulk transfer mode with MTK powered device, it worked only few seconds and after several seconds from start streaming, the USB current shut down and the device rebooted... If you have rooted device and can access your camera via v4l2, you may use the camera but I don't confirm yet.

saki

btut commented 8 years ago

Well, I still can't get my two creative cameras to work simultaneously, but I got one more camera now and I can use that one together with one of my creative cameras... Thanks a lot for your help, saki!

quanhua92 commented 8 years ago

@btut : hi, so your solution is to change the camera. I have two usb camera of the same types. It works great on Nexus devices, Sony devices. However, it can't open simultaneously on others. Do you have any suggestion?

btut commented 8 years ago

Hi, you either change camera and hope the new one works, or use the bandwith adjustment saki has implemented now. If you play around with the parameters, you should be able to get it to work. Unfortunately this is hardware specific, so I cannot give a solution that works for you for sure.

On 20 Oct 2015, at 13:18, Quan Hua notifications@github.com wrote:

@btut : hi, so your solution is to change the camera. I have two usb camera of the same types. It works great on Nexus devices, Sony devices. However, it can't open simultaneously on others. Do you have any suggestion?

— Reply to this email directly or view it on GitHub.

saki4510t commented 8 years ago

Hi, @quanhua92 : If your issue is similar to #19 , that app crashed when opening second camera, try to add permanent permission to your app as described on #19. As Darksideneo said and as I tested with two same camera of Logitech's and ELECOM's, I feel there are no general way of bandwidth adjustment and the values for each camera is not always same. Ex. Logitech ones work with 1.0 for both bandwidth factor but ELECOM's don't and need 0.9 is one and 0.7 for the others... saki

quanhua92 commented 8 years ago

@saki4510t , @btut : actually, i can get both the camera work seamlessly on Nexus devices. But the other devices don't work. I can only open 1 camera at a time on the HTC or Asus phone. Besides, it may disconnected continuously. But everything is fine on Nexus & LG G3.

oferinfinityar commented 8 years ago

Hi Saki, I'm running usbCameraTest7 on nexus 5 with Minuro webcam via OTG cable. the app runs, both camera seems to be active according to the lights on the camera but there is no preview on screen.

Will appreciate your support. Thanks, Ofer

logcat:

10-29 15:07:28.944: W/InputMethodManagerService(773): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@4325aa80 attribute=null, token = android.os.BinderProxy@4330dc20 10-29 15:07:28.954: I/EventHub(773): Removing device '/dev/input/event6' due to inotify event 10-29 15:07:28.954: I/EventHub(773): Removed device: path=/dev/input/event6 name=Vimicro USB2.0 PC Camera id=16 fd=93 classes=0x80000001 10-29 15:07:28.964: I/InputReader(773): Device removed: id=16, name='Vimicro USB2.0 PC Camera', sources=0x00000101 10-29 15:07:28.974: I/libUVCCamera(4667): [4726_UVCPreview.cpp:477:prepare_preview]:frameSize=(640,480)@YUYV 10-29 15:07:31.824: D/dalvikvm(1834): GC_CONCURRENT freed 1112K, 7% free 17966K/19208K, paused 3ms+3ms, total 15ms 10-29 15:07:31.904: D/dalvikvm(1834): GC_CONCURRENT freed 374K, 7% free 18016K/19208K, paused 2ms+1ms, total 12ms 10-29 15:07:32.594: D/audio_hw_primary(189): select_devices: out_snd_device(2: speaker) in_snd_device(0: ) 10-29 15:07:35.664: W/InputMethodManagerService(773): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@42c93aa8 attribute=null, token = android.os.BinderProxy@4330dc20 10-29 15:07:35.674: I/EventHub(773): Removing device '/dev/input/event7' due to inotify event 10-29 15:07:35.674: I/EventHub(773): Removed device: path=/dev/input/event7 name=Vimicro USB2.0 PC Camera id=17 fd=94 classes=0x80000001 10-29 15:07:35.694: I/InputReader(773): Device removed: id=17, name='Vimicro USB2.0 PC Camera', sources=0x00000101 10-29 15:07:35.694: I/libUVCCamera(4667): [4738_UVCPreview.cpp:477:prepare_preview]:frameSize=(640,480)@YUYV 10-29 15:07:40.444: V/QcrilMsgTunnelSocket(2250): After reading offset = 0 remaining = 4 countRead = 4 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): messageLength extracted from first 4 inputStream reads = 29 10-29 15:07:40.464: V/QcrilMsgTunnelSocket(2250): offset = 0 remaining = 29 countRead = 0 10-29 15:07:40.464: V/QcrilMsgTunnelSocket(2250): offset = 0 remaining = 29 countRead = 29 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): readRilMessage: Buffer = [B@42baddd8 HexData = [0100000004040000110000005155414c434f4d4def0308000100000003] 10-29 15:07:40.464: V/QcrilMsgTunnelSocket(2250): Read packet: 29 bytes. Data Available = 32 Position = 0 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): processResponse. message type = 1. Data Available = 28 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): ByteArray from parcel = 5155414c434f4d4def0308000100000003 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): Received RIL_UNSOL_OEM_HOOK_RAW message 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): Oem ID in RIL_UNSOL_OEM_HOOK_RAW is QUALCOMM 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): OEM ID check Passed 10-29 15:07:40.464: D/QcrilMsgTunnelSocket(2250): Response ID in RIL_UNSOL_OEM_HOOK_RAW is 525295 10-29 15:07:40.474: D/QcrilMsgTunnelSocket(2250): Response ID 525295is not served in this process. 10-29 15:07:40.474: D/QcrilMsgTunnelSocket(2250): To broadcast an Intent via the notifier to external apps 10-29 15:07:40.474: D/QcrilMsgTunnelIfaceManager(2250): handleMessage what=0 10-29 15:07:40.474: D/QcrilMsgTunnelIfaceManager(2250): Broadcasting intent ACTION_UNSOL_RESPONSE_OEM_HOOK_RAW 10-29 15:07:40.474: V/QcrilMsgTunnelSocket(2250): Before reading offset = 0 remaining = 4 countRead = 0 10-29 15:08:05.554: I/PowerManagerService(773): Going to sleep due to screen timeout... 10-29 15:08:06.054: D/SurfaceFlinger(186): Screen released, type=0 flinger=0xb75c9450 10-29 15:08:06.054: D/qdhwcomposer(186): hwc_blank: Blanking display: 0 10-29 15:08:06.354: D/qdhwcomposer(186): hwc_blank: Done blanking display: 0 10-29 15:08:06.354: D/SurfaceControl(773): Excessive delay in blankDisplay() while turning screen off: 304ms 10-29 15:08:06.454: D/NfcService(1043): NFC-C OFF 10-29 15:08:06.464: I/Keyboard.Facilitator(989): onFinishInput() 10-29 15:08:11.434: V/KeyguardHostView(886): Initial transport state: 1, pbstate=0 10-29 15:08:11.494: V/KeyguardHostView(886): music state changed: 0 10-29 15:08:11.514: I/InputReader(773): Reconfiguring input devices. changes=0x00000004 10-29 15:08:11.514: I/InputReader(773): Device reconfigured: id=4, name='touch_dev', size 1080x1920, orientation 0, mode 1, display id 0 10-29 15:08:11.524: I/InputReader(773): Reconfiguring input devices. changes=0x00000004 10-29 15:08:11.524: I/ActivityManager(773): Config changes=480 {1.0 ?mcc?mnc en_US ldltr sw360dp w360dp h567dp 480dpi nrml port finger -keyb/v/h -nav/h s.14} 10-29 15:08:11.534: D/EventHub(773): No input device configuration file found for device 'Vimicro USB2.0 PC Camera'. 10-29 15:08:11.544: W/EventHub(773): Unable to disable kernel key repeat for /dev/input/event6: Function not implemented 10-29 15:08:11.544: I/EventHub(773): New device: id=18, fd=93, path='/dev/input/event6', name='Vimicro USB2.0 PC Camera', classes=0x80000001, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, usingSuspendBlockIoctl=true, usingClockIoctl=true 10-29 15:08:11.544: I/InputReader(773): Device added: id=18, name='Vimicro USB2.0 PC Camera', sources=0x00000101 10-29 15:08:11.544: D/EventHub(773): No input device configuration file found for device 'Vimicro USB2.0 PC Camera'. 10-29 15:08:11.554: W/EventHub(773): Unable to disable kernel key repeat for /dev/input/event7: Function not implemented 10-29 15:08:11.554: I/EventHub(773): New device: id=19, fd=94, path='/dev/input/event7', name='Vimicro USB2.0 PC Camera', classes=0x80000001, configuration='', keyLayout='/system/usr/keylayout/Generic.kl', keyCharacterMap='/system/usr/keychars/Generic.kcm', builtinKeyboard=false, usingSuspendBlockIoctl=true, usingClockIoctl=true 10-29 15:08:11.554: I/InputReader(773): Device added: id=19, name='Vimicro USB2.0 PC Camera', sources=0x00000101 10-29 15:08:11.554: D/UsbDeviceConnectionJNI(4667): close 10-29 15:08:11.554: D/UsbDeviceConnectionJNI(4667): close 10-29 15:08:11.584: V/KeyguardHostView(886): Initial transport state: 1, pbstate=0 10-29 15:08:11.614: V/KeyguardHostView(886): music state changed: 0 10-29 15:08:11.624: D/PhoneStatusBar(886): disable: < expand icons alerts ticker system_info BACK* HOME* RECENT* CLOCK* search > 10-29 15:08:11.634: D/PhoneStatusBar(886): mSettingsPanelGravity = 55 10-29 15:08:11.644: V/KeyguardHostView(886): Initial transport state: 1, pbstate=0 10-29 15:08:11.694: V/KeyguardHostView(886): music state changed: 0 10-29 15:08:11.714: W/View(886): requestLayout() improperly called by android.widget.TextClock{442c1008 V.ED.... ......ID 223,0-659,320 #7f0a0047 app:id/clock_view} during layout: running second layout pass 10-29 15:08:11.714: W/View(886): requestLayout() improperly called by android.widget.TextClock{443194e0 V.ED.... ......ID 295,0-587,57 #7f0a004c app:id/date_view} during layout: running second layout pass 10-29 15:08:16.534: W/WindowManager(773): App freeze timeout expired.

jp1017 commented 7 years ago

unfortunately, I got IO error, this issue: #180 anybody can give me some advice?

heaveninfosoft commented 4 years ago

Hi: Two camera can work normally now, but 3 camera can't work and hints [uvc_stream_start_bandwidth] fail; Another question is run program in MTK CPU will not work ?

can you help me???