|
@@ -89,15 +89,19 @@ int uvc_query_ctrl(struct uvc_device *dev, __u8 query, __u8 unit,
|
|
|
static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
|
|
|
struct uvc_streaming_control *ctrl)
|
|
|
{
|
|
|
- struct uvc_format *format;
|
|
|
+ struct uvc_format *format = NULL;
|
|
|
struct uvc_frame *frame = NULL;
|
|
|
unsigned int i;
|
|
|
|
|
|
- if (ctrl->bFormatIndex <= 0 ||
|
|
|
- ctrl->bFormatIndex > stream->nformats)
|
|
|
- return;
|
|
|
+ for (i = 0; i < stream->nformats; ++i) {
|
|
|
+ if (stream->format[i].index == ctrl->bFormatIndex) {
|
|
|
+ format = &stream->format[i];
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
- format = &stream->format[ctrl->bFormatIndex - 1];
|
|
|
+ if (format == NULL)
|
|
|
+ return;
|
|
|
|
|
|
for (i = 0; i < format->nframes; ++i) {
|
|
|
if (format->frame[i].bFrameIndex == ctrl->bFrameIndex) {
|