Re: [PATCH v2 1/2] media: uvcvideo: Add a UVC_FIVAL_DENOM define

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 6 Jan 2025 at 15:09, Hans de Goede <hdegoede@xxxxxxxxxx> wrote:
>
> Add a define for the UVC frame interval denominator of 10000000
> instead of hardcoding 10000000 everywhere.
>
> Signed-off-by: Hans de Goede <hdegoede@xxxxxxxxxx>
Reviewed-by: Ricardo Ribalda <ribalda@xxxxxxxxxxxx>
> ---
>  drivers/media/usb/uvc/uvc_driver.c |  4 ++--
>  drivers/media/usb/uvc/uvc_v4l2.c   | 16 ++++++++--------
>  drivers/media/usb/uvc/uvc_video.c  |  4 ++--
>  drivers/media/usb/uvc/uvcvideo.h   |  2 ++
>  4 files changed, 14 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/media/usb/uvc/uvc_driver.c b/drivers/media/usb/uvc/uvc_driver.c
> index c3ccd9be0a47..f754640fddf5 100644
> --- a/drivers/media/usb/uvc/uvc_driver.c
> +++ b/drivers/media/usb/uvc/uvc_driver.c
> @@ -320,8 +320,8 @@ static int uvc_parse_frame(struct uvc_device *dev,
>
>         uvc_dbg(dev, DESCR, "- %ux%u (%u.%u fps)\n",
>                 frame->wWidth, frame->wHeight,
> -               10000000 / frame->dwDefaultFrameInterval,
> -               (100000000 / frame->dwDefaultFrameInterval) % 10);
> +               UVC_FIVAL_DENOM / frame->dwDefaultFrameInterval,
> +               ((UVC_FIVAL_DENOM * 10) / frame->dwDefaultFrameInterval) % 10);
I wish there was a nicer way for this expression than
((a*10)%b) % 10
I would have simply written.
"%u 1/10 fps.


>
>         *intervals += n;
>
> diff --git a/drivers/media/usb/uvc/uvc_v4l2.c b/drivers/media/usb/uvc/uvc_v4l2.c
> index 93c6cdb23881..301999e94759 100644
> --- a/drivers/media/usb/uvc/uvc_v4l2.c
> +++ b/drivers/media/usb/uvc/uvc_v4l2.c
> @@ -282,8 +282,8 @@ static int uvc_v4l2_try_format(struct uvc_streaming *stream,
>         interval = frame->dwDefaultFrameInterval;
>         uvc_dbg(stream->dev, FORMAT,
>                 "Using default frame interval %u.%u us (%u.%u fps)\n",
> -               interval / 10, interval % 10, 10000000 / interval,
> -               (100000000 / interval) % 10);
> +               interval / 10, interval % 10, UVC_FIVAL_DENOM / interval,
> +               ((UVC_FIVAL_DENOM * 10) / interval) % 10);
>
>         /* Set the format index, frame index and frame interval. */
>         memset(probe, 0, sizeof(*probe));
> @@ -450,7 +450,7 @@ static int uvc_ioctl_g_parm(struct file *file, void *fh,
>         numerator = stream->ctrl.dwFrameInterval;
>         mutex_unlock(&stream->mutex);
>
> -       denominator = 10000000;
> +       denominator = UVC_FIVAL_DENOM;
>         v4l2_simplify_fraction(&numerator, &denominator, 8, 333);
>
>         memset(parm, 0, sizeof(*parm));
> @@ -551,7 +551,7 @@ static int uvc_ioctl_s_parm(struct file *file, void *fh,
>
>         /* Return the actual frame period. */
>         timeperframe.numerator = probe.dwFrameInterval;
> -       timeperframe.denominator = 10000000;
> +       timeperframe.denominator = UVC_FIVAL_DENOM;
>         v4l2_simplify_fraction(&timeperframe.numerator,
>                 &timeperframe.denominator, 8, 333);
>
> @@ -1240,17 +1240,17 @@ static int uvc_ioctl_enum_frameintervals(struct file *file, void *fh,
>                 fival->type = V4L2_FRMIVAL_TYPE_DISCRETE;
>                 fival->discrete.numerator =
>                         frame->dwFrameInterval[index];
> -               fival->discrete.denominator = 10000000;
> +               fival->discrete.denominator = UVC_FIVAL_DENOM;
>                 v4l2_simplify_fraction(&fival->discrete.numerator,
>                         &fival->discrete.denominator, 8, 333);
>         } else {
>                 fival->type = V4L2_FRMIVAL_TYPE_STEPWISE;
>                 fival->stepwise.min.numerator = frame->dwFrameInterval[0];
> -               fival->stepwise.min.denominator = 10000000;
> +               fival->stepwise.min.denominator = UVC_FIVAL_DENOM;
>                 fival->stepwise.max.numerator = frame->dwFrameInterval[1];
> -               fival->stepwise.max.denominator = 10000000;
> +               fival->stepwise.max.denominator = UVC_FIVAL_DENOM;
>                 fival->stepwise.step.numerator = frame->dwFrameInterval[2];
> -               fival->stepwise.step.denominator = 10000000;
> +               fival->stepwise.step.denominator = UVC_FIVAL_DENOM;
>                 v4l2_simplify_fraction(&fival->stepwise.min.numerator,
>                         &fival->stepwise.min.denominator, 8, 333);
>                 v4l2_simplify_fraction(&fival->stepwise.max.numerator,
> diff --git a/drivers/media/usb/uvc/uvc_video.c b/drivers/media/usb/uvc/uvc_video.c
> index 7efed64b81a2..41cb1b45fa23 100644
> --- a/drivers/media/usb/uvc/uvc_video.c
> +++ b/drivers/media/usb/uvc/uvc_video.c
> @@ -231,7 +231,7 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
>                 u32 interval;
>                 u32 bandwidth;
>
> -               interval = (ctrl->dwFrameInterval > 100000)
> +               interval = (ctrl->dwFrameInterval > (UVC_FIVAL_DENOM / 100))
>                          ? ctrl->dwFrameInterval
>                          : frame->dwFrameInterval[0];
>
> @@ -243,7 +243,7 @@ static void uvc_fixup_video_ctrl(struct uvc_streaming *stream,
>                  * header size (assumed to be 12 bytes long).
>                  */
>                 bandwidth = frame->wWidth * frame->wHeight / 8 * format->bpp;
> -               bandwidth *= 10000000 / interval + 1;
> +               bandwidth *= UVC_FIVAL_DENOM / interval + 1;
>                 bandwidth /= 1000;
>                 if (stream->dev->udev->speed >= USB_SPEED_HIGH)
>                         bandwidth /= 8;
> diff --git a/drivers/media/usb/uvc/uvcvideo.h b/drivers/media/usb/uvc/uvcvideo.h
> index 3d196a696f46..966ff82c2ba8 100644
> --- a/drivers/media/usb/uvc/uvcvideo.h
> +++ b/drivers/media/usb/uvc/uvcvideo.h
> @@ -41,6 +41,8 @@
>  #define UVC_EXT_GPIO_UNIT              0x7ffe
>  #define UVC_EXT_GPIO_UNIT_ID           0x100
>
> +#define UVC_FIVAL_DENOM                        10000000
> +
>  /* ------------------------------------------------------------------------
>   * Driver specific constants.
>   */
> --
> 2.47.1
>
>


-- 
Ricardo Ribalda




[Index of Archives]     [Linux Input]     [Video for Linux]     [Gstreamer Embedded]     [Mplayer Users]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux