From patchwork Wed Jul 20 13:03:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 16703 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id 13310BD1F1 for ; Wed, 20 Jul 2022 13:04:32 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id CA71C63318; Wed, 20 Jul 2022 15:04:31 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1658322271; bh=dZwyTDWTzsRQ1vjmq/2l08kflkIlUmxOA188SbNDlRY=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=nMGzQ1+xZlGPA/9548eN5Y4pfaYrqSdStHq1qInpz5VW9CojQUlAue0RbQX1eyJsK 0bCoQeSV/kdC4+YZnAsYtoJiJiD/Y/xgM1YtrbvoN6MRdLU7dDcfhGk5pP1J3+axU2 G23B0YEL+QUBY+xjTU5037NRwtz/UmflN0n2q6NNklvhCWLovWms/VvMRDkrdUrLK1 5HHKVIuvvic2BVs2cq1j7x3/As1sqM52vp92ej+/7ktNEndera/G6L3QBj5kM9jjC6 Ya/w4A3z4aKckOMx2PaT2/JOjtC4Uw0sxcVCuu3CibAJOj+tCTb9eKFtUaeu/ayRsb dDh8YXKasgl3A== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 34BD060489 for ; Wed, 20 Jul 2022 15:04:27 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="Rnr5FBNA"; dkim-atps=neutral Received: from pendragon.lan (62-78-145-57.bb.dnainternet.fi [62.78.145.57]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id BD450D02; Wed, 20 Jul 2022 15:04:26 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1658322267; bh=dZwyTDWTzsRQ1vjmq/2l08kflkIlUmxOA188SbNDlRY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Rnr5FBNA+GQz8nz68jValTMRErQNEWlB1EYmdlWSDm5RYz/+LEYxmyCYA185iteGn w0rJ/76rTm6FWRbFhyS1LXa/ws+iIyPOOHG52GE0UdzNqXyC3skwDhd6QXHAuhrSFy BoeO6Nlo7DOLD0mreJXEOE5tLUhOdGoavMWHNOJA= To: libcamera-devel@lists.libcamera.org Date: Wed, 20 Jul 2022 16:03:48 +0300 Message-Id: <20220720130348.1337-3-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220720130348.1337-1-laurent.pinchart@ideasonboard.com> References: <20220720130348.1337-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH v5 2/2] cam: sdl_sink: Pass a Span to SDLTexture::update() X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Laurent Pinchart via libcamera-devel From: Laurent Pinchart Reply-To: Laurent Pinchart Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" 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 Reviewed-by: Jacopo Mondi --- 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 &data) = 0; + virtual void update(libcamera::Span 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 &data) +int SDLTextureMJPG::decompress(Span data) { struct jpeg_decompress_struct cinfo; @@ -76,7 +76,7 @@ int SDLTextureMJPG::decompress(const Span &data) return 0; } -void SDLTextureMJPG::update(const Span &data) +void SDLTextureMJPG::update(Span 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 &data) override; + void update(libcamera::Span data) override; private: - int decompress(const libcamera::Span &data); + int decompress(libcamera::Span data); std::unique_ptr 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 &data) +void SDLTextureYUYV::update(Span 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 &data) override; + void update(libcamera::Span data) override; };