[{"id":2758,"web_url":"https://patchwork.libcamera.org/comment/2758/","msgid":"<20191003194011.GM1322@bigcity.dyn.berto.se>","date":"2019-10-03T19:40:11","subject":"Re: [libcamera-devel] [PATCH v2 10/13] libcamera: v4l2_controls:\n\tUse the ControlRange class for control info","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Laurent,\n\nThanks for your work.\n\nOn 2019-09-29 22:02:51 +0300, Laurent Pinchart wrote:\n> Use the ControlRange class to express the range of a V4L2 control,\n> replacing the open-coded minimum and maximum fields in the\n> V4L2ControlInfo class.\n> \n> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/include/v4l2_controls.h |  6 ++----\n>  src/libcamera/pipeline/uvcvideo.cpp   |  2 +-\n>  src/libcamera/pipeline/vimc.cpp       |  2 +-\n>  src/libcamera/v4l2_controls.cpp       | 21 ++++++++++-----------\n>  4 files changed, 14 insertions(+), 17 deletions(-)\n> \n> diff --git a/src/libcamera/include/v4l2_controls.h b/src/libcamera/include/v4l2_controls.h\n> index f2b67c5d44e1..b39370b2e90e 100644\n> --- a/src/libcamera/include/v4l2_controls.h\n> +++ b/src/libcamera/include/v4l2_controls.h\n> @@ -30,8 +30,7 @@ public:\n>  \tsize_t size() const { return size_; }\n>  \tconst std::string &name() const { return name_; }\n>  \n> -\tint64_t min() const { return min_; }\n> -\tint64_t max() const { return max_; }\n> +\tconst ControlRange &range() const { return range_; }\n>  \n>  private:\n>  \tunsigned int id_;\n> @@ -39,8 +38,7 @@ private:\n>  \tsize_t size_;\n>  \tstd::string name_;\n>  \n> -\tint64_t min_;\n> -\tint64_t max_;\n> +\tControlRange range_;\n>  };\n>  \n>  using V4L2ControlInfoMap = std::map<unsigned int, V4L2ControlInfo>;\n> diff --git a/src/libcamera/pipeline/uvcvideo.cpp b/src/libcamera/pipeline/uvcvideo.cpp\n> index 860578d41875..88f7fb9bc568 100644\n> --- a/src/libcamera/pipeline/uvcvideo.cpp\n> +++ b/src/libcamera/pipeline/uvcvideo.cpp\n> @@ -364,7 +364,7 @@ int UVCCameraData::init(MediaEntity *entity)\n>  \n>  \t\tcontrolInfo_.emplace(std::piecewise_construct,\n>  \t\t\t\t     std::forward_as_tuple(id),\n> -\t\t\t\t     std::forward_as_tuple(info.min(), info.max()));\n> +\t\t\t\t     std::forward_as_tuple(info.range()));\n>  \t}\n>  \n>  \treturn 0;\n> diff --git a/src/libcamera/pipeline/vimc.cpp b/src/libcamera/pipeline/vimc.cpp\n> index b2b36b238809..26477dccbb8f 100644\n> --- a/src/libcamera/pipeline/vimc.cpp\n> +++ b/src/libcamera/pipeline/vimc.cpp\n> @@ -437,7 +437,7 @@ int VimcCameraData::init(MediaDevice *media)\n>  \n>  \t\tcontrolInfo_.emplace(std::piecewise_construct,\n>  \t\t\t\t     std::forward_as_tuple(id),\n> -\t\t\t\t     std::forward_as_tuple(info.min(), info.max()));\n> +\t\t\t\t     std::forward_as_tuple(info.range()));\n>  \t}\n>  \n>  \treturn 0;\n> diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp\n> index 64f0555fff7c..6f5f1578b139 100644\n> --- a/src/libcamera/v4l2_controls.cpp\n> +++ b/src/libcamera/v4l2_controls.cpp\n> @@ -74,8 +74,13 @@ V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)\n>  \ttype_ = ctrl.type;\n>  \tname_ = static_cast<const char *>(ctrl.name);\n>  \tsize_ = ctrl.elem_size * ctrl.elems;\n> -\tmin_ = ctrl.minimum;\n> -\tmax_ = ctrl.maximum;\n> +\n> +\tif (ctrl.type == V4L2_CTRL_TYPE_INTEGER64)\n> +\t\trange_ = ControlRange(static_cast<int64_t>(ctrl.minimum),\n> +\t\t\t\t      static_cast<int64_t>(ctrl.maximum));\n> +\telse\n> +\t\trange_ = ControlRange(static_cast<int32_t>(ctrl.minimum),\n> +\t\t\t\t      static_cast<int32_t>(ctrl.maximum));\n>  }\n>  \n>  /**\n> @@ -103,15 +108,9 @@ V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)\n>   */\n>  \n>  /**\n> - * \\fn V4L2ControlInfo::min()\n> - * \\brief Retrieve the control minimum value\n> - * \\return The V4L2 control minimum value\n> - */\n> -\n> -/**\n> - * \\fn V4L2ControlInfo::max()\n> - * \\brief Retrieve the control maximum value\n> - * \\return The V4L2 control maximum value\n> + * \\fn V4L2ControlInfo::range()\n> + * \\brief Retrieve the control value range\n> + * \\return The V4L2 control value range\n>   */\n>  \n>  /**\n> -- \n> Regards,\n> \n> Laurent Pinchart\n> \n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x243.google.com (mail-lj1-x243.google.com\n\t[IPv6:2a00:1450:4864:20::243])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id F3FBA60BE8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  3 Oct 2019 21:40:12 +0200 (CEST)","by mail-lj1-x243.google.com with SMTP id b20so4077415ljj.5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 03 Oct 2019 12:40:12 -0700 (PDT)","from localhost (h-93-159.A463.priv.bahnhof.se. [46.59.93.159])\n\tby smtp.gmail.com with ESMTPSA id\n\td28sm635406lfq.88.2019.10.03.12.40.11\n\t(version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n\tThu, 03 Oct 2019 12:40:11 -0700 (PDT)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=ragnatech-se.20150623.gappssmtp.com; s=20150623;\n\th=date:from:to:cc:subject:message-id:references:mime-version\n\t:content-disposition:content-transfer-encoding:in-reply-to\n\t:user-agent; bh=xPPTa6gGgknCfLMJzPLC7mPBs8BMBGNd9PzlF9cxby0=;\n\tb=C45iyN5WYeM/WXJGdKe0CIsIc3d4aNCL4/1tqeIAo39v4lzT7daNeViurbnqAWLRyF\n\t/kxpmlUqTDNoG5EqLc/F35Gjz2wWwKD2BhtzoInJ0x/xMv8YYRUQZ3q+OyvWlPrqg0NZ\n\tIkfH6bJe1xrPjmDOcNMgjLmXddAAwDRgRMywcx0bcEzuPBqML8wofwrOOVzr50rV5DUk\n\t8zuD30Nq11kFtcHgJmBpLhLZvhFsusv/AUKnov/1CYrkcq4cb/X14qdqQi4wfTnVWh6F\n\tl7qlmnH4av4gywcJInXJFC+WdBftxxj+GFdS345zAJSxefUzoX4GUSfmtrnYxx+2AnHT\n\t5ROA==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:date:from:to:cc:subject:message-id:references\n\t:mime-version:content-disposition:content-transfer-encoding\n\t:in-reply-to:user-agent;\n\tbh=xPPTa6gGgknCfLMJzPLC7mPBs8BMBGNd9PzlF9cxby0=;\n\tb=YtFwGD+sz1k29MOKdeeIUXUUyowgEj8WcUBiSr3fJvIAG8dUifvyh2dO5DDGvj7IK/\n\tTs/75J+lG5WVqDZlAj9SgJtg0+OnNPGa214anpQv82KXHrfQLvrh5JQsrO7Awgih6wjZ\n\tyXurEsGdmhwAn5YqN/Pb9R9vRPEWdAzlMZKpxH1lOVQnuFYQsv7NS/E9hyXbkEVDteTV\n\to7VJ1Va2XAlgXrhXvwdnTHC1ROfVNvz2mlEKIhYQB4ux8IpWI/vl8mX/ByweAd9OlF9D\n\t8+Sqp0Rp4J5A0ghUVqtgAg9XYOYjFT62d5rxw8LNnb/qyAXDJqHRw6/k7GrS3KscFgz8\n\tIKKg==","X-Gm-Message-State":"APjAAAUEWOpVNmQETWFsfaDQyYo4MEkjC2kudm9gc7oQ6pxyB7MKHyr3\n\tfCxqDNa8BkvT6yv8mkLDtRyfM5W33Uk=","X-Google-Smtp-Source":"APXvYqy0/Dg52DDixxo4C32os3h3uWPaESZSKM19jFzleffvy0yFSnLbySOaQ9c6QPMgMhhsjJ/JbA==","X-Received":"by 2002:a05:651c:283:: with SMTP id\n\tb3mr7298897ljo.25.1570131612411; \n\tThu, 03 Oct 2019 12:40:12 -0700 (PDT)","Date":"Thu, 3 Oct 2019 21:40:11 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191003194011.GM1322@bigcity.dyn.berto.se>","References":"<20190929190254.18920-1-laurent.pinchart@ideasonboard.com>\n\t<20190929190254.18920-11-laurent.pinchart@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190929190254.18920-11-laurent.pinchart@ideasonboard.com>","User-Agent":"Mutt/1.12.1 (2019-06-15)","Subject":"Re: [libcamera-devel] [PATCH v2 10/13] libcamera: v4l2_controls:\n\tUse the ControlRange class for control info","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","X-List-Received-Date":"Thu, 03 Oct 2019 19:40:13 -0000"}}]