[libcamera-devel,5/7] libcamera: FrameBuffer: Add a setRequest() interface

Message ID 20200324155145.3896183-6-niklas.soderlund@ragnatech.se
State Superseded
Headers show
Series
  • libcamera: Add support for a RAW still capture
Related show

Commit Message

Niklas Söderlund March 24, 2020, 3:51 p.m. UTC
Add the ability to set the Request a buffer is associated with. This is
needed for buffers that live inside a pipeline handler and is
temporarily associated with a request as it's being processed inside the
pipeline.

While we are at it delete a stray semicolon.

Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
---
 include/libcamera/buffer.h |  3 ++-
 src/libcamera/buffer.cpp   | 11 +++++++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

Comments

Laurent Pinchart March 26, 2020, 2:10 p.m. UTC | #1
Hi Niklas,

Thank you for the patch.

On Tue, Mar 24, 2020 at 04:51:43PM +0100, Niklas Söderlund wrote:
> Add the ability to set the Request a buffer is associated with. This is
> needed for buffers that live inside a pipeline handler and is
> temporarily associated with a request as it's being processed inside the
> pipeline.
> 
> While we are at it delete a stray semicolon.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
> ---
>  include/libcamera/buffer.h |  3 ++-
>  src/libcamera/buffer.cpp   | 11 +++++++++++
>  2 files changed, 13 insertions(+), 1 deletion(-)
> 
> diff --git a/include/libcamera/buffer.h b/include/libcamera/buffer.h
> index ef3a3b36cd4e4e17..6bb2e4f8558f03ac 100644
> --- a/include/libcamera/buffer.h
> +++ b/include/libcamera/buffer.h
> @@ -52,7 +52,8 @@ public:
>  	const std::vector<Plane> &planes() const { return planes_; }
>  
>  	Request *request() const { return request_; }
> -	const FrameMetadata &metadata() const { return metadata_; };
> +	void setRequest(Request *request) { request_ = request; }
> +	const FrameMetadata &metadata() const { return metadata_; }
>  
>  	unsigned int cookie() const { return cookie_; }
>  	void setCookie(unsigned int cookie) { cookie_ = cookie; }
> diff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp
> index 0352917e9f2a3202..e9ee4debbf33bdf6 100644
> --- a/src/libcamera/buffer.cpp
> +++ b/src/libcamera/buffer.cpp
> @@ -182,6 +182,17 @@ FrameBuffer::FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie)
>   * not associated with a request
>   */
>  
> +/**
> + * \fn FrameBuffer::setRequest()
> + * \brief Set the request this buffer belongs to
> + * \param[in] request Request to set
> + *
> + * The intended callers of this method are pipeline handlers and only for
> + * buffers that are internal to the pipeline.
> + *
> + * \todo Shall be hidden from applications with a d-pointer design.

You know this may very well nerd-snipe me, right ? :-) In the meantime,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> + */
> +
>  /**
>   * \fn FrameBuffer::metadata()
>   * \brief Retrieve the dynamic metadata

Patch

diff --git a/include/libcamera/buffer.h b/include/libcamera/buffer.h
index ef3a3b36cd4e4e17..6bb2e4f8558f03ac 100644
--- a/include/libcamera/buffer.h
+++ b/include/libcamera/buffer.h
@@ -52,7 +52,8 @@  public:
 	const std::vector<Plane> &planes() const { return planes_; }
 
 	Request *request() const { return request_; }
-	const FrameMetadata &metadata() const { return metadata_; };
+	void setRequest(Request *request) { request_ = request; }
+	const FrameMetadata &metadata() const { return metadata_; }
 
 	unsigned int cookie() const { return cookie_; }
 	void setCookie(unsigned int cookie) { cookie_ = cookie; }
diff --git a/src/libcamera/buffer.cpp b/src/libcamera/buffer.cpp
index 0352917e9f2a3202..e9ee4debbf33bdf6 100644
--- a/src/libcamera/buffer.cpp
+++ b/src/libcamera/buffer.cpp
@@ -182,6 +182,17 @@  FrameBuffer::FrameBuffer(const std::vector<Plane> &planes, unsigned int cookie)
  * not associated with a request
  */
 
+/**
+ * \fn FrameBuffer::setRequest()
+ * \brief Set the request this buffer belongs to
+ * \param[in] request Request to set
+ *
+ * The intended callers of this method are pipeline handlers and only for
+ * buffers that are internal to the pipeline.
+ *
+ * \todo Shall be hidden from applications with a d-pointer design.
+ */
+
 /**
  * \fn FrameBuffer::metadata()
  * \brief Retrieve the dynamic metadata