diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/uvc.c | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -39,7 +39,6 @@ struct uvc_device unsigned int fcc; unsigned int width; unsigned int height; - unsigned int maxsize; }; struct uvc_device *uvc_open(const char *devname, struct uvc_stream *stream) @@ -112,12 +111,15 @@ uvc_fill_streaming_control(struct uvc_device *dev, ctrl->bFrameIndex = iframe ; ctrl->dwFrameInterval = ival; + /* + * The maximum size in bytes for a single frame depends on the format. + * This switch will need extending for any new formats that are added + * to ensure the buffer size calculations are done correctly. + */ switch (format->fcc) { case V4L2_PIX_FMT_YUYV: - ctrl->dwMaxVideoFrameSize = frame->width * frame->height * 2; - break; case V4L2_PIX_FMT_MJPEG: - ctrl->dwMaxVideoFrameSize = dev->maxsize; + ctrl->dwMaxVideoFrameSize = frame->width * frame->height * 2; break; } @@ -287,7 +289,7 @@ uvc_events_process_data(struct uvc_device *dev, pixfmt.pixelformat = format->fcc; pixfmt.field = V4L2_FIELD_NONE; if (format->fcc == V4L2_PIX_FMT_MJPEG) - pixfmt.sizeimage = dev->maxsize * 1.5; + pixfmt.sizeimage = target->dwMaxVideoFrameSize; uvc_stream_set_format(dev->stream, &pixfmt); @@ -373,8 +375,6 @@ void uvc_events_init(struct uvc_device *dev, struct events *events) void uvc_set_config(struct uvc_device *dev, struct uvc_function_config *fc) { - /* FIXME: The maximum size should be specified per format and frame. */ - dev->maxsize = 0; dev->fc = fc; } |