[{"id":1891,"web_url":"https://patchwork.libcamera.org/comment/1891/","msgid":"<20190613154140.gw5mymcqgbbsvaa4@uno.localdomain>","date":"2019-06-13T15:41:40","subject":"Re: [libcamera-devel] [PATCH v2 07/16] libcamera: v4l2_subdevice:\n\tRework enumPadSizes()","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Niklas!\n   nice!\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n   j\nOn Wed, Jun 12, 2019 at 02:43:50AM +0200, Niklas Söderlund wrote:\n> Align the enumPadSizes() interface and implementation with that of\n> enumPadCodes(). There is no functional change.\n>\n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> ---\n>  src/libcamera/include/v4l2_subdevice.h |  4 +--\n>  src/libcamera/v4l2_subdevice.cpp       | 37 ++++++++++++++------------\n>  2 files changed, 22 insertions(+), 19 deletions(-)\n>\n> diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h\n> index e714e2575022c04d..c6fdf417b43c0423 100644\n> --- a/src/libcamera/include/v4l2_subdevice.h\n> +++ b/src/libcamera/include/v4l2_subdevice.h\n> @@ -58,8 +58,8 @@ protected:\n>\n>  private:\n>  \tstd::vector<unsigned int> enumPadCodes(unsigned int pad);\n> -\tint enumPadSizes(unsigned int pad, unsigned int code,\n> -\t\t\t std::vector<SizeRange> *size);\n> +\tstd::vector<SizeRange> enumPadSizes(unsigned int pad,\n> +\t\t\t\t\t    unsigned int code);\n>\n>  \tint setSelection(unsigned int pad, unsigned int target,\n>  \t\t\t Rectangle *rect);\n> diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp\n> index 99e202fa264af5a6..35052b4aa45d3e42 100644\n> --- a/src/libcamera/v4l2_subdevice.cpp\n> +++ b/src/libcamera/v4l2_subdevice.cpp\n> @@ -209,10 +209,15 @@ FormatEnum V4L2Subdevice::formats(unsigned int pad)\n>  \t\treturn {};\n>  \t}\n>\n> -\tfor (unsigned int code : enumPadCodes(pad))\n> -\t\tif (enumPadSizes(pad, code, &formatMap[code]))\n> +\tfor (unsigned int code : enumPadCodes(pad)) {\n> +\t\tstd::vector<SizeRange> sizes = enumPadSizes(pad, code);\n> +\n> +\t\tif (sizes.empty())\n>  \t\t\treturn {};\n>\n> +\t\tformatMap[code] = sizes;\n> +\t}\n> +\n>  \treturn formatMap;\n>  }\n>\n> @@ -335,25 +340,25 @@ std::vector<unsigned int> V4L2Subdevice::enumPadCodes(unsigned int pad)\n>  \treturn codes;\n>  }\n>\n> -int V4L2Subdevice::enumPadSizes(unsigned int pad,unsigned int code,\n> -\t\t\t\tstd::vector<SizeRange> *sizes)\n> +std::vector<SizeRange> V4L2Subdevice::enumPadSizes(unsigned int pad,\n> +\t\t\t\t\t\t   unsigned int code)\n>  {\n> -\tstruct v4l2_subdev_frame_size_enum sizeEnum = {};\n> +\tstd::vector<SizeRange> sizes;\n>  \tint ret;\n>\n> -\tsizeEnum.index = 0;\n> -\tsizeEnum.pad = pad;\n> -\tsizeEnum.code = code;\n> -\tsizeEnum.which = V4L2_SUBDEV_FORMAT_ACTIVE;\n> -\twhile (true) {\n> +\tfor (unsigned int index = 0;; index++) {\n> +\t\tstruct v4l2_subdev_frame_size_enum sizeEnum = {};\n> +\t\tsizeEnum.index = index;\n> +\t\tsizeEnum.pad = pad;\n> +\t\tsizeEnum.code = code;\n> +\t\tsizeEnum.which = V4L2_SUBDEV_FORMAT_ACTIVE;\n> +\n>  \t\tret = ioctl(fd_, VIDIOC_SUBDEV_ENUM_FRAME_SIZE, &sizeEnum);\n>  \t\tif (ret)\n>  \t\t\tbreak;\n>\n> -\t\tsizes->emplace_back(sizeEnum.min_width, sizeEnum.min_height,\n> +\t\tsizes.emplace_back(sizeEnum.min_width, sizeEnum.min_height,\n>  \t\t\t\t    sizeEnum.max_width, sizeEnum.max_height);\n> -\n> -\t\tsizeEnum.index++;\n>  \t}\n>\n>  \tif (ret && (errno != EINVAL && errno != ENOTTY)) {\n> @@ -361,12 +366,10 @@ int V4L2Subdevice::enumPadSizes(unsigned int pad,unsigned int code,\n>  \t\tLOG(V4L2Subdev, Error)\n>  \t\t\t<< \"Unable to enumerate sizes on pad \" << pad\n>  \t\t\t<< \": \" << strerror(-ret);\n> -\t\tsizes->clear();\n> -\n> -\t\treturn ret;\n> +\t\treturn {};\n>  \t}\n>\n> -\treturn 0;\n> +\treturn sizes;\n>  }\n>\n>  int V4L2Subdevice::setSelection(unsigned int pad, unsigned int target,\n> --\n> 2.21.0\n>\n> _______________________________________________\n> libcamera-devel mailing list\n> libcamera-devel@lists.libcamera.org\n> https://lists.libcamera.org/listinfo/libcamera-devel","headers":{"Return-Path":"<jacopo@jmondi.org>","Received":["from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net\n\t[217.70.183.198])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id C837563837\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu, 13 Jun 2019 17:40:28 +0200 (CEST)","from uno.localdomain (2-224-242-101.ip172.fastwebnet.it\n\t[2.224.242.101]) (Authenticated sender: jacopo@jmondi.org)\n\tby relay6-d.mail.gandi.net (Postfix) with ESMTPSA id 50B58C0008;\n\tThu, 13 Jun 2019 15:40:27 +0000 (UTC)"],"X-Originating-IP":"2.224.242.101","Date":"Thu, 13 Jun 2019 17:41:40 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190613154140.gw5mymcqgbbsvaa4@uno.localdomain>","References":"<20190612004359.15772-1-niklas.soderlund@ragnatech.se>\n\t<20190612004359.15772-8-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"multipart/signed; micalg=pgp-sha256;\n\tprotocol=\"application/pgp-signature\"; boundary=\"p4y6vxrrndni3d6d\"","Content-Disposition":"inline","In-Reply-To":"<20190612004359.15772-8-niklas.soderlund@ragnatech.se>","User-Agent":"NeoMutt/20180716","Subject":"Re: [libcamera-devel] [PATCH v2 07/16] libcamera: v4l2_subdevice:\n\tRework enumPadSizes()","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.23","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, 13 Jun 2019 15:40:29 -0000"}}]