[{"id":3245,"web_url":"https://patchwork.libcamera.org/comment/3245/","msgid":"<20191214222758.GD16015@pendragon.ideasonboard.com>","date":"2019-12-14T22:27:58","subject":"Re: [libcamera-devel] [PATCH 09/30] libcamera: buffers: Remove\n\tPlane class","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nThank you for the patch.\n\nOn Wed, Nov 27, 2019 at 12:35:59AM +0100, Niklas Söderlund wrote:\n> There are no users left of the Plane class, drop it.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> ---\n>  include/libcamera/buffer.h |  21 ------\n>  src/libcamera/buffer.cpp   | 149 -------------------------------------\n>  2 files changed, 170 deletions(-)\n> \n> diff --git a/include/libcamera/buffer.h b/include/libcamera/buffer.h\n> index 2dd5bcf3b49c4ee8..afcef805801a43b5 100644\n> --- a/include/libcamera/buffer.h\n> +++ b/include/libcamera/buffer.h\n> @@ -77,27 +77,6 @@ private:\n>  \tvoid *mem_;\n>  };\n>  \n> -class Plane final\n> -{\n> -public:\n> -\tPlane();\n> -\t~Plane();\n> -\n> -\tint dmabuf() const { return fd_; }\n> -\tint setDmabuf(int fd, unsigned int length);\n> -\n> -\tvoid *mem();\n> -\tunsigned int length() const { return length_; }\n> -\n> -private:\n> -\tint mmap();\n> -\tint munmap();\n> -\n> -\tint fd_;\n> -\tunsigned int length_;\n> -\tvoid *mem_;\n> -};\n> -\n>  class BufferMemory final\n>  {\n>  public:\n> diff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp\n> index 07647124a2cd9c62..82b4799a2510d02f 100644\n> --- a/src/libcamera/buffer.cpp\n> +++ b/src/libcamera/buffer.cpp\n> @@ -155,28 +155,6 @@ FileDescriptor::~FileDescriptor()\n>   * \\return A valid file descriptor or a negative error code\n>   */\n>  \n> -/**\n> - * \\class Plane\n> - * \\brief A memory region to store a single plane of a frame\n> - *\n> - * Planar pixel formats use multiple memory regions to store planes\n> - * corresponding to the different colour components of a frame. The Plane class\n> - * tracks the specific details of a memory region used to store a single plane\n> - * for a given frame and provides the means to access the memory, both for the\n> - * application and for DMA. A Buffer then contains one or multiple planes\n> - * depending on its pixel format.\n> - *\n> - * To support DMA access, planes are associated with dmabuf objects represented\n> - * by file handles. Each plane carries a dmabuf file handle and an offset within\n> - * the buffer. Those file handles may refer to the same dmabuf object, depending\n> - * on whether the devices accessing the memory regions composing the image\n> - * support non-contiguous DMA to planes ore require DMA-contiguous memory.\n> - *\n> - * To support CPU access, planes carry the CPU address of their backing memory.\n> - * Similarly to the dmabuf file handles, the CPU addresses for planes composing\n> - * an image may or may not be contiguous.\n> - */\n> -\n>  /**\n>   * \\class Dmabuf\n>   * \\brief A memory region to store a single plane of a frame\n> @@ -290,133 +268,6 @@ int Dmabuf::munmap()\n>  \treturn ret;\n>  }\n>  \n> -Plane::Plane()\n> -\t: fd_(-1), length_(0), mem_(0)\n> -{\n> -}\n> -\n> -Plane::~Plane()\n> -{\n> -\tmunmap();\n> -\n> -\tif (fd_ != -1)\n> -\t\tclose(fd_);\n> -}\n> -\n> -/**\n> - * \\fn Plane::dmabuf()\n> - * \\brief Get the dmabuf file handle backing the buffer\n> - */\n> -\n> -/**\n> - * \\brief Set the dmabuf file handle backing the buffer\n> - * \\param[in] fd The dmabuf file handle\n> - * \\param[in] length The size of the memory region\n> - *\n> - * The \\a fd dmabuf file handle is duplicated and stored. The caller may close\n> - * the original file handle.\n> - *\n> - * \\return 0 on success or a negative error code otherwise\n> - */\n> -int Plane::setDmabuf(int fd, unsigned int length)\n> -{\n> -\tif (fd < 0) {\n> -\t\tLOG(Buffer, Error) << \"Invalid dmabuf fd provided\";\n> -\t\treturn -EINVAL;\n> -\t}\n> -\n> -\tif (fd_ != -1) {\n> -\t\tclose(fd_);\n> -\t\tfd_ = -1;\n> -\t}\n> -\n> -\tfd_ = dup(fd);\n> -\tif (fd_ == -1) {\n> -\t\tint ret = -errno;\n> -\t\tLOG(Buffer, Error)\n> -\t\t\t<< \"Failed to duplicate dmabuf: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\tlength_ = length;\n> -\n> -\treturn 0;\n> -}\n> -\n> -/**\n> - * \\brief Map the plane memory data to a CPU accessible address\n> - *\n> - * The file descriptor to map the memory from must be set by a call to\n> - * setDmaBuf() before calling this function.\n> - *\n> - * \\sa setDmaBuf()\n> - *\n> - * \\return 0 on success or a negative error code otherwise\n> - */\n> -int Plane::mmap()\n> -{\n> -\tvoid *map;\n> -\n> -\tif (mem_)\n> -\t\treturn 0;\n> -\n> -\tmap = ::mmap(NULL, length_, PROT_READ | PROT_WRITE, MAP_SHARED, fd_, 0);\n> -\tif (map == MAP_FAILED) {\n> -\t\tint ret = -errno;\n> -\t\tLOG(Buffer, Error)\n> -\t\t\t<< \"Failed to mmap plane: \" << strerror(-ret);\n> -\t\treturn ret;\n> -\t}\n> -\n> -\tmem_ = map;\n> -\n> -\treturn 0;\n> -}\n> -\n> -/**\n> - * \\brief Unmap any existing CPU accessible mapping\n> - *\n> - * Unmap the memory mapped by an earlier call to mmap().\n> - *\n> - * \\return 0 on success or a negative error code otherwise\n> - */\n> -int Plane::munmap()\n> -{\n> -\tint ret = 0;\n> -\n> -\tif (mem_)\n> -\t\tret = ::munmap(mem_, length_);\n> -\n> -\tif (ret) {\n> -\t\tret = -errno;\n> -\t\tLOG(Buffer, Warning)\n> -\t\t\t<< \"Failed to unmap plane: \" << strerror(-ret);\n> -\t} else {\n> -\t\tmem_ = 0;\n> -\t}\n> -\n> -\treturn ret;\n> -}\n> -\n> -/**\n> - * \\fn Plane::mem()\n> - * \\brief Retrieve the CPU accessible memory address of the Plane\n> - * \\return The CPU accessible memory address on success or nullptr otherwise.\n> - */\n> -void *Plane::mem()\n> -{\n> -\tif (!mem_)\n> -\t\tmmap();\n> -\n> -\treturn mem_;\n> -}\n> -\n> -/**\n> - * \\fn Plane::length() const\n> - * \\brief Retrieve the length of the memory region\n> - * \\return The length of the memory region\n> - */\n> -\n>  /**\n>   * \\class BufferMemory\n>   * \\brief A memory buffer to store an image","headers":{"Return-Path":"<laurent.pinchart@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 98491601E5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 14 Dec 2019 23:28:08 +0100 (CET)","from pendragon.ideasonboard.com (81-175-216-236.bb.dnainternet.fi\n\t[81.175.216.236])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 0ECE02D1;\n\tSat, 14 Dec 2019 23:28:07 +0100 (CET)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1576362488;\n\tbh=FbCG41K0k2zOyBNXiZngfulJUYZFnuQse9lsYtn0cL8=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=KF6G1Z1rDFJdTR0UJJjK8bIueEZa2ZVKznNAXbjPXbd3Q9uv3REB9ohfsPqzRPHAd\n\tFuIMC4u7s3SaSxEvomggWWc1vFoTDp1o8TJZDE4jRJ2cAbbfflAV9YNfpFGcTewBYW\n\tv3PYSNZIYRACp2GFqCskcWSKw6BCtV/3aCv4kLKQ=","Date":"Sun, 15 Dec 2019 00:27:58 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Cc":"libcamera-devel@lists.libcamera.org","Message-ID":"<20191214222758.GD16015@pendragon.ideasonboard.com>","References":"<20191126233620.1695316-1-niklas.soderlund@ragnatech.se>\n\t<20191126233620.1695316-10-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","Content-Transfer-Encoding":"8bit","In-Reply-To":"<20191126233620.1695316-10-niklas.soderlund@ragnatech.se>","User-Agent":"Mutt/1.10.1 (2018-07-13)","Subject":"Re: [libcamera-devel] [PATCH 09/30] libcamera: buffers: Remove\n\tPlane class","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":"Sat, 14 Dec 2019 22:28:08 -0000"}}]