mborgerson
Well-known member
I'm making slow, but steady progress on adding a UVC class video driver to the USBHost library. So far, I have spent most of my time consulting books and downloads about the UVC class and slowly adding code to my driver skeleton. Today's breakthrough was getting my driver to claim an interface from the device data arriving from the camera. That raised the question: How do I get my driver to claim the desired alternate configuration from among the dozen or more interface options for UVC devices? Apparently, there are different options for each of the combinations of image size and format as well as for the different data configurations. At some point, I need to tell the camera that I want uncompressed YUV data in VGA resolution.
The interfaces in the configuration data are in sequential order with an index as part of the data. As it stands now, the function to claim a device for the UVC driver always stops after claiming the first option.
I haven't yet explored all the other host drivers, so I don't know if other drivers face the same challenges with multiple alternate configurations. Can anyone point me to a discussion of selecting alternate configurations?
I found a very comprehensive discussion of implementing a UVC class driver for the STM32 microprocessors using Arduino at Codeproject.com:
Getting video stream from USB web-camera on Arduino DueCodeProjecthttps://www.codeproject.com › ... › Arduino
There are 9 or more segments, each with downloadable source code. I've only used some of the debug output routines for the UVC class at this point. I suspect that I will spend many weeks in the gray days of the Oregon winter adapting the control and data flow in that project to the Teensy USB host. Multiple sources state that most modern WebCams can be set up for bulk mode transfers---and such transfers are preferred for the collection of data for video editing. Yet another thing I need to work out, as the TeensyHost does not handle isochronous endpoints.
For those of you who may want to work on a UVC driver, you can get version 1.5 of the UVC class specification through the Wayback Machine. Apparently, USB.org only restricted access to the updated specification many months after it was available with unrestricted access.
The interfaces in the configuration data are in sequential order with an index as part of the data. As it stands now, the function to claim a device for the UVC driver always stops after claiming the first option.
I haven't yet explored all the other host drivers, so I don't know if other drivers face the same challenges with multiple alternate configurations. Can anyone point me to a discussion of selecting alternate configurations?
I found a very comprehensive discussion of implementing a UVC class driver for the STM32 microprocessors using Arduino at Codeproject.com:
Getting video stream from USB web-camera on Arduino DueCodeProjecthttps://www.codeproject.com › ... › Arduino
There are 9 or more segments, each with downloadable source code. I've only used some of the debug output routines for the UVC class at this point. I suspect that I will spend many weeks in the gray days of the Oregon winter adapting the control and data flow in that project to the Teensy USB host. Multiple sources state that most modern WebCams can be set up for bulk mode transfers---and such transfers are preferred for the collection of data for video editing. Yet another thing I need to work out, as the TeensyHost does not handle isochronous endpoints.
For those of you who may want to work on a UVC driver, you can get version 1.5 of the UVC class specification through the Wayback Machine. Apparently, USB.org only restricted access to the updated specification many months after it was available with unrestricted access.