diff options
author | Daniel Scally <dan.scally@ideasonboard.com> | 2022-11-22 15:34:20 +0000 |
---|---|---|
committer | Kieran Bingham <kieran.bingham@ideasonboard.com> | 2022-11-22 16:08:24 +0000 |
commit | bca24b4b5b2c18b844e8da80ac19819944f80a93 (patch) | |
tree | fcbe9579ded3a124f4ee26a1ddc83e17fc3e9194 | |
parent | d47c0701f2250889970afa6b5af025ea0a02b3be (diff) |
lib: uvc: Drop maxsize
The maxsize field of struct uvc_device is probably unecessary even if
it weren't currently fixed at 0. It's used to set dwMaxVideoFrameSize
in addition to the sizeimage member of a struct v4l2_pix_fmt (multiplied
in the latter instance by 1.5x). The documentary definitions for those
two values are such that they should be identical though, so simply
set dwMaxVideoFrameSize to width*height*2 (to maintain commonality
with other UVC Video devices) and use that to set the sizeimage.
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Daniel Scally <dan.scally@ideasonboard.com>
Signed-off-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
-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; } |