apps: cam: sdl_texture: Take list of buffers in span

A non-owning span is sufficient, so use that instead of a vector.

Signed-off-by: Barnabás Pőcze <barnabas.pocze@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
Barnabás Pőcze 2025-04-18 14:30:25 +02:00
parent f3a12332f6
commit 02f60006cf
5 changed files with 8 additions and 8 deletions

View file

@ -7,7 +7,7 @@
#pragma once #pragma once
#include <vector> #include <libcamera/base/span.h>
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
@ -19,7 +19,7 @@ public:
SDLTexture(const SDL_Rect &rect, uint32_t pixelFormat, const int stride); SDLTexture(const SDL_Rect &rect, uint32_t pixelFormat, const int stride);
virtual ~SDLTexture(); virtual ~SDLTexture();
int create(SDL_Renderer *renderer); int create(SDL_Renderer *renderer);
virtual void update(const std::vector<libcamera::Span<const uint8_t>> &data) = 0; virtual void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) = 0;
SDL_Texture *get() const { return ptr_; } SDL_Texture *get() const { return ptr_; }
protected: protected:

View file

@ -76,7 +76,7 @@ int SDLTextureMJPG::decompress(Span<const uint8_t> data)
return 0; return 0;
} }
void SDLTextureMJPG::update(const std::vector<libcamera::Span<const uint8_t>> &data) void SDLTextureMJPG::update(libcamera::Span<const libcamera::Span<const uint8_t>> data)
{ {
decompress(data[0]); decompress(data[0]);
SDL_UpdateTexture(ptr_, nullptr, rgb_.get(), stride_); SDL_UpdateTexture(ptr_, nullptr, rgb_.get(), stride_);

View file

@ -14,7 +14,7 @@ class SDLTextureMJPG : public SDLTexture
public: public:
SDLTextureMJPG(const SDL_Rect &rect); SDLTextureMJPG(const SDL_Rect &rect);
void update(const std::vector<libcamera::Span<const uint8_t>> &data) override; void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) override;
private: private:
int decompress(libcamera::Span<const uint8_t> data); int decompress(libcamera::Span<const uint8_t> data);

View file

@ -15,7 +15,7 @@ SDLTextureNV12::SDLTextureNV12(const SDL_Rect &rect, unsigned int stride)
{ {
} }
void SDLTextureNV12::update(const std::vector<libcamera::Span<const uint8_t>> &data) void SDLTextureNV12::update(libcamera::Span<const libcamera::Span<const uint8_t>> data)
{ {
SDL_UpdateNVTexture(ptr_, &rect_, data[0].data(), stride_, SDL_UpdateNVTexture(ptr_, &rect_, data[0].data(), stride_,
data[1].data(), stride_); data[1].data(), stride_);
@ -27,7 +27,7 @@ SDLTextureYUYV::SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride)
{ {
} }
void SDLTextureYUYV::update(const std::vector<libcamera::Span<const uint8_t>> &data) void SDLTextureYUYV::update(libcamera::Span<const libcamera::Span<const uint8_t>> data)
{ {
SDL_UpdateTexture(ptr_, &rect_, data[0].data(), stride_); SDL_UpdateTexture(ptr_, &rect_, data[0].data(), stride_);
} }

View file

@ -14,7 +14,7 @@ class SDLTextureNV12 : public SDLTexture
{ {
public: public:
SDLTextureNV12(const SDL_Rect &rect, unsigned int stride); SDLTextureNV12(const SDL_Rect &rect, unsigned int stride);
void update(const std::vector<libcamera::Span<const uint8_t>> &data) override; void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) override;
}; };
#endif #endif
@ -22,5 +22,5 @@ class SDLTextureYUYV : public SDLTexture
{ {
public: public:
SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride); SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride);
void update(const std::vector<libcamera::Span<const uint8_t>> &data) override; void update(libcamera::Span<const libcamera::Span<const uint8_t>> data) override;
}; };