[libcamera-devel] [PATCH 23/31] libcamera: byte_stream_buffer: Add Span<> support
Kieran Bingham
kieran.bingham at ideasonboard.com
Thu Mar 5 16:38:26 CET 2020
On 29/02/2020 16:42, Laurent Pinchart wrote:
> From: Jacopo Mondi <jacopo at jmondi.org>
>
> Add support to read and write a Span<> from and to the ByteStreamBuffer
s/from and to/to and from/
(Yes, I know that matches the 'order' of read and write, but we would
not really say "from and to" in English)
> class.
>
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
> ---
> src/libcamera/byte_stream_buffer.cpp | 18 ++++++++++++++++++
> src/libcamera/include/byte_stream_buffer.h | 17 +++++++++++++++++
> 2 files changed, 35 insertions(+)
>
> diff --git a/src/libcamera/byte_stream_buffer.cpp b/src/libcamera/byte_stream_buffer.cpp
> index cd1d8a36d464..40380bf0434a 100644
> --- a/src/libcamera/byte_stream_buffer.cpp
> +++ b/src/libcamera/byte_stream_buffer.cpp
> @@ -232,6 +232,15 @@ int ByteStreamBuffer::skip(size_t size)
> * \retval -ENOSPC no more space is available in the managed memory buffer
> */
>
> +/**
> + * \fn template<typename T> int ByteStreamBuffer::read(const Span<T> &data)
> + * \brief Read data from the managed memory buffer into span \a data
s/span/Span/ ?
> + * \param[out] data Span representing the destination memory
> + * \return 0 on success, a negative error code otherwise
> + * \retval -EACCES attempting to read from a write buffer
> + * \retval -ENOSPC no more space is available in the managed memory buffer
> + */
> +
> /**
> * \fn template<typename T> int ByteStreamBuffer::write(const T *t)
> * \brief Write \a t to the managed memory buffer
> @@ -241,6 +250,15 @@ int ByteStreamBuffer::skip(size_t size)
> * \retval -ENOSPC no more space is available in the managed memory buffer
> */
>
> +/**
> + * \fn template<typename T> int ByteStreamBuffer::write(const Span<T> &data)
> + * \brief Write \a data to the managed memory buffer
> + * \param[in] data The data to write to memory
> + * \return 0 on success, a negative error code otherwise
> + * \retval -EACCES attempting to write to a read buffer
> + * \retval -ENOSPC no more space is available in the managed memory buffer
> + */
> +
> int ByteStreamBuffer::read(uint8_t *data, size_t size)
> {
> if (!read_)
> diff --git a/src/libcamera/include/byte_stream_buffer.h b/src/libcamera/include/byte_stream_buffer.h
> index b5274c62b85e..17cb0146061e 100644
> --- a/src/libcamera/include/byte_stream_buffer.h
> +++ b/src/libcamera/include/byte_stream_buffer.h
> @@ -10,6 +10,8 @@
> #include <stddef.h>
> #include <stdint.h>
>
> +#include <libcamera/span.h>
> +
> namespace libcamera {
>
> class ByteStreamBuffer
> @@ -33,12 +35,27 @@ public:
> {
> return read(reinterpret_cast<uint8_t *>(t), sizeof(*t));
> }
> +
> + template<typename T>
> + int read(const Span<T> &data)
> + {
> + return read(reinterpret_cast<uint8_t *>(data.data()),
> + data.size_bytes());
> + }
> +
> template<typename T>
> int write(const T *t)
> {
> return write(reinterpret_cast<const uint8_t *>(t), sizeof(*t));
> }
>
> + template<typename T>
> + int write(const Span<T> &data)
> + {
> + return write(reinterpret_cast<const uint8_t *>(data.data()),
> + data.size_bytes());
> + }
> +
> private:
> ByteStreamBuffer(const ByteStreamBuffer &other) = delete;
> ByteStreamBuffer &operator=(const ByteStreamBuffer &other) = delete;
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list