Re: [PATCH v5] videodev2: Set vb2_rect's width and height as unsigned

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

 



Hi Ricardo,

Thank you for the patch.

On Wednesday 06 November 2013 19:42:16 Ricardo Ribalda Delgado wrote:
> As discussed on the media summit 2013, there is no reason for the width
> and height to be signed.
> 
> Therefore this patch is an attempt to convert those fields from __s32 to
> __u32.
> 
> Acked-by: Sakari Ailus <sakari.ailus@xxxxxx> (documentation and smiapp)
> Signed-off-by: Ricardo Ribalda Delgado <ricardo.ribalda@xxxxxxxxx>
> ---
> v5: Comments by Sakari Ailus
> -Fix typos in summary
> 
> v4: Wrong patch format
> 
> v3: Comments by Sakari Ailus
> -Update also doc
> 
> v2: Comments by Sakari Ailus and Laurent Pinchart
> 
> -Fix alignment on all drivers
> -Replace min with min_t where possible and remove unneeded checks
> 
>  Documentation/DocBook/media/v4l/compat.xml         | 12 ++++++++
>  Documentation/DocBook/media/v4l/dev-overlay.xml    |  8 ++---
>  Documentation/DocBook/media/v4l/vidioc-cropcap.xml |  8 ++---
>  drivers/media/i2c/mt9m032.c                        | 16 +++++-----
>  drivers/media/i2c/mt9p031.c                        | 28 ++++++++++--------
>  drivers/media/i2c/mt9t001.c                        | 26 ++++++++++-------
>  drivers/media/i2c/mt9v032.c                        | 34  ++++++++++--------
>  drivers/media/i2c/smiapp/smiapp-core.c             |  8 ++---
>  drivers/media/i2c/soc_camera/mt9m111.c             |  4 +--
>  drivers/media/i2c/tvp5150.c                        | 14 ++++-----
>  drivers/media/pci/bt8xx/bttv-driver.c              |  6 ++--
>  drivers/media/pci/saa7134/saa7134-video.c          |  4 ---
>  drivers/media/platform/soc_camera/soc_scale_crop.c |  4 +--
>  include/uapi/linux/videodev2.h                     |  4 +--
>  14 files changed, 97 insertions(+), 79 deletions(-)
> 
> diff --git a/Documentation/DocBook/media/v4l/compat.xml
> b/Documentation/DocBook/media/v4l/compat.xml index 0c7195e..5dbe68b 100644
> --- a/Documentation/DocBook/media/v4l/compat.xml
> +++ b/Documentation/DocBook/media/v4l/compat.xml
> @@ -2523,6 +2523,18 @@ that used it. It was originally scheduled for removal
> in 2.6.35. </orderedlist>
>      </section>
> 
> +    <section>
> +      <title>V4L2 in Linux 3.12</title>
> +      <orderedlist>
> +        <listitem>
> +		<para> In struct <structname>v4l2_rect</structname>, the type
> +of <structfield>width</structfield> and <structfield>height</structfield>
> +fields changed from _s32 to _u32.
> +	  </para>
> +        </listitem>
> +      </orderedlist>
> +    </section>
> +
>      <section id="other">
>        <title>Relation of V4L2 to other Linux multimedia APIs</title>
> 
> diff --git a/Documentation/DocBook/media/v4l/dev-overlay.xml
> b/Documentation/DocBook/media/v4l/dev-overlay.xml index 40d1d76..a44ac66
> 100644
> --- a/Documentation/DocBook/media/v4l/dev-overlay.xml
> +++ b/Documentation/DocBook/media/v4l/dev-overlay.xml
> @@ -346,16 +346,14 @@ rectangle, in pixels.</entry>
>  rectangle, in pixels. Offsets increase to the right and down.</entry>
>  	  </row>
>  	  <row>
> -	    <entry>__s32</entry>
> +	    <entry>__u32</entry>
>  	    <entry><structfield>width</structfield></entry>
>  	    <entry>Width of the rectangle, in pixels.</entry>
>  	  </row>
>  	  <row>
> -	    <entry>__s32</entry>
> +	    <entry>__u32</entry>
>  	    <entry><structfield>height</structfield></entry>
> -	    <entry>Height of the rectangle, in pixels. Width and
> -height cannot be negative, the fields are signed for hysterical
> -reasons. <!-- video4linux-list@xxxxxxxxxx on 22 Oct 2002 subject

I like the concept of hysterical reasons :-)

> +	    <entry>Height of the rectangle, in pixels.<!--
> video4linux-list@xxxxxxxxxx on 22 Oct 2002 subject "Re:[V4L][patches!]
> Re:v4l2/kernel-2.5" --></entry>
>  	  </row>
>  	</tbody>
> diff --git a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
> b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml index bf7cc97..26b8f8f
> 100644
> --- a/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
> +++ b/Documentation/DocBook/media/v4l/vidioc-cropcap.xml
> @@ -133,16 +133,14 @@ rectangle, in pixels.</entry>
>  rectangle, in pixels.</entry>
>  	  </row>
>  	  <row>
> -	    <entry>__s32</entry>
> +	    <entry>__u32</entry>
>  	    <entry><structfield>width</structfield></entry>
>  	    <entry>Width of the rectangle, in pixels.</entry>
>  	  </row>
>  	  <row>
> -	    <entry>__s32</entry>
> +	    <entry>__u32</entry>
>  	    <entry><structfield>height</structfield></entry>
> -	    <entry>Height of the rectangle, in pixels. Width
> -and height cannot be negative, the fields are signed for
> -hysterical reasons. <!-- video4linux-list@xxxxxxxxxx
> +	    <entry>Height of the rectangle, in pixels.<!--
> video4linux-list@xxxxxxxxxx on 22 Oct 2002 subject "Re:[V4L][patches!]
> Re:v4l2/kernel-2.5" --> </entry>
>  	  </row>
> diff --git a/drivers/media/i2c/mt9m032.c b/drivers/media/i2c/mt9m032.c
> index 846b15f..85ec3ba 100644
> --- a/drivers/media/i2c/mt9m032.c
> +++ b/drivers/media/i2c/mt9m032.c
> @@ -459,13 +459,15 @@ static int mt9m032_set_pad_crop(struct v4l2_subdev
> *subdev, MT9M032_COLUMN_START_MAX);
>  	rect.top = clamp(ALIGN(crop->rect.top, 2), MT9M032_ROW_START_MIN,
>  			 MT9M032_ROW_START_MAX);
> -	rect.width = clamp(ALIGN(crop->rect.width, 2), MT9M032_COLUMN_SIZE_MIN,
> -			   MT9M032_COLUMN_SIZE_MAX);
> -	rect.height = clamp(ALIGN(crop->rect.height, 2), MT9M032_ROW_SIZE_MIN,
> -			    MT9M032_ROW_SIZE_MAX);
> -
> -	rect.width = min(rect.width, MT9M032_PIXEL_ARRAY_WIDTH - rect.left);
> -	rect.height = min(rect.height, MT9M032_PIXEL_ARRAY_HEIGHT - rect.top);
> +	rect.width = clamp_t(unsigned int, ALIGN(crop->rect.width, 2),
> +			     MT9M032_COLUMN_SIZE_MIN, MT9M032_COLUMN_SIZE_MAX);
> +	rect.height = clamp_t(unsigned int, ALIGN(crop->rect.height, 2),
> +			      MT9M032_ROW_SIZE_MIN, MT9M032_ROW_SIZE_MAX);

Would it make sense to define the size-related macros as unsigned integers 
instead of using clamp_t ? For instance MT9M032_PIXEL_ARRAY_WIDTH could be 
defined as 1600U instead of 1600. Same for the other Aptina sensor drivers. 
This might introduce other issues, so I don't know whether that would be a 
good solution.

> +	rect.width = min_t(unsigned int, rect.width,
> +			   MT9M032_PIXEL_ARRAY_WIDTH - rect.left);
> +	rect.height = min_t(unsigned int, rect.height,
> +			    MT9M032_PIXEL_ARRAY_HEIGHT - rect.top);
> 
>  	__crop = __mt9m032_get_pad_crop(sensor, fh, crop->which);
> 

-- 
Regards,

Laurent Pinchart

--
To unsubscribe from this list: send the line "unsubscribe linux-media" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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