Peter-St / Android-UVC-Camera

GNU Lesser General Public License v2.1
136 stars 25 forks source link

Yuv format not available #7

Closed costeacostin closed 3 years ago

costeacostin commented 4 years ago

Hello,

I tried to take out the frames from the camera in YUV format but it doesnt work, I see only random pixels and after this I tried to convert by myself the the frames from jpeg to yuv but still no success. Do you have any idea about how I can do this in a clean manner?

Thanks, Costin

Peter-St commented 4 years ago

Hello costeacostin,

First tell how big the frames are you got from the camera. (How many bytes)

Next you need to know, how big a frame of your camera should be. If you have a linux Pc, you can post the output of: ' lsusb -v -d : ', to know your camera specifications.

Under the uncompressed video formats, there exists more than one, so you have to know the exact uncompressed format of your camera.

If the frame has not the right size, you may have to change some of the camera values. Perhaps you can post all of the camera values you use with your camera.

So far,

Peter

costeacostin commented 4 years ago

Hello,

The output of lsusb: Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Device Descriptor: bLength 18 bDescriptorType 1 bcdUSB 1.10 bDeviceClass 9 Hub bDeviceSubClass 0 Unused bDeviceProtocol 0 Full speed (or root) hub bMaxPacketSize0 64 idVendor 0x1d6b Linux Foundation idProduct 0x0001 1.1 root hub bcdDevice 5.00 iManufacturer 3 Linux 5.0.0-23-generic uhci_hcd iProduct 2 UHCI Host Controller iSerial 1 0000:02:00.0 bNumConfigurations 1 Configuration Descriptor: bLength 9 bDescriptorType 2 wTotalLength 25 bNumInterfaces 1 bConfigurationValue 1 iConfiguration 0 bmAttributes 0xe0 Self Powered Remote Wakeup MaxPower 0mA Interface Descriptor: bLength 9 bDescriptorType 4 bInterfaceNumber 0 bAlternateSetting 0 bNumEndpoints 1 bInterfaceClass 9 Hub bInterfaceSubClass 0 Unused bInterfaceProtocol 0 Full speed (or root) hub iInterface 0 Endpoint Descriptor: bLength 7 bDescriptorType 5 bEndpointAddress 0x81 EP 1 IN bmAttributes 3 Transfer Type Interrupt Synch Type None Usage Type Data wMaxPacketSize 0x0002 1x 2 bytes bInterval 255 Hub Descriptor: bLength 9 bDescriptorType 41 nNbrPorts 2 wHubCharacteristic 0x000a No power switching (usb 1.0) Per-port overcurrent protection bPwrOn2PwrGood 1 * 2 milli seconds bHubContrCurrent 0 milli Ampere DeviceRemovable 0x00 PortPwrCtrlMask 0xff Hub Port Status: Port 1: 0000.0103 power enable connect Port 2: 0000.0103 power enable connect Device Status: 0x0001 Self Powered

What should I use from here?

BR, Costin

costeacostin commented 4 years ago

ioctl: VIDIOC_ENUM_FMT Index : 0 Type : Video Capture Pixel Format: 'YUYV' Name : YUYV 4:2:2 Size: Discrete 640x480 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 352x288 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 320x240 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 176x144 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 160x120 Interval: Discrete 0.033s (30.000 fps) Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 2592x1944 Interval: Discrete 0.500s (2.000 fps) Size: Discrete 1600x1200 Interval: Discrete 0.167s (6.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 1920x1080 Interval: Discrete 0.167s (6.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 1280x720 Interval: Discrete 0.077s (13.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 1024x768 Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps) Size: Discrete 800x600 Interval: Discrete 0.040s (25.000 fps) Interval: Discrete 0.050s (20.000 fps) Interval: Discrete 0.067s (15.000 fps) Interval: Discrete 0.100s (10.000 fps) Interval: Discrete 0.200s (5.000 fps)

Index       : 1
Type        : Video Capture
Pixel Format: 'MJPG' (compressed)
Name        : Motion-JPEG
    Size: Discrete 640x480
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 352x288
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 320x240
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 176x144
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 160x120
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 2592x1944
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 1600x1200
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 1920x1080
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 1280x720
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 1024x768
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
    Size: Discrete 800x600
        Interval: Discrete 0.033s (30.000 fps)
        Interval: Discrete 0.040s (25.000 fps)
        Interval: Discrete 0.050s (20.000 fps)
        Interval: Discrete 0.067s (15.000 fps)
        Interval: Discrete 0.100s (10.000 fps)
        Interval: Discrete 0.200s (5.000 fps)
Peter-St commented 4 years ago

Ok,

does the stream work with MJPEG Format? Do you see here the Pictures?

What exactly is the length of the frames with Yuv? From device to device there could be differences receiveing Mjpeg or Yuv Frames.

The output under linux should be longer... Was this the whole output? --> Drivers and permissions granted under Linux?

So far,

Peter

costeacostin commented 4 years ago

Hi,

Yes, I can see images in MJPEG format in android without problems. The framerate is pretty slow, I could't identify the magic formula of parameters in order to make it faster. My problem is that I really need the frames as YUV for another protocol and I found some code that convert JPEG in YUV but the output are just random pixels (I don't know which format of RGB is the picture). If you have time we can have a chat or call, my e-mail is costea.costin96@gmail.com

I really like this project, Costin

Peter-St commented 4 years ago

Ok,

then lets try to get some yuv frames from your Camera with the Android App:

I think for Mjpeg Frames you used the "Set Up With Uvc Values" Button. Normally this Button should work for the YUV Frames too.

First 3 Entries could be the same like the ones from Mjpeg, because they will matter later during debugging the camera. (Maxpacketsize, PacketsPerRequest, ActiveUrbs)

The 4. entry is the frame Format: Please post the automatic detected Formats you can choose here, because the two fromats should be YUYV and Mjpeg. For the last 2 values you choose the lowest resolution (160x120) and the highest Frame Interval (2000000). (This is because you receive here the smallest frames from your camera with the lowest framerate)

The uncompressed Frames you receive here should have a size of 38400 bytes!

All frames you get from your cam with a different size are Error frames! (Only fits for 160x120 framesize)

For debugging your camera now click the "-Controltransfer-Testrun-" Button in the App and Run a Testrun with 1 Frame. The App now prints the frame size in bytes from the first frame received from your Camera. --> please post the size of this frame! If this frame is already 38400 bytes long you should be able to lunch the stream over the main menu.

Please post your results from the steps above.

Sadly I have less time for discussing the issue via a chat. Also my notebook is in repair for about a month and I'm not getting any response from the repair service if they can fix my notebook or not...

So far,

Peter