๐Ÿงช Aravis 0.9.0 development release

Hi,

I have started a new development series due to some needed API breaks. This series introduces native buffers, which allows for example to allocate libusb DMA buffers when using the USB3Vision protocol.

Thanks to Xiaoqiang and Vรกclav, experimental support was added to make aravis either a GenTL producer or a GenTL consumer.

Another experimental feature is the v4l2 interface, which provides access to the v4l2 stream using the aravis API.

  • v4l2, USB3Vision: native buffer allocation (Emmanuel)
  • GenTL producer: experimental implementation (Vรกclav)
  • GenTL consumer: experimental implementation (Xiaoqiang)
  • v4l2 interface: experimental implementation (Emmanuel)
  • USB3Vision: make maximum transfer size configurable (Emmanuel)
  • gst: add gamma property (WhaSukGO)

Have fun using Aravis.

Cheers,

Emmanuel.

1 Like

How to use v4l2?

I did build with โ€˜-Dv4l2=enabledโ€™

Can you share how to use and stream?

arv-tool-0.10 should return the available v4l2 device. For example, on my laptop:

./src/arv-tool-0.10
uvcvideo-Integrated_Webcam_HD: Integrate-200901010001 (/dev/video0)

It is possible to test it using arv-camera-test-0.10:

 ./src/arv-camera-test-0.10
Looking for the first available camera
vendor name            = uvcvideo
model name             = Integrated_Webcam_HD: Integrate
device serial number   = /dev/video0
image width            = 640
image height           = 480
exposure               = 62400 ยตs
gain                   = 2 dB
payload                = 614400 bytes
 26 frames/s -      16 MiB/s
 30 frames/s -    18.4 MiB/s
 30 frames/s -    18.4 MiB/s
^C 30 frames/s -    18.4 MiB/s
n_completed_buffers    = 116
n_failures             = 0
n_underruns            = 0
n_transferred_bytes    = 71270400

Look like I can see the device in Laptop but not in ARM64 target, do we need any v4l2 driver?

Linux Laptop (X86)

=> arv-tool-0.10 
[01:47:22.523] ๐Ÿ…ธ interface> Found 1 USB3Vision device (among 7 USB devices)
[01:47:22.624] ๐Ÿ…ธ interface> No suitable pixel format found for v4l2 device '/dev/video1'
[01:47:22.624] ๐Ÿ…ธ interface> No suitable pixel format found for v4l2 device '/dev/video2'
[01:47:22.624] ๐Ÿ…ธ interface> No suitable pixel format found for v4l2 device '/dev/video3'
[01:47:22.625] ๐Ÿ…ธ interface> [GvDiscoverSocket::new] Add interface 127.0.0.1 (127.0.0.1)
[01:47:22.625] ๐Ÿ…ธ interface> [GvDiscoverSocket::new] Add interface 192.168.29.36 (192.168.29.255)
[01:47:22.625] ๐Ÿ…ธ interface> [GvDiscoverSocket::new] Add interface 172.17.0.1 (172.17.255.255)
[01:47:23.626] ๐Ÿ†† interface> No "GENICAM_GENTL64_PATH" defined
DO3THINK-04B400000209-U024700000209 (USB3)
uvcvideo-Integrated Camera: Integrated C-0001 (/dev/video0)
[01:47:23.627] ๐Ÿ†† interface> No "GENICAM_GENTL64_PATH" defined

Linux ARM64 (RK3588)

edgeble-6b $ arv-tool-0.10 
[20:22:39.802] ๐Ÿ…ธ interface> Found 1 USB3Vision device (among 12 USB devices)
[20:22:39.804] ๐Ÿ…ธ interface> [GvDiscoverSocket::new] Add interface 127.0.0.1 (127.0.0.1)
[20:22:40.805] ๐Ÿ†† interface> No "GENICAM_GENTL64_PATH" defined
DO3THINK-04B400000209-U024700000209 (USB3)
[20:22:40.808] ๐Ÿ†† interface> No "GENICAM_GENTL64_PATH" defined
edgeble-6b $ arv-camera-test-0.10 
Looking for the first available camera
[20:22:45.716] ๐Ÿ…ธ interface> Found 1 USB3Vision device (among 12 USB devices)
[20:22:45.733] ๐Ÿ…ธ device> [UvDevice::new] GUID    = 04B400000209
[20:22:45.734] ๐Ÿ…ธ device> [UvDevice::new] USB 3.0
[20:22:45.734] ๐Ÿ…ธ device> [UvDevice::new] Using control endpoint 2, interface 0
[20:22:45.734] ๐Ÿ…ธ device> [UvDevice::new] Using data endpoint 1, interface 1
[20:22:45.735] ๐Ÿ…ธ device> Get genicam
[20:22:45.735] ๐Ÿ…ธ device> MANUFACTURER_NAME =        'Hifly Technology'
[20:22:45.735] ๐Ÿ…ธ device> MAX_DEVICE_RESPONSE_TIME = 0x000001f4
[20:22:45.736] ๐Ÿ…ธ device> DEVICE_CAPABILITY        = 0x0000000000000a09
[20:22:45.736] ๐Ÿ…ธ device> SRBM_ADDRESS =             0x0000000002000000
[20:22:45.736] ๐Ÿ…ธ device> MANIFEST_TABLE_ADDRESS =   0x0000000004000000
[20:22:45.737] ๐Ÿ…ธ device> U3VCP_CAPABILITY =         0x0000000000000001
[20:22:45.737] ๐Ÿ…ธ device> MAX_CMD_TRANSFER =         0x00004000
[20:22:45.737] ๐Ÿ…ธ device> MAX_ACK_TRANSFER =         0x00004000
[20:22:45.737] ๐Ÿ…ธ device> SIRM_OFFSET =              0x0000000003000000
[20:22:45.738] ๐Ÿ…ธ device> SIRM_INFO =                0x00000000
[20:22:45.738] ๐Ÿ…ธ device> SIRM_CONTROL =             0x00000000
[20:22:45.739] ๐Ÿ…ธ device> SIRM_REQ_PAYLOAD_SIZE =    0x00000000004c8000
[20:22:45.739] ๐Ÿ…ธ device> SIRM_REQ_LEADER_SIZE =     0x00000040
[20:22:45.739] ๐Ÿ…ธ device> SIRM_REQ_TRAILER_SIZE =    0x00000020
[20:22:45.739] ๐Ÿ…ธ device> SIRM_MAX_LEADER_SIZE =     0x00000400
[20:22:45.739] ๐Ÿ…ธ device> SIRM_PAYLOAD_SIZE =        0x00004000
[20:22:45.739] ๐Ÿ…ธ device> SIRM_PAYLOAD_COUNT =       0x00000132
[20:22:45.739] ๐Ÿ…ธ device> SIRM_TRANSFER1_SIZE =      0x00000000
[20:22:45.739] ๐Ÿ…ธ device> SIRM_TRANSFER2_SIZE =      0x00000000
[20:22:45.739] ๐Ÿ…ธ device> SIRM_MAX_TRAILER_SIZE =    0x00000400
[20:22:45.739] ๐Ÿ…ธ device> MANIFEST_N_ENTRIES =       0x0000000000000001
[20:22:45.740] ๐Ÿ…ธ device> MANIFEST ENTRY
                         00000000 00 00 00 01 00 04 01 01 00 00 00 05 00 00 00 00  ................
                         00000010 c8 2b 00 00 00 00 00 00 00 00 00 00 00 00 00 00  .+..............
                         00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
                         00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
[20:22:45.740] ๐Ÿ…ธ device> genicam address =          0x0000000005000000
[20:22:45.740] ๐Ÿ…ธ device> genicam size    =          0x0000000000002bc8
[20:22:45.742] ๐Ÿ…ธ device> zip file =                 M3S518.xml
vendor name            = Hifly Technology
model name             = MV-518UC85-GS 
device serial number   = U024700000209
image width            = 2448
image height           = 2048
exposure               = 10000 ยตs
gain                   = 1 dB
payload                = 5013504 bytes
[20:22:45.766] ๐Ÿ…ธ stream> SIRM_INFO             = 0x00000000
[20:22:45.766] ๐Ÿ…ธ stream> SIRM_REQ_PAYLOAD_SIZE = 0x00000000004c8000
[20:22:45.766] ๐Ÿ…ธ stream> SIRM_REQ_LEADER_SIZE  = 0x00000040
[20:22:45.766] ๐Ÿ…ธ stream> SIRM_REQ_TRAILER_SIZE = 0x00000020
[20:22:45.766] ๐Ÿ…ธ stream> Required alignment    = 1
[20:22:45.767] ๐Ÿ…ธ stream> SIRM_PAYLOAD_SIZE     = 0x00100000
[20:22:45.767] ๐Ÿ…ธ stream> SIRM_PAYLOAD_COUNT    = 0x00000004
[20:22:45.767] ๐Ÿ…ธ stream> SIRM_TRANSFER1_SIZE   = 0x000c8000
[20:22:45.767] ๐Ÿ…ธ stream> SIRM_TRANSFER2_SIZE   = 0x00000000
[20:22:45.768] ๐Ÿ…ธ stream> SIRM_MAX_LEADER_SIZE  = 0x00000040
[20:22:45.768] ๐Ÿ…ธ stream> SIRM_MAX_TRAILER_SIZE = 0x00000020
[20:22:45.769] ๐Ÿ…ธ stream-thread> Start async USB3Vision stream thread
[20:22:46.185] ๐Ÿ†† stream-thread> Payload transfer failed (LIBUSB_TRANSFER_STALL)