return -EINVAL;
fmt->dataformat = stream->meta.format;
- fmt->buffersize = UVC_METADATA_BUF_SIZE;
+ fmt->buffersize = stream->meta.buffersize;
return 0;
}
struct uvc_device *dev = stream->dev;
struct v4l2_meta_format *fmt = &format->fmt.meta;
u32 fmeta = V4L2_META_FMT_UVC;
+ u32 buffersize;
if (format->type != vfh->vdev->queue->type)
return -EINVAL;
}
}
+ buffersize = max(UVC_METADATA_BUF_MIN_SIZE, fmt->buffersize);
+
memset(fmt, 0, sizeof(*fmt));
fmt->dataformat = fmeta;
- fmt->buffersize = UVC_METADATA_BUF_SIZE;
+ fmt->buffersize = buffersize;
return 0;
}
return -EBUSY;
stream->meta.format = fmt->dataformat;
+ stream->meta.buffersize = fmt->buffersize;
return 0;
}
struct uvc_video_queue *queue = &stream->meta.queue;
stream->meta.format = V4L2_META_FMT_UVC;
+ stream->meta.buffersize = UVC_METADATA_BUF_MIN_SIZE;
return uvc_register_video_device(dev, stream, queue,
V4L2_BUF_TYPE_META_CAPTURE,
unsigned int max_sof; /* Maximum STC.SOF value */
};
-#define UVC_METADATA_BUF_SIZE 10240
+#define UVC_METADATA_BUF_MIN_SIZE 10240
/**
* struct uvc_copy_op: Context structure to schedule asynchronous memcpy
struct {
struct uvc_video_queue queue;
u32 format;
+ u32 buffersize;
} meta;
/* Context data used by the bulk completion handler. */