Introduce a new USB Video Class (UVC) implementation from scratch. It exposes a native Zephyr Video driver interface, allowing to call the video_enqueue()/video_dequeue() interface. It will query the attached video device to learn about the video capabilities, and use this to configure the USB descriptors. At runtime, this UVC implementation will send this device all the control requests, which it will send to the attached video device. The application can poll the format currently selected by the host, but will not be alerted when the host configures a new format, as there is no video.h API for it yet. Signed-off-by: Josuah Demangeon <me@josuah.net>
47 lines
1.3 KiB
Plaintext
47 lines
1.3 KiB
Plaintext
# Copyright (c) 2025 tinyVision.ai Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config USBD_VIDEO_CLASS
|
|
bool "USB Video Class implementation [EXPERIMENTAL]"
|
|
depends on DT_HAS_ZEPHYR_UVC_DEVICE_ENABLED
|
|
select EXPERIMENTAL
|
|
help
|
|
USB Device Video Class (UVC) implementation.
|
|
|
|
if USBD_VIDEO_CLASS
|
|
|
|
config USBD_VIDEO_MAX_FORMATS
|
|
int "Max number of format descriptors"
|
|
range 1 254
|
|
default 32
|
|
help
|
|
The table of format descriptors are generated at runtime. This options plans the
|
|
storage at build time to allow enough descriptors to be generated. The default value
|
|
aims a compromise between enough descriptors for most devices, but not too much memory
|
|
being used.
|
|
|
|
config USBD_VIDEO_MAX_FRMIVAL
|
|
int "Max number of video output stream per USB Video interface"
|
|
range 1 255
|
|
default 8
|
|
help
|
|
Max number of Frame Interval listed on a frame descriptor. The
|
|
default value is selected arbitrarily to fit most situations without
|
|
requiring too much RAM.
|
|
|
|
config USBD_VIDEO_NUM_BUFS
|
|
int "Max number of buffers the UVC class can allocate"
|
|
default 16
|
|
help
|
|
Control the number of buffer UVC can allocate in parallel.
|
|
The default is a compromise to allow enough concurrent buffers but not too much
|
|
memory usage.
|
|
|
|
module = USBD_VIDEO
|
|
module-str = usbd uvc
|
|
default-count = 1
|
|
source "subsys/logging/Kconfig.template.log_config"
|
|
|
|
endif # USBD_VIDEO_CLASS
|