[{"id":1187,"web_url":"https://patchwork.libcamera.org/comment/1187/","msgid":"<20190402105149.GK23466@bigcity.dyn.berto.se>","date":"2019-04-02T10:51:49","subject":"Re: [libcamera-devel] [PATCH v5 02/19] libcamera: formats: Define\n\tFormatEnum type","submitter":{"id":5,"url":"https://patchwork.libcamera.org/api/people/5/","name":"Niklas Söderlund","email":"niklas.soderlund@ragnatech.se"},"content":"Hi Jacopo,\n\nThanks for your work.\n\nOn 2019-03-26 09:38:45 +0100, Jacopo Mondi wrote:\n> Add an internal format.h and format.cpp files to collect libcamera image\n> format related types, helpers and structures. Define and document the\n> FormatEnum type, used to enumerate pixel image formats and associated\n> image resolutions.\n> \n> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  src/libcamera/formats.cpp              | 27 ++++++++++++++++++++++++++\n>  src/libcamera/include/formats.h        | 22 +++++++++++++++++++++\n>  src/libcamera/include/v4l2_subdevice.h |  4 ++--\n>  src/libcamera/meson.build              |  1 +\n>  src/libcamera/v4l2_subdevice.cpp       |  5 ++---\n>  5 files changed, 54 insertions(+), 5 deletions(-)\n>  create mode 100644 src/libcamera/formats.cpp\n>  create mode 100644 src/libcamera/include/formats.h\n> \n> diff --git a/src/libcamera/formats.cpp b/src/libcamera/formats.cpp\n> new file mode 100644\n> index 000000000000..56f4ddb51ffa\n> --- /dev/null\n> +++ b/src/libcamera/formats.cpp\n> @@ -0,0 +1,27 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2019, Google Inc.\n> + *\n> + * formats.cpp - Libcamera image formats\n> + */\n> +\n> +#include \"formats.h\"\n> +\n> +/**\n> + * \\file formats.h\n> + * \\brief Types and helper methods to handle libcamera image formats\n> + */\n> +\n> +namespace libcamera {\n> +\n> +/**\n> + * \\typedef FormatEnum\n> + * \\brief Type definition for the map of image formats and sizes\n> + *\n> + * Type definition used to enumerate the supported pixel formats and image\n> + * frame sizes. The type associates in a map a pixel format (for memory\n> + * formats) or a media bus code (for bus formats), to a vector of image\n> + * resolutions represented by SizeRange items.\n> + */\n> +\n> +} /* namespace libcamera */\n> diff --git a/src/libcamera/include/formats.h b/src/libcamera/include/formats.h\n> new file mode 100644\n> index 000000000000..5fcfb11318e7\n> --- /dev/null\n> +++ b/src/libcamera/include/formats.h\n> @@ -0,0 +1,22 @@\n> +/* SPDX-License-Identifier: LGPL-2.1-or-later */\n> +/*\n> + * Copyright (C) 2019, Google Inc.\n> + *\n> + * formats.h - Libcamera image formats\n> + */\n> +\n> +#ifndef __LIBCAMERA_FORMATS_H__\n> +#define __LIBCAMERA_FORMATS_H__\n> +\n> +#include <map>\n> +#include <vector>\n> +\n> +#include \"geometry.h\"\n> +\n> +namespace libcamera {\n> +\n> +typedef std::map<unsigned int, std::vector<SizeRange>> FormatEnum;\n> +\n> +} /* namespace libcamera */\n> +\n> +#endif /* __LIBCAMERA_FORMATS_H__ */\n> diff --git a/src/libcamera/include/v4l2_subdevice.h b/src/libcamera/include/v4l2_subdevice.h\n> index 700e66bcddac..3ecf08514898 100644\n> --- a/src/libcamera/include/v4l2_subdevice.h\n> +++ b/src/libcamera/include/v4l2_subdevice.h\n> @@ -11,6 +11,7 @@\n>  #include <string>\n>  #include <vector>\n>  \n> +#include \"formats.h\"\n>  #include \"geometry.h\"\n>  #include \"log.h\"\n>  #include \"media_object.h\"\n> @@ -42,8 +43,7 @@ public:\n>  \tint setCrop(unsigned int pad, Rectangle *rect);\n>  \tint setCompose(unsigned int pad, Rectangle *rect);\n>  \n> -\tconst std::map<unsigned int, std::vector<SizeRange>>\n> -\t\t\t\t\t\tformats(unsigned int pad);\n> +\tFormatEnum formats(unsigned int pad);\n>  \n>  \tint getFormat(unsigned int pad, V4L2SubdeviceFormat *format);\n>  \tint setFormat(unsigned int pad, V4L2SubdeviceFormat *format);\n> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build\n> index 8384cd0af451..4433abfceca3 100644\n> --- a/src/libcamera/meson.build\n> +++ b/src/libcamera/meson.build\n> @@ -6,6 +6,7 @@ libcamera_sources = files([\n>      'event_dispatcher.cpp',\n>      'event_dispatcher_poll.cpp',\n>      'event_notifier.cpp',\n> +    'formats.cpp',\n>      'geometry.cpp',\n>      'log.cpp',\n>      'media_device.cpp',\n> diff --git a/src/libcamera/v4l2_subdevice.cpp b/src/libcamera/v4l2_subdevice.cpp\n> index cf873487b22c..8260e6ebce0e 100644\n> --- a/src/libcamera/v4l2_subdevice.cpp\n> +++ b/src/libcamera/v4l2_subdevice.cpp\n> @@ -210,10 +210,9 @@ int V4L2Subdevice::setCompose(unsigned int pad, Rectangle *rect)\n>   * \\return A map of image formats associated with a list of image sizes, or\n>   * an empty map on error or if the pad does not exist\n>   */\n> -const std::map<unsigned int, std::vector<SizeRange>>\n> -V4L2Subdevice::formats(unsigned int pad)\n> +FormatEnum V4L2Subdevice::formats(unsigned int pad)\n>  {\n> -\tstd::map<unsigned int, std::vector<SizeRange>> formatMap = {};\n> +\tFormatEnum formatMap = {};\n>  \tstruct v4l2_subdev_mbus_code_enum mbusEnum = {};\n>  \tint ret;\n>  \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":"<niklas.soderlund@ragnatech.se>","Received":["from mail-lj1-x241.google.com (mail-lj1-x241.google.com\n\t[IPv6:2a00:1450:4864:20::241])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id B1E02600FB\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue,  2 Apr 2019 12:51:50 +0200 (CEST)","by mail-lj1-x241.google.com with SMTP id f23so11141011ljc.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 02 Apr 2019 03:51:50 -0700 (PDT)","from localhost (89-233-230-99.cust.bredband2.com. [89.233.230.99])\n\tby smtp.gmail.com with ESMTPSA id\n\tb19sm2378682lfi.96.2019.04.02.03.51.49\n\t(version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256);\n\tTue, 02 Apr 2019 03:51:49 -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=FK9GIyyJGnXwTPv448I8/8pHooa/mNFUwHiNMCudT6Q=;\n\tb=ijdgQk/1EL3Yjr1bDbHLu74V/cZN1M9R5v8cImRBOOJrtX/D8nP6cGxfI2qKXeP6jM\n\tVLRauSf+b3XbUMlsSiKJUmYO8n189RN9nR9j/rJPuxc7UYCEoGNVdoN4cSkbuR30YHg7\n\tCb7vMQsZRGdhYGzLSXaCjsFGAp8P7/HCyyUulY5u/gRTiaBERu23DZN2I6nwckVUzL/N\n\tZkMYrCCuxnpNHfo8pkZVJTSLJjzcTzTuJx79Vlmb7hS5NkDKKauhrV7LwpuUXkmMv5ma\n\t8BYfTMXmJfB6gK1uPHFmYHQQqHy7EFkfbXPeevrRIG1Ehz398tysuPdIvjdl6xiScG9a\n\teJrA==","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=FK9GIyyJGnXwTPv448I8/8pHooa/mNFUwHiNMCudT6Q=;\n\tb=MwGgz+DFILTZC2qHrT1PyEHbr7/sYt4p1gJJlCEc9K+nsGxp5P+0IUwztmBqhtTPNj\n\tVnUaK906CiXA03/ART92tiW2W9am6CLYF2Vq5erB1vjSTnwQ5N31YqRWt4iKI5cBoL4h\n\tJlUz2tN5xTguZUKbZlMEj8rF9tGPYsBrnTDHH5ci6NqF8WER3Bru1kFwF7kUcCOJsW79\n\tJBwb3ibOdpwWYTfp8SwxZqAyFn787Naa+kY58AzyVXL/KCZM39XXAFrj/m3QVaQt2Wb1\n\tPLgTcTmLsGOvr1K3IFIkB9WCgbtyIP4hNIoWVMLmYarMgQZq0Vwj/Gvd6yNv39h6tTnj\n\tcF/A==","X-Gm-Message-State":"APjAAAUoP3RPJHdkJxwwNBQKvVjUyOjL7GKKDLHhL2Lz5iK/l0lHJPW1\n\teBKQargbnPckQBZ0CyV+cZmAOg==","X-Google-Smtp-Source":"APXvYqwdHn2sQ+ndxiJqJUr1JDvaVaVqk0eH8oBOVmniC+OTxU56IX31ioVbLf4hgZFaZd2UjNmsqA==","X-Received":"by 2002:a2e:b016:: with SMTP id\n\ty22mr37977229ljk.133.1554202310071; \n\tTue, 02 Apr 2019 03:51:50 -0700 (PDT)","Date":"Tue, 2 Apr 2019 12:51:49 +0200","From":"Niklas =?iso-8859-1?q?S=F6derlund?= <niklas.soderlund@ragnatech.se>","To":"Jacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20190402105149.GK23466@bigcity.dyn.berto.se>","References":"<20190326083902.26121-1-jacopo@jmondi.org>\n\t<20190326083902.26121-3-jacopo@jmondi.org>","MIME-Version":"1.0","Content-Type":"text/plain; charset=iso-8859-1","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20190326083902.26121-3-jacopo@jmondi.org>","User-Agent":"Mutt/1.11.3 (2019-02-01)","Subject":"Re: [libcamera-devel] [PATCH v5 02/19] libcamera: formats: Define\n\tFormatEnum type","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":"Tue, 02 Apr 2019 10:51:51 -0000"}}]