[{"id":2179,"web_url":"https://patchwork.libcamera.org/comment/2179/","msgid":"<20190706114055.GL17685@bigcity.dyn.berto.se>","date":"2019-07-06T11:40:55","subject":"Re: [libcamera-devel] [PATCH 2/9] libcamera: stream: Add Stream\n\tmemory 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 patch.\n\nOn 2019-07-05 00:53:27 +0200, Jacopo Mondi wrote:\n> Define the memory type a Stream uses and allow application to set it\n> through the associated StreamConfiguration.\n> \n> A Stream can use either internal or external memory allocation methods,\n> depending on where the data produced by the stream is actually saved.\n> \n> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n\nReviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n\n> ---\n>  include/libcamera/stream.h |  8 ++++++++\n>  src/libcamera/camera.cpp   |  1 +\n>  src/libcamera/stream.cpp   | 30 ++++++++++++++++++++++++++++--\n>  3 files changed, 37 insertions(+), 2 deletions(-)\n> \n> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n> index fa7d6ba4987c..796f1aff2602 100644\n> --- a/include/libcamera/stream.h\n> +++ b/include/libcamera/stream.h\n> @@ -34,6 +34,11 @@ private:\n>  \tstd::map<unsigned int, std::vector<SizeRange>> formats_;\n>  };\n>  \n> +enum MemoryType {\n> +\tInternalMemory,\n> +\tExternalMemory,\n> +};\n> +\n>  struct StreamConfiguration {\n>  \tStreamConfiguration();\n>  \tStreamConfiguration(const StreamFormats &formats);\n> @@ -41,6 +46,7 @@ struct StreamConfiguration {\n>  \tunsigned int pixelFormat;\n>  \tSize size;\n>  \n> +\tMemoryType memoryType;\n>  \tunsigned int bufferCount;\n>  \n>  \tStream *stream() const { return stream_; }\n> @@ -77,6 +83,7 @@ public:\n>  \tstd::vector<Buffer> &buffers() { return bufferPool_.buffers(); }\n>  \tunsigned int bufferCount() const { return bufferPool_.count(); }\n>  \tconst StreamConfiguration &configuration() const { return configuration_; }\n> +\tMemoryType memoryType() const { return memoryType_; }\n>  \n>  protected:\n>  \tfriend class Camera;\n> @@ -86,6 +93,7 @@ protected:\n>  \n>  \tBufferPool bufferPool_;\n>  \tStreamConfiguration configuration_;\n> +\tMemoryType memoryType_;\n>  };\n>  \n>  } /* namespace libcamera */\n> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n> index 088a39623e36..5f756d41744a 100644\n> --- a/src/libcamera/camera.cpp\n> +++ b/src/libcamera/camera.cpp\n> @@ -683,6 +683,7 @@ int Camera::configure(CameraConfiguration *config)\n>  \t\t * Allocate buffer objects in the pool.\n>  \t\t * Memory will be allocated and assigned later.\n>  \t\t */\n> +\t\tstream->memoryType_ = cfg.memoryType;\n>  \t\tstream->createBuffers(cfg.bufferCount);\n>  \t}\n>  \n> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n> index 35197be09c26..97e0f429c9fb 100644\n> --- a/src/libcamera/stream.cpp\n> +++ b/src/libcamera/stream.cpp\n> @@ -263,6 +263,16 @@ SizeRange StreamFormats::range(unsigned int pixelformat) const\n>  \treturn range;\n>  }\n>  \n> +/**\n> + * \\enum MemoryType\n> + * \\brief Define the memory type used by a Stream\n> + * \\var MemoryType::InternalMemory\n> + * The Stream uses memory allocated internally to the library and export that\n> + * to applications.\n> + * \\var MemoryType::ExternalMemory\n> + * The Stream uses buffers whose memory is allocated outside from the library.\n> + */\n> +\n>  /**\n>   * \\struct StreamConfiguration\n>   * \\brief Configuration parameters for a stream\n> @@ -276,7 +286,7 @@ SizeRange StreamFormats::range(unsigned int pixelformat) const\n>   * handlers provied StreamFormats.\n>   */\n>  StreamConfiguration::StreamConfiguration()\n> -\t: stream_(nullptr)\n> +\t: memoryType(InternalMemory), stream_(nullptr)\n>  {\n>  }\n>  \n> @@ -284,7 +294,7 @@ StreamConfiguration::StreamConfiguration()\n>   * \\brief Construct a configuration with stream formats\n>   */\n>  StreamConfiguration::StreamConfiguration(const StreamFormats &formats)\n> -\t: stream_(nullptr), formats_(formats)\n> +\t: memoryType(InternalMemory), stream_(nullptr), formats_(formats)\n>  {\n>  }\n>  \n> @@ -301,6 +311,11 @@ StreamConfiguration::StreamConfiguration(const StreamFormats &formats)\n>   * format described in V4L2 using the V4L2_PIX_FMT_* definitions.\n>   */\n>  \n> +/**\n> + * \\var StreamConfiguration::memoryType\n> + * \\brief The memory type the stream shall use\n> + */\n> +\n>  /**\n>   * \\var StreamConfiguration::bufferCount\n>   * \\brief Requested number of buffers to allocate for the stream\n> @@ -436,6 +451,12 @@ Stream::Stream()\n>   * \\return The active configuration of the stream\n>   */\n>  \n> +/**\n> + * \\fn Stream::memoryType()\n> + * \\brief Retrieve the stream memory type\n> + * \\return The memory type used by the stream\n> + */\n> +\n>  /**\n>   * \\brief Create buffers for the stream\n>   * \\param count The number of buffers to create\n> @@ -476,4 +497,9 @@ void Stream::destroyBuffers()\n>   * next call to Camera::configure() regardless of if it includes the stream.\n>   */\n>  \n> +/**\n> + * \\var Stream::memoryType_\n> + * \\brief The stream memory type\n> + */\n> +\n>  } /* namespace libcamera */\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-x231.google.com (mail-lj1-x231.google.com\n\t[IPv6:2a00:1450:4864:20::231])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 102B561568\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat,  6 Jul 2019 13:40:57 +0200 (CEST)","by mail-lj1-x231.google.com with SMTP id h10so11582036ljg.0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 06 Jul 2019 04:40:56 -0700 (PDT)","from localhost (customer-145-14-112-32.stosn.net. [145.14.112.32])\n\tby smtp.gmail.com with ESMTPSA id\n\t137sm2339453ljj.46.2019.07.06.04.40.55\n\t(version=TLS1_3 cipher=AEAD-AES256-GCM-SHA384 bits=256/256);\n\tSat, 06 Jul 2019 04:40:55 -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=r9xnIxeRxAnwHPjYXiBSbs+QW503R4NyG5jS5SNRr4U=;\n\tb=D1hv8eQ7DlKZaQQZ7La90aS/Jq4mDBV0D70LmcDcMCq/TRFAzaCLE+EIxMeWeraL06\n\tEBO3MF1z42HH39liaLmkXKbucIxYceWV3x8V64Xa65P4oqV2QFIBP7C61wfq5gxnD7ZQ\n\togZqyazwHA2nKQ+qLWOoyFdsXrPoZRHhb+XQQud7yJlF6rU0ydc2TECTituB5TwOG1b6\n\t+3HBnZGlKwuIQljJuUzvS5iF4czijESHauIj5H86icNs0ASHelMHHIiADbAZsIA78+Py\n\tSTd5c49TjM5D6cR/E1knKr/FJJ8k/zdIygjVrSeqnJcf/iz1R0gtIuKwLIa5FGx5tobX\n\tSmGQ==","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=r9xnIxeRxAnwHPjYXiBSbs+QW503R4NyG5jS5SNRr4U=;\n\tb=qsNNT45kxDJUT1rNrNTbpgl83LenoZo7wwdndntixpHMfZivXWXxhzHCZmOxP7nlPO\n\tnvKQOqscmJFPxWQOCkBdARGGdfFtbqFWzIv8mqqQrgmIGbNP+MMItTWeDw19zvNDH34g\n\tN86rjCxtm0sq7S7KCRLiYxKaOp0sYp0WumpqqVpv2WEE36R/9Bg28ebTvt3o4dCyaYy+\n\tthHms+K7lVtPHZLTFQgFL4ze/myAHpfS6YdV9CRauZjotXGiyzamOEkofjs3m2WS1Ai5\n\tz9Ku7psou1lcXGJ61dRRz3OyFnSlovNq5nv69M1NcFgQ3AeHO36CWhyC6Jd8exZiyjkv\n\tZX8Q==","X-Gm-Message-State":"APjAAAXX8/cj/WNMHV+DMhN0RoLNpbzBO2aUth12CsOR66YbIAnXx/fx\n\tO1Wzw1rk1vmMsqCAFnga1ZUJJ91sU7o=","X-Google-Smtp-Source":"APXvYqwEqrnj8aGn+459VHSmrsZNtszkm+7YrDe/9g3eC8KqJHaZwINH3CJDujROR8kVwBOQBoo+9g==","X-Received":"by 2002:a2e:8082:: with SMTP id i2mr4841465ljg.121.1562413256525;\n\tSat, 06 Jul 2019 04:40:56 -0700 (PDT)","Date":"Sat, 6 Jul 2019 13:40:55 +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":"<20190706114055.GL17685@bigcity.dyn.berto.se>","References":"<20190704225334.26170-1-jacopo@jmondi.org>\n\t<20190704225334.26170-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":"<20190704225334.26170-3-jacopo@jmondi.org>","User-Agent":"Mutt/1.12.1 (2019-06-15)","Subject":"Re: [libcamera-devel] [PATCH 2/9] libcamera: stream: Add Stream\n\tmemory 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":"Sat, 06 Jul 2019 11:40:57 -0000"}},{"id":2190,"web_url":"https://patchwork.libcamera.org/comment/2190/","msgid":"<4c971086-ce3c-dc47-c1b6-79ea64ea2fdd@ideasonboard.com>","date":"2019-07-08T10:23:11","subject":"Re: [libcamera-devel] [PATCH 2/9] libcamera: stream: Add Stream\n\tmemory type","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"content":"Hi Jacopo,\n\nOn 06/07/2019 12:40, Niklas Söderlund wrote:\n> Hi Jacopo,\n> \n> Thanks for your patch.\n> \n> On 2019-07-05 00:53:27 +0200, Jacopo Mondi wrote:\n>> Define the memory type a Stream uses and allow application to set it\n>> through the associated StreamConfiguration.\n>>\n>> A Stream can use either internal or external memory allocation methods,\n>> depending on where the data produced by the stream is actually saved.\n\nI can't get it out of my head that the external buffer pool should be\nregistered with the stream, so I'm commenting below with that assumption\nin my head... but that is still up for debate / discussion ... so don't\ntake my comments as \"This should be changed\" - it's just discussion\npoints ...\n\n\n>> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>\n> \n> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> \n>> ---\n>>  include/libcamera/stream.h |  8 ++++++++\n>>  src/libcamera/camera.cpp   |  1 +\n>>  src/libcamera/stream.cpp   | 30 ++++++++++++++++++++++++++++--\n>>  3 files changed, 37 insertions(+), 2 deletions(-)\n>>\n>> diff --git a/include/libcamera/stream.h b/include/libcamera/stream.h\n>> index fa7d6ba4987c..796f1aff2602 100644\n>> --- a/include/libcamera/stream.h\n>> +++ b/include/libcamera/stream.h\n>> @@ -34,6 +34,11 @@ private:\n>>  \tstd::map<unsigned int, std::vector<SizeRange>> formats_;\n>>  };\n>>  \n>> +enum MemoryType {\n>> +\tInternalMemory,\n>> +\tExternalMemory,\n>> +};\n>> +\n>>  struct StreamConfiguration {\n>>  \tStreamConfiguration();\n>>  \tStreamConfiguration(const StreamFormats &formats);\n>> @@ -41,6 +46,7 @@ struct StreamConfiguration {\n>>  \tunsigned int pixelFormat;\n>>  \tSize size;\n>>  \n>> +\tMemoryType memoryType;\n>>  \tunsigned int bufferCount;\n>>  \n>>  \tStream *stream() const { return stream_; }\n>> @@ -77,6 +83,7 @@ public:\n>>  \tstd::vector<Buffer> &buffers() { return bufferPool_.buffers(); }\n>>  \tunsigned int bufferCount() const { return bufferPool_.count(); }\n>>  \tconst StreamConfiguration &configuration() const { return configuration_; }\n>> +\tMemoryType memoryType() const { return memoryType_; }\n>>  \n>>  protected:\n>>  \tfriend class Camera;\n>> @@ -86,6 +93,7 @@ protected:\n>>  \n>>  \tBufferPool bufferPool_;\n>>  \tStreamConfiguration configuration_;\n>> +\tMemoryType memoryType_;\n>>  };\n>>  \n>>  } /* namespace libcamera */\n>> diff --git a/src/libcamera/camera.cpp b/src/libcamera/camera.cpp\n>> index 088a39623e36..5f756d41744a 100644\n>> --- a/src/libcamera/camera.cpp\n>> +++ b/src/libcamera/camera.cpp\n>> @@ -683,6 +683,7 @@ int Camera::configure(CameraConfiguration *config)\n>>  \t\t * Allocate buffer objects in the pool.\n>>  \t\t * Memory will be allocated and assigned later.\n>>  \t\t */\n>> +\t\tstream->memoryType_ = cfg.memoryType;\n>>  \t\tstream->createBuffers(cfg.bufferCount);\n\nSo we do a stream->createBuffers() in Camera::configure. ... so that\nmeans external BufferPool would have to be created before this. But I\ndon't think that's a problem ...?\n\n\nThis createBuffers call would of course then be dependant upon whether\nwe are internal or external allocation...\n\nSo if an external buffer pool were to be imported, it would have to be\n/before/ Camera::configure() which might feel a bit awkward ... or\nperhaps not ...\n\n\n\n>>  \t}\n>>  \n>> diff --git a/src/libcamera/stream.cpp b/src/libcamera/stream.cpp\n>> index 35197be09c26..97e0f429c9fb 100644\n>> --- a/src/libcamera/stream.cpp\n>> +++ b/src/libcamera/stream.cpp\n>> @@ -263,6 +263,16 @@ SizeRange StreamFormats::range(unsigned int pixelformat) const\n>>  \treturn range;\n>>  }\n>>  \n>> +/**\n>> + * \\enum MemoryType\n>> + * \\brief Define the memory type used by a Stream\n>> + * \\var MemoryType::InternalMemory\n>> + * The Stream uses memory allocated internally to the library and export that\n>> + * to applications.\n>> + * \\var MemoryType::ExternalMemory\n>> + * The Stream uses buffers whose memory is allocated outside from the library.\n>> + */\n>> +\n>>  /**\n>>   * \\struct StreamConfiguration\n>>   * \\brief Configuration parameters for a stream\n>> @@ -276,7 +286,7 @@ SizeRange StreamFormats::range(unsigned int pixelformat) const\n>>   * handlers provied StreamFormats.\n>>   */\n>>  StreamConfiguration::StreamConfiguration()\n>> -\t: stream_(nullptr)\n>> +\t: memoryType(InternalMemory), stream_(nullptr)\n>>  {\n>>  }\n>>  \n>> @@ -284,7 +294,7 @@ StreamConfiguration::StreamConfiguration()\n>>   * \\brief Construct a configuration with stream formats\n>>   */\n>>  StreamConfiguration::StreamConfiguration(const StreamFormats &formats)\n>> -\t: stream_(nullptr), formats_(formats)\n>> +\t: memoryType(InternalMemory), stream_(nullptr), formats_(formats)\n>>  {\n>>  }\n>>  \n>> @@ -301,6 +311,11 @@ StreamConfiguration::StreamConfiguration(const StreamFormats &formats)\n>>   * format described in V4L2 using the V4L2_PIX_FMT_* definitions.\n>>   */\n>>  \n>> +/**\n>> + * \\var StreamConfiguration::memoryType\n>> + * \\brief The memory type the stream shall use\n>> + */\n>> +\n>>  /**\n>>   * \\var StreamConfiguration::bufferCount\n>>   * \\brief Requested number of buffers to allocate for the stream\n>> @@ -436,6 +451,12 @@ Stream::Stream()\n>>   * \\return The active configuration of the stream\n>>   */\n>>  \n>> +/**\n>> + * \\fn Stream::memoryType()\n>> + * \\brief Retrieve the stream memory type\n>> + * \\return The memory type used by the stream\n>> + */\n>> +\n>>  /**\n>>   * \\brief Create buffers for the stream\n>>   * \\param count The number of buffers to create\n>> @@ -476,4 +497,9 @@ void Stream::destroyBuffers()\n>>   * next call to Camera::configure() regardless of if it includes the stream.\n>>   */\n>>  \n>> +/**\n>> + * \\var Stream::memoryType_\n>> + * \\brief The stream memory type\n>> + */\n>> +\n>>  } /* namespace libcamera */\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\n>","headers":{"Return-Path":"<kieran.bingham@ideasonboard.com>","Received":["from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 296BB60C1C\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon,  8 Jul 2019 12:23:14 +0200 (CEST)","from [192.168.0.20]\n\t(cpc89242-aztw30-2-0-cust488.18-1.cable.virginm.net [86.31.129.233])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B9D8756A;\n\tMon,  8 Jul 2019 12:23:13 +0200 (CEST)"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1562581393;\n\tbh=vgc95XwLupZR3GKdqE23xSWvD10cxFHqh6cKWRDvBoM=;\n\th=Reply-To:Subject:To:Cc:References:From:Date:In-Reply-To:From;\n\tb=cR0NX/dUnT4+Z5OXJsuac3Ac7l06Q73NjN5jbD3bP3mS28Jc4phwFgAbL8AkXtTvG\n\tV0L1EgV/i4kjt7IhahhCGSLWzx6RaAdxGCI1jMcPlM/C4Cz3oaSQMttQEfAgkEst99\n\tVr8sMerV5WK/zhNRysOqOjWxnJU03XdspwqAP6As=","Reply-To":"kieran.bingham@ideasonboard.com","To":"=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>,\n\tJacopo Mondi <jacopo@jmondi.org>","Cc":"libcamera-devel@lists.libcamera.org","References":"<20190704225334.26170-1-jacopo@jmondi.org>\n\t<20190704225334.26170-3-jacopo@jmondi.org>\n\t<20190706114055.GL17685@bigcity.dyn.berto.se>","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","Openpgp":"preference=signencrypt","Autocrypt":"addr=kieran.bingham@ideasonboard.com; keydata=\n\t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\n\tsbsRB8KNNvVXBOVNwko86rQqF9drZuw=","Organization":"Ideas on Board","Message-ID":"<4c971086-ce3c-dc47-c1b6-79ea64ea2fdd@ideasonboard.com>","Date":"Mon, 8 Jul 2019 11:23:11 +0100","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101\n\tThunderbird/60.7.1","MIME-Version":"1.0","In-Reply-To":"<20190706114055.GL17685@bigcity.dyn.berto.se>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-GB","Content-Transfer-Encoding":"8bit","Subject":"Re: [libcamera-devel] [PATCH 2/9] libcamera: stream: Add Stream\n\tmemory 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":"Mon, 08 Jul 2019 10:23:14 -0000"}}]