[libcamera-devel] [PATCH v2 2/2] pipeline: rkisp1: Add support for YUV422

Jacopo Mondi jacopo at jmondi.org
Tue Jul 19 14:40:33 CEST 2022


Hi PAul

On Tue, Jul 19, 2022 at 08:26:14PM +0900, paul.elder at ideasonboard.com wrote:
> Hi Jacopo,
>
> On Tue, Jul 19, 2022 at 12:05:00PM +0200, Jacopo Mondi wrote:
> > Hi Paul,
> >
> > On Tue, Jul 19, 2022 at 04:40:13PM +0900, Paul Elder via libcamera-devel wrote:
> > > YUV422 is already supported as an output format by the rkisp1 driver.
> > > Add them to the pipeline handler to support them in libcamera as well.
> > >
> > > YVU422 is also supported by the driver, but there only exists a
> > > multiplanar V4L2 format, which libcamera is currently unable to map to
> > > from the libcamera YVU422 format. This will be fixed later.
> >
> > That's peculiar!
> >
> > The driver supports (for both the main and self path)
> >
> > V4L2_PIX_FMT_YUV422P,
> > V4L2_PIX_FMT_YVU422M,
> >
> > so the YUV component ordering is supported throught the contiguous planes
> > variant, while the YVU permutation goes through non-contiguous one.
> >
> > Is there a reason ? Is the driver correct I wonder ?
>
> It's not the driver; it's that YVU422P doesn't exist as a V4L2 format.
>

Ok, the real question is then what the HW supports, contiguous or
non-contiguous ? The fact the YUV422P varian is used when the YUV422M
exists makes me thing also YVU422 should be reported through the 'P'
variant.

Should the format be added to the videodev2.h header ?
>
> Paul
>
> >
> > >
> > > Signed-off-by: Paul Elder <paul.elder at ideasonboard.com>
> > >
> > > ---
> > > Changes in v2:
> > > - remove YVU422
> > > - reorder formats
> > > ---
> > >  src/libcamera/pipeline/rkisp1/rkisp1_path.cpp | 6 ++++--
> > >  1 file changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
> > > index c070929d..856554b3 100644
> > > --- a/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
> > > +++ b/src/libcamera/pipeline/rkisp1/rkisp1_path.cpp
> > > @@ -209,7 +209,7 @@ void RkISP1Path::stop()
> > >  namespace {
> > >  constexpr Size RKISP1_RSZ_MP_SRC_MIN{ 32, 16 };
> > >  constexpr Size RKISP1_RSZ_MP_SRC_MAX{ 4416, 3312 };
> > > -constexpr std::array<PixelFormat, 8> RKISP1_RSZ_MP_FORMATS{
> > > +constexpr std::array<PixelFormat, 9> RKISP1_RSZ_MP_FORMATS{
> > >  	formats::YUYV,
> > >  	formats::NV16,
> > >  	formats::NV61,
> > > @@ -217,13 +217,14 @@ constexpr std::array<PixelFormat, 8> RKISP1_RSZ_MP_FORMATS{
> > >  	formats::NV12,
> > >  	formats::YUV420,
> > >  	formats::YVU420,
> > > +	formats::YUV422,
> > >  	formats::R8,
> > >  	/* \todo Add support for RAW formats. */
> > >  };
> > >
> > >  constexpr Size RKISP1_RSZ_SP_SRC_MIN{ 32, 16 };
> > >  constexpr Size RKISP1_RSZ_SP_SRC_MAX{ 1920, 1920 };
> > > -constexpr std::array<PixelFormat, 10> RKISP1_RSZ_SP_FORMATS{
> > > +constexpr std::array<PixelFormat, 11> RKISP1_RSZ_SP_FORMATS{
> > >  	formats::YUYV,
> > >  	formats::NV16,
> > >  	formats::NV61,
> > > @@ -231,6 +232,7 @@ constexpr std::array<PixelFormat, 10> RKISP1_RSZ_SP_FORMATS{
> > >  	formats::NV12,
> > >  	formats::YUV420,
> > >  	formats::YVU420,
> > > +	formats::YUV422,
> > >  	formats::R8,
> > >  	formats::RGB565,
> > >  	formats::XRGB8888,
> > > --
> > > 2.30.2
> > >


More information about the libcamera-devel mailing list