[libcamera-devel] [PATCH] include: linux: Update v4l2-controls.h

Jacopo Mondi jacopo at jmondi.org
Tue May 19 16:19:08 CEST 2020


Hi Laurent,

On Tue, May 19, 2020 at 04:52:45PM +0300, Laurent Pinchart wrote:
> Hi Jacopo,
>
> Thank you for the patch.
>
> On Tue, May 19, 2020 at 02:50:50PM +0200, Jacopo Mondi wrote:
> > Update include/linux/v4l2-controls.h with the latest version from the
> > Linux kernel media tree master.
>
> Could you please mention the commit ID ?
>
> Instead of pulling a random commit ID, one option would be to only
> replace the control macros we need, similarly to what we did in
> 972bb30c4b2fdd50f8fc02683130fd45b0d793f6, and then update to v5.8 when
> it will be released (or most likely v5.8-rc1 already to avoid delays).

That would work as well, as I only need to replace LOCATION with
ORIENTATION. If that's ok, I'll re-send updating the header and the
control parsing routines to use ORIENTATIOn

Thanks
  j

>
> > The most notable update is the definition of the V4L2_CID_ORIENTATION
> > control that replaces the downstream V4L2_CID_LOCATION.
> >
> > The here copied version is not a 1-to-1 copy of the kernel exported
> > header , because of this conflicting definition
> >
> > < /* The base for the bcm2835-isp driver controls.
> > <  * We reserve 16 controls for this driver. */
> > < #define V4L2_CID_USER_BCM2835_ISP_BASE		(V4L2_CID_USER_BASE + 0x10c0)
> > > /*
> > >  * The base for the atmel isc driver controls.
> > >  * We reserve 32 controls for this driver.
> > >  */
> > > #define V4L2_CID_USER_ATMEL_ISC_BASE		(V4L2_CID_USER_BASE + 0x10c0)
> >
> > In order to keep the RPi pipeline working, keep the downstream
> > V4L2_CID_USER_BCM2835_ISP_BASE definition and post-pone the inclusion
> > of V4L2_CID_USER_ATMEL_ISC_BASE, which is not used by libcamera.
> >
> > Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> > ---
> >  include/linux/v4l2-controls.h | 26 ++++++++++----------------
> >  1 file changed, 10 insertions(+), 16 deletions(-)
> >
> > diff --git a/include/linux/v4l2-controls.h b/include/linux/v4l2-controls.h
> > index 171351aee6fc..ffa0d74dd195 100644
> > --- a/include/linux/v4l2-controls.h
> > +++ b/include/linux/v4l2-controls.h
> > @@ -469,6 +469,10 @@ enum v4l2_mpeg_video_h264_level {
> >  	V4L2_MPEG_VIDEO_H264_LEVEL_4_2	= 13,
> >  	V4L2_MPEG_VIDEO_H264_LEVEL_5_0	= 14,
> >  	V4L2_MPEG_VIDEO_H264_LEVEL_5_1	= 15,
> > +	V4L2_MPEG_VIDEO_H264_LEVEL_5_2	= 16,
> > +	V4L2_MPEG_VIDEO_H264_LEVEL_6_0	= 17,
> > +	V4L2_MPEG_VIDEO_H264_LEVEL_6_1	= 18,
> > +	V4L2_MPEG_VIDEO_H264_LEVEL_6_2	= 19,
> >  };
> >  #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_ALPHA	(V4L2_CID_MPEG_BASE+360)
> >  #define V4L2_CID_MPEG_VIDEO_H264_LOOP_FILTER_BETA	(V4L2_CID_MPEG_BASE+361)
> > @@ -497,6 +501,7 @@ enum v4l2_mpeg_video_h264_profile {
> >  	V4L2_MPEG_VIDEO_H264_PROFILE_SCALABLE_HIGH_INTRA	= 14,
> >  	V4L2_MPEG_VIDEO_H264_PROFILE_STEREO_HIGH		= 15,
> >  	V4L2_MPEG_VIDEO_H264_PROFILE_MULTIVIEW_HIGH		= 16,
> > +	V4L2_MPEG_VIDEO_H264_PROFILE_CONSTRAINED_HIGH		= 17,
> >  };
> >  #define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_HEIGHT	(V4L2_CID_MPEG_BASE+364)
> >  #define V4L2_CID_MPEG_VIDEO_H264_VUI_EXT_SAR_WIDTH	(V4L2_CID_MPEG_BASE+365)
> > @@ -914,22 +919,10 @@ enum v4l2_auto_focus_range {
> >  #define V4L2_CID_PAN_SPEED			(V4L2_CID_CAMERA_CLASS_BASE+32)
> >  #define V4L2_CID_TILT_SPEED			(V4L2_CID_CAMERA_CLASS_BASE+33)
> >
> > -/*
> > - * This version of the v4l2-controls.h header part of the libcamera sources has
> > - * deviated from the version distributed by the mainline Linux kernel.
> > - *
> > - * Specifically, this version includes temporary definitions of a few custom
> > - * controls (V4L2_CID_CAMERA_SENSOR_ROTATION and
> > - * V4L2_CID_CAMERA_SENSOR_LOCATION) which have not yet made their way to
> > - * upstream Linux.
> > - *
> > - * When updating this header with a more recent version, make sure the new
> > - * version has those additional controls defined.
> > - */
> > -#define V4L2_CID_CAMERA_SENSOR_LOCATION		(V4L2_CID_CAMERA_CLASS_BASE+34)
> > -#define V4L2_LOCATION_FRONT			0
> > -#define V4L2_LOCATION_BACK			1
> > -#define V4L2_LOCATION_EXTERNAL			2
> > +#define V4L2_CID_CAMERA_ORIENTATION		(V4L2_CID_CAMERA_CLASS_BASE+34)
> > +#define V4L2_CAMERA_ORIENTATION_FRONT		0
> > +#define V4L2_CAMERA_ORIENTATION_BACK		1
> > +#define V4L2_CAMERA_ORIENTATION_EXTERNAL	2
> >
> >  #define V4L2_CID_CAMERA_SENSOR_ROTATION		(V4L2_CID_CAMERA_CLASS_BASE+35)
> >
> > @@ -1055,6 +1048,7 @@ enum v4l2_jpeg_chroma_subsampling {
> >  #define V4L2_CID_TEST_PATTERN_GREENR		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 5)
> >  #define V4L2_CID_TEST_PATTERN_BLUE		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 6)
> >  #define V4L2_CID_TEST_PATTERN_GREENB		(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 7)
> > +#define V4L2_CID_UNIT_CELL_SIZE			(V4L2_CID_IMAGE_SOURCE_CLASS_BASE + 8)
> >
> >
> >  /* Image processing controls */
>
> --
> Regards,
>
> Laurent Pinchart


More information about the libcamera-devel mailing list