usb - 如何限制 UVC 小工具的 FPS?
问题描述
g_webcam
我正在开发一个基于git://git.ideasonboard.org/uvc-gadget.git
. 我注意到 USB 设备配置结构中提供的 FPS 设置不受尊重。事实上,小工具会尝试尽可能快的帧速率。此外,由于机会主义 FPS 选择可能导致低级 USB 接口泛滥,主机往往会松动到 UVC 设备的管道。
那么,我们如何为 UVC 小工具设置 FPS 的硬限制?
谢谢!
内核模块源码:
/* Uncompressed Payload - 3.1.2. Uncompressed Video Frame Descriptor */
static const struct UVC_FRAME_UNCOMPRESSED(1)
uvc_frame_uncompressed_360p = {
.bLength = UVC_DT_FRAME_UNCOMPRESSED_SIZE(1),
.bDescriptorType = USB_DT_CS_INTERFACE,
.bDescriptorSubType = UVC_VS_FRAME_UNCOMPRESSED,
.bFrameIndex = 1,
.bmCapabilities = 0,
.wWidth = cpu_to_le16(FRAME_WIDTH),
.wHeight = cpu_to_le16(FRAME_HEIGHT),
.dwMinBitRate = cpu_to_le32(FRAME_WIDTH * FRAME_HEIGHT * 8 * FRAME_RATE),
.dwMaxBitRate = cpu_to_le32(FRAME_WIDTH * FRAME_HEIGHT * 8 * FRAME_RATE),
.dwMaxVideoFrameBufferSize = cpu_to_le32(FRAME_WIDTH * FRAME_HEIGHT),
.dwDefaultFrameInterval = cpu_to_le32(FRAME_RATE_USEC),
.bFrameIntervalType = 1,
.dwFrameInterval[0] = cpu_to_le32(FRAME_RATE_USEC),
};
UVC小工具来源:
static const struct uvc_frame_info uvc_frames_grey[] = {
{ FRAME_WIDTH, FRAME_HEIGHT, FRAME_RATE_USEC, },
{ 0, 0, 0, },
};
通用标题:
#define STREAMING_MAXPACKET 1024
#define FRAME_WIDTH 160
#define FRAME_HEIGHT 90
#define FRAME_RATE 330 /* 330 FPS */
#define FRAME_RATE_USEC 30303 /* 330 FPS */
解决方案
我相信 Paul 增加了对在 USB-gadget 中设置 FPS 限制的支持,该功能最近已被上游化。
请考虑查看存储库的最新版本。
如果您对此有任何进一步的问题,请告诉我们。
推荐阅读
- javascript - 如何限制附加元素的 div 视图(多个选项卡)
- reactjs - 如何使用下拉菜单制作语义 UI React 侧边栏
- python - DRF SocialLoginView callback_url 未在 AppleLogin 上重定向
- ios - 我应该如何处理 ITMS-90683:Info.plist 中缺少目的字符串
- spring - 在 MongoTemplate 方法中从 java 进行批量删除操作时出现 OOM(Java 内存不足)问题
- mongodb - 如何将 MongoDB 长格式集合导出为宽格式 csv
- go - 调试时,GoLand 无法评估 M1 上的函数
- javascript - fullCalendar V3:如何按颜色修复列
- ios - UITabBarController - 需要在选择一个选项卡时显示任一视图控制器,具体取决于特定条件
- javascript - 在 setInterval 内登录时数组迭代器输出不一致