State of UVC 1.5 Support for Controlling H.264

Although this doesn’t deal with the THETA API, I thought this info would be useful for other developers. There’s an active discussion on the official forum about the UVC 1.5 support in the THETA S.

Here are the main points made by community members:

  • UVC 1.5 support in the THETA S camera is incomplete
  • 720p @ 15 works with motion JPEG
  • Linux kernel supports UVC 1.1 and the UVC 1.5 patches are not in Linux kernel 4.9

Postby dakami » 26 Jan 2017, 14:44

Right now, the UVC 1.50 support is pretty raw. Forget controlling capture parameters, it only barely gets any sort of stream out at all.

There’s some twisty path wherein they sort of have in working in Windows, it seems, but it’s not like it just shows up as another codec and resolution pair. I’m diving into the driver trying to fix it (I managed to get the PS3 camera working much nicer). I randomly found out recently that Wireshark has super nice USB sniffing now on Windows, so if I can get it up there (and thus far, I haven’t really) I can force whatever parameters are needed.

Ah, it’s never easy. At least 720p15 works without too much drama.


by peter_gerten » 02 Feb 2017, 06:53

I got a Theta S now to play around and UVC 720@15 mjpeg indeed works without problems. As I target a linux based system it is not only a problem of incomplete UVC1.5 support on Theta side but also on Linux side. I was not aware that UVC1.5 kernel patches that appeared 3 years ago never made it into the kernel (not even in the recent 4.9).

peter_gerten

Community member bernz (nic) has UVC 1.5 working with Android.

I also got a Theta S working with H264 in our Android App.

My assumption in my previous post was right. Linux “default” UVC driver (e.g. V4L2) might not support 1.5 (actually, Android does not even have a UVC driver), but nothing prevents you from creating your own driver.

So I have implemented my own 1.5 UVC driver for Android, following the specs (Document Library | USB-IF). From there, is is only standard USB i/o.

What confused me at the beginning is that the Theta has two USB configurations:
The first configuration (which is the default one) defines the UVC 1.1 interfaces. The second one defines UVC 1.5. It is quite unusual, so I missed the second one.

I have not tried yet to see if you can control the H.264 encoder though…

He also pointed me to this repo as a starting point.

1 Like