[libcamera-devel] [PATCH 1/4] cam: sdl_texture_yuyv: Make line stride configurable

Laurent Pinchart laurent.pinchart at ideasonboard.com
Mon Aug 8 16:12:47 CEST 2022


Hi Jacopo,

On Mon, Aug 08, 2022 at 10:20:34AM +0200, Jacopo Mondi wrote:
> On Sun, Aug 07, 2022 at 05:17:15AM +0300, Laurent Pinchart via libcamera-devel wrote:
> > The line stride of the texture is currently hardcoded based on the image
> > width, which may not match the real stride. Use the stride value from
> > the stream configuration instead.
> >
> > Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> > ---
> >  src/cam/sdl_sink.cpp         | 2 +-
> >  src/cam/sdl_texture_yuyv.cpp | 4 ++--
> >  src/cam/sdl_texture_yuyv.h   | 2 +-
> >  3 files changed, 4 insertions(+), 4 deletions(-)
> >
> > diff --git a/src/cam/sdl_sink.cpp b/src/cam/sdl_sink.cpp
> > index 19fdfd6dced5..a59d07519e1f 100644
> > --- a/src/cam/sdl_sink.cpp
> > +++ b/src/cam/sdl_sink.cpp
> > @@ -68,7 +68,7 @@ int SDLSink::configure(const libcamera::CameraConfiguration &config)
> >  		break;
> >  #endif
> >  	case libcamera::formats::YUYV:
> > -		texture_ = std::make_unique<SDLTextureYUYV>(rect_);
> > +		texture_ = std::make_unique<SDLTextureYUYV>(rect_, cfg.stride);
> >  		break;
> >  	default:
> >  		std::cerr << "Unsupported pixel format "
> > diff --git a/src/cam/sdl_texture_yuyv.cpp b/src/cam/sdl_texture_yuyv.cpp
> > index 637c0900edff..cb51fb0ef478 100644
> > --- a/src/cam/sdl_texture_yuyv.cpp
> > +++ b/src/cam/sdl_texture_yuyv.cpp
> > @@ -9,8 +9,8 @@
> >
> >  using namespace libcamera;
> >
> > -SDLTextureYUYV::SDLTextureYUYV(const SDL_Rect &rect)
> > -	: SDLTexture(rect, SDL_PIXELFORMAT_YUY2, 4 * ((rect.w + 1) / 2))
> > +SDLTextureYUYV::SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride)
> 
> nit: the base class has the same parameter but calls it "pitch".

I know, we have stride coming from libcamera, and pitch in the base
class, so it's bound to be inconsistent somewhere. Should I submit
another patch to rename pitch to stride in the base class too ?

> The rest looks good
> Reviewed-by: Jacopo Mondi <jacopo at jmondi.org>
> 
> > +	: SDLTexture(rect, SDL_PIXELFORMAT_YUY2, stride)
> >  {
> >  }
> >
> > diff --git a/src/cam/sdl_texture_yuyv.h b/src/cam/sdl_texture_yuyv.h
> > index 529a72d6a40e..81e51381ec62 100644
> > --- a/src/cam/sdl_texture_yuyv.h
> > +++ b/src/cam/sdl_texture_yuyv.h
> > @@ -12,6 +12,6 @@
> >  class SDLTextureYUYV : public SDLTexture
> >  {
> >  public:
> > -	SDLTextureYUYV(const SDL_Rect &rect);
> > +	SDLTextureYUYV(const SDL_Rect &rect, unsigned int stride);
> >  	void update(libcamera::Span<const uint8_t> data) override;
> >  };

-- 
Regards,

Laurent Pinchart


More information about the libcamera-devel mailing list