[libcamera-devel] [PATCH v5 2/2] cam: sdl_sink: Pass a Span<const uint8_t> to SDLTexture::update()
Jacopo Mondi
jacopo at jmondi.org
Thu Jul 28 10:13:35 CEST 2022
Hi Laurent
On Wed, Jul 20, 2022 at 04:03:48PM +0300, Laurent Pinchart via libcamera-devel wrote:
> The SDLTexture::update() function isn't meant to modify the data it
> receives. Make the Span type const to ensure this at compile time. While
> at it, pass the Span by value instead of reference, as a Span is only a
> pointer and size, which will fit in registers and will avoid pointer
> dereferences in the callee.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
Looks good
Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
Thanks
j
> ---
> src/cam/sdl_texture.h | 2 +-
> src/cam/sdl_texture_mjpg.cpp | 4 ++--
> src/cam/sdl_texture_mjpg.h | 4 ++--
> src/cam/sdl_texture_yuyv.cpp | 2 +-
> src/cam/sdl_texture_yuyv.h | 2 +-
> 5 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/cam/sdl_texture.h b/src/cam/sdl_texture.h
> index 1d8b09288d50..f523fa5ebf51 100644
> --- a/src/cam/sdl_texture.h
> +++ b/src/cam/sdl_texture.h
> @@ -17,7 +17,7 @@ public:
> SDLTexture(const SDL_Rect &rect, uint32_t pixelFormat, const int pitch);
> virtual ~SDLTexture();
> int create(SDL_Renderer *renderer);
> - virtual void update(const libcamera::Span<uint8_t> &data) = 0;
> + virtual void update(libcamera::Span<const uint8_t> data) = 0;
> SDL_Texture *get() const { return ptr_; }
>
> protected:
> diff --git a/src/cam/sdl_texture_mjpg.cpp b/src/cam/sdl_texture_mjpg.cpp
> index 7eddc00cd210..7542efd75d96 100644
> --- a/src/cam/sdl_texture_mjpg.cpp
> +++ b/src/cam/sdl_texture_mjpg.cpp
> @@ -43,7 +43,7 @@ SDLTextureMJPG::SDLTextureMJPG(const SDL_Rect &rect)
> {
> }
>
> -int SDLTextureMJPG::decompress(const Span<uint8_t> &data)
> +int SDLTextureMJPG::decompress(Span<const uint8_t> data)
> {
> struct jpeg_decompress_struct cinfo;
>
> @@ -76,7 +76,7 @@ int SDLTextureMJPG::decompress(const Span<uint8_t> &data)
> return 0;
> }
>
> -void SDLTextureMJPG::update(const Span<uint8_t> &data)
> +void SDLTextureMJPG::update(Span<const uint8_t> data)
> {
> decompress(data);
> SDL_UpdateTexture(ptr_, nullptr, rgb_.get(), pitch_);
> diff --git a/src/cam/sdl_texture_mjpg.h b/src/cam/sdl_texture_mjpg.h
> index 328c45a913c5..5141ed73bf70 100644
> --- a/src/cam/sdl_texture_mjpg.h
> +++ b/src/cam/sdl_texture_mjpg.h
> @@ -14,10 +14,10 @@ class SDLTextureMJPG : public SDLTexture
> public:
> SDLTextureMJPG(const SDL_Rect &rect);
>
> - void update(const libcamera::Span<uint8_t> &data) override;
> + void update(libcamera::Span<const uint8_t> data) override;
>
> private:
> - int decompress(const libcamera::Span<uint8_t> &data);
> + int decompress(libcamera::Span<const uint8_t> data);
>
> std::unique_ptr<unsigned char[]> rgb_;
> };
> diff --git a/src/cam/sdl_texture_yuyv.cpp b/src/cam/sdl_texture_yuyv.cpp
> index cc161b2cfa79..637c0900edff 100644
> --- a/src/cam/sdl_texture_yuyv.cpp
> +++ b/src/cam/sdl_texture_yuyv.cpp
> @@ -14,7 +14,7 @@ SDLTextureYUYV::SDLTextureYUYV(const SDL_Rect &rect)
> {
> }
>
> -void SDLTextureYUYV::update(const Span<uint8_t> &data)
> +void SDLTextureYUYV::update(Span<const uint8_t> data)
> {
> SDL_UpdateTexture(ptr_, &rect_, data.data(), pitch_);
> }
> diff --git a/src/cam/sdl_texture_yuyv.h b/src/cam/sdl_texture_yuyv.h
> index 9f7c72f09db2..529a72d6a40e 100644
> --- a/src/cam/sdl_texture_yuyv.h
> +++ b/src/cam/sdl_texture_yuyv.h
> @@ -13,5 +13,5 @@ class SDLTextureYUYV : public SDLTexture
> {
> public:
> SDLTextureYUYV(const SDL_Rect &rect);
> - void update(const libcamera::Span<uint8_t> &data) override;
> + void update(libcamera::Span<const uint8_t> data) override;
> };
> --
> Regards,
>
> Laurent Pinchart
>
More information about the libcamera-devel
mailing list