[libcamera-devel,PATCH/RFC,07/11] qcam: Replace explicit DRM FourCCs with libcamera formats

Message ID 20200522145459.16836-9-laurent.pinchart@ideasonboard.com
State Superseded
Headers show
Series
  • Introduce formats:: namespace for libcamera pixel formats
Related show

Commit Message

Laurent Pinchart May 22, 2020, 2:54 p.m. UTC
Use the new pixel format constants to replace usage of macros from
drm_fourcc.h.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
---
 src/qcam/dng_writer.cpp       | 17 +++++++++--------
 src/qcam/format_converter.cpp | 36 ++++++++++++++++++-----------------
 src/qcam/viewfinder.cpp       | 10 ++++++----
 3 files changed, 34 insertions(+), 29 deletions(-)

Comments

Kieran Bingham May 28, 2020, 10:07 a.m. UTC | #1
Hi Laurent,

On 22/05/2020 15:54, Laurent Pinchart wrote:
> Use the new pixel format constants to replace usage of macros from
> drm_fourcc.h.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> ---
>  src/qcam/dng_writer.cpp       | 17 +++++++++--------
>  src/qcam/format_converter.cpp | 36 ++++++++++++++++++-----------------
>  src/qcam/viewfinder.cpp       | 10 ++++++----
>  3 files changed, 34 insertions(+), 29 deletions(-)
> 
> diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp
> index cbd8bed3e6d0..1aa2eaa9a501 100644
> --- a/src/qcam/dng_writer.cpp
> +++ b/src/qcam/dng_writer.cpp
> @@ -14,6 +14,7 @@
>  #include <tiffio.h>
>  
>  #include <libcamera/control_ids.h>
> +#include <libcamera/formats.h>
>  
>  using namespace libcamera;
>  
> @@ -83,49 +84,49 @@ void thumbScanlineSBGGRxxP(const FormatInfo &info, void *output,
>  }
>  
>  static const std::map<PixelFormat, FormatInfo> formatInfo = {
> -	{ PixelFormat(DRM_FORMAT_SBGGR10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SBGGR10_CSI2P, {
>  		.bitsPerSample = 10,
>  		.pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
>  		.packScanline = packScanlineSBGGR10P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SGBRG10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SGBRG10_CSI2P, {
>  		.bitsPerSample = 10,
>  		.pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
>  		.packScanline = packScanlineSBGGR10P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SGRBG10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SGRBG10_CSI2P, {
>  		.bitsPerSample = 10,
>  		.pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
>  		.packScanline = packScanlineSBGGR10P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SRGGB10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SRGGB10_CSI2P, {
>  		.bitsPerSample = 10,
>  		.pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
>  		.packScanline = packScanlineSBGGR10P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SBGGR12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SBGGR12_CSI2P, {
>  		.bitsPerSample = 12,
>  		.pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
>  		.packScanline = packScanlineSBGGR12P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SGBRG12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SGBRG12_CSI2P, {
>  		.bitsPerSample = 12,
>  		.pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
>  		.packScanline = packScanlineSBGGR12P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SGRBG12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SGRBG12_CSI2P, {
>  		.bitsPerSample = 12,
>  		.pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
>  		.packScanline = packScanlineSBGGR12P,
>  		.thumbScanline = thumbScanlineSBGGRxxP,
>  	} },
> -	{ PixelFormat(DRM_FORMAT_SRGGB12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> +	{ formats::SRGGB12_CSI2P, {
>  		.bitsPerSample = 12,
>  		.pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
>  		.packScanline = packScanlineSBGGR12P,
> diff --git a/src/qcam/format_converter.cpp b/src/qcam/format_converter.cpp
> index bf887ad446eb..4b9722d4ecf7 100644
> --- a/src/qcam/format_converter.cpp
> +++ b/src/qcam/format_converter.cpp
> @@ -11,6 +11,8 @@
>  
>  #include <QImage>
>  
> +#include <libcamera/formats.h>
> +
>  #define RGBSHIFT		8
>  #ifndef MAX
>  #define MAX(a,b)		((a)>(b)?(a):(b))
> @@ -29,79 +31,79 @@ int FormatConverter::configure(const libcamera::PixelFormat &format,
>  			       const QSize &size)
>  {
>  	switch (format) {
> -	case DRM_FORMAT_NV12:
> +	case libcamera::formats::NV12:
>  		formatFamily_ = NV;
>  		horzSubSample_ = 2;
>  		vertSubSample_ = 2;
>  		nvSwap_ = false;
>  		break;
> -	case DRM_FORMAT_NV21:
> +	case libcamera::formats::NV21:
>  		formatFamily_ = NV;
>  		horzSubSample_ = 2;
>  		vertSubSample_ = 2;
>  		nvSwap_ = true;
>  		break;
> -	case DRM_FORMAT_NV16:
> +	case libcamera::formats::NV16:
>  		formatFamily_ = NV;
>  		horzSubSample_ = 2;
>  		vertSubSample_ = 1;
>  		nvSwap_ = false;
>  		break;
> -	case DRM_FORMAT_NV61:
> +	case libcamera::formats::NV61:
>  		formatFamily_ = NV;
>  		horzSubSample_ = 2;
>  		vertSubSample_ = 1;
>  		nvSwap_ = true;
>  		break;
> -	case DRM_FORMAT_NV24:
> +	case libcamera::formats::NV24:
>  		formatFamily_ = NV;
>  		horzSubSample_ = 1;
>  		vertSubSample_ = 1;
>  		nvSwap_ = false;
>  		break;
> -	case DRM_FORMAT_NV42:
> +	case libcamera::formats::NV42:
>  		formatFamily_ = NV;
>  		horzSubSample_ = 1;
>  		vertSubSample_ = 1;
>  		nvSwap_ = true;
>  		break;
>  
> -	case DRM_FORMAT_RGB888:
> +	case libcamera::formats::RGB888:
>  		formatFamily_ = RGB;
>  		r_pos_ = 2;
>  		g_pos_ = 1;
>  		b_pos_ = 0;
>  		bpp_ = 3;
>  		break;
> -	case DRM_FORMAT_BGR888:
> +	case libcamera::formats::BGR888:
>  		formatFamily_ = RGB;
>  		r_pos_ = 0;
>  		g_pos_ = 1;
>  		b_pos_ = 2;
>  		bpp_ = 3;
>  		break;
> -	case DRM_FORMAT_ARGB8888:
> +	case libcamera::formats::ARGB8888:
>  		formatFamily_ = RGB;
>  		r_pos_ = 2;
>  		g_pos_ = 1;
>  		b_pos_ = 0;
>  		bpp_ = 4;
>  		break;
> -	case DRM_FORMAT_RGBA8888:
> +	case libcamera::formats::RGBA8888:
>  		formatFamily_ = RGB;
>  		r_pos_ = 3;
>  		g_pos_ = 2;
>  		b_pos_ = 1;
>  		bpp_ = 4;
>  		break;
> -	case DRM_FORMAT_ABGR8888:
> +	case libcamera::formats::ABGR8888:
>  		formatFamily_ = RGB;
>  		r_pos_ = 0;
>  		g_pos_ = 1;
>  		b_pos_ = 2;
>  		bpp_ = 4;
>  		break;
> -	case DRM_FORMAT_BGRA8888:
> +	case libcamera::formats::BGRA8888:
>  		formatFamily_ = RGB;
>  		r_pos_ = 1;
>  		g_pos_ = 2;
> @@ -109,28 +111,28 @@ int FormatConverter::configure(const libcamera::PixelFormat &format,
>  		bpp_ = 4;
>  		break;
>  
> -	case DRM_FORMAT_VYUY:
> +	case libcamera::formats::VYUY:
>  		formatFamily_ = YUV;
>  		y_pos_ = 1;
>  		cb_pos_ = 2;
>  		break;
> -	case DRM_FORMAT_YVYU:
> +	case libcamera::formats::YVYU:
>  		formatFamily_ = YUV;
>  		y_pos_ = 0;
>  		cb_pos_ = 3;
>  		break;
> -	case DRM_FORMAT_UYVY:
> +	case libcamera::formats::UYVY:
>  		formatFamily_ = YUV;
>  		y_pos_ = 1;
>  		cb_pos_ = 0;
>  		break;
> -	case DRM_FORMAT_YUYV:
> +	case libcamera::formats::YUYV:
>  		formatFamily_ = YUV;
>  		y_pos_ = 0;
>  		cb_pos_ = 1;
>  		break;
>  
> -	case DRM_FORMAT_MJPEG:
> +	case libcamera::formats::MJPEG:
>  		formatFamily_ = MJPEG;
>  		break;
>  
> diff --git a/src/qcam/viewfinder.cpp b/src/qcam/viewfinder.cpp
> index 0d68f62ee6d7..ac83d7e6c397 100644
> --- a/src/qcam/viewfinder.cpp
> +++ b/src/qcam/viewfinder.cpp
> @@ -17,18 +17,20 @@
>  #include <QPainter>
>  #include <QtDebug>
>  
> +#include <libcamera/formats.h>
> +
>  #include "format_converter.h"
>  
>  static const QMap<libcamera::PixelFormat, QImage::Format> nativeFormats
>  {
>  #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
> -	{ libcamera::PixelFormat{ DRM_FORMAT_ABGR8888 }, QImage::Format_RGBA8888 },
> +	{ libcamera::formats::ABGR8888, QImage::Format_RGBA8888 },
>  #endif
> -	{ libcamera::PixelFormat{ DRM_FORMAT_ARGB8888 }, QImage::Format_RGB32 },
> +	{ libcamera::formats::ARGB8888, QImage::Format_RGB32 },
>  #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
> -	{ libcamera::PixelFormat{ DRM_FORMAT_BGR888 }, QImage::Format_BGR888 },
> +	{ libcamera::formats::BGR888, QImage::Format_BGR888 },
>  #endif
> -	{ libcamera::PixelFormat{ DRM_FORMAT_RGB888 }, QImage::Format_RGB888 },
> +	{ libcamera::formats::RGB888, QImage::Format_RGB888 },

Excepting the format swap necessary on BGR888/RGB888 in regards to the
QImage formats, which has been identified after you created this patch:

Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>

>  };
>  
>  ViewFinder::ViewFinder(QWidget *parent)
>
Laurent Pinchart May 28, 2020, 11:11 a.m. UTC | #2
Hi Kieran,

On Thu, May 28, 2020 at 11:07:21AM +0100, Kieran Bingham wrote:
> On 22/05/2020 15:54, Laurent Pinchart wrote:
> > Use the new pixel format constants to replace usage of macros from
> > drm_fourcc.h.
> > 
> > Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> > ---
> >  src/qcam/dng_writer.cpp       | 17 +++++++++--------
> >  src/qcam/format_converter.cpp | 36 ++++++++++++++++++-----------------
> >  src/qcam/viewfinder.cpp       | 10 ++++++----
> >  3 files changed, 34 insertions(+), 29 deletions(-)
> > 
> > diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp
> > index cbd8bed3e6d0..1aa2eaa9a501 100644
> > --- a/src/qcam/dng_writer.cpp
> > +++ b/src/qcam/dng_writer.cpp
> > @@ -14,6 +14,7 @@
> >  #include <tiffio.h>
> >  
> >  #include <libcamera/control_ids.h>
> > +#include <libcamera/formats.h>
> >  
> >  using namespace libcamera;
> >  
> > @@ -83,49 +84,49 @@ void thumbScanlineSBGGRxxP(const FormatInfo &info, void *output,
> >  }
> >  
> >  static const std::map<PixelFormat, FormatInfo> formatInfo = {
> > -	{ PixelFormat(DRM_FORMAT_SBGGR10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SBGGR10_CSI2P, {
> >  		.bitsPerSample = 10,
> >  		.pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
> >  		.packScanline = packScanlineSBGGR10P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SGBRG10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SGBRG10_CSI2P, {
> >  		.bitsPerSample = 10,
> >  		.pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
> >  		.packScanline = packScanlineSBGGR10P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SGRBG10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SGRBG10_CSI2P, {
> >  		.bitsPerSample = 10,
> >  		.pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
> >  		.packScanline = packScanlineSBGGR10P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SRGGB10, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SRGGB10_CSI2P, {
> >  		.bitsPerSample = 10,
> >  		.pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
> >  		.packScanline = packScanlineSBGGR10P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SBGGR12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SBGGR12_CSI2P, {
> >  		.bitsPerSample = 12,
> >  		.pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
> >  		.packScanline = packScanlineSBGGR12P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SGBRG12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SGBRG12_CSI2P, {
> >  		.bitsPerSample = 12,
> >  		.pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
> >  		.packScanline = packScanlineSBGGR12P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SGRBG12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SGRBG12_CSI2P, {
> >  		.bitsPerSample = 12,
> >  		.pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
> >  		.packScanline = packScanlineSBGGR12P,
> >  		.thumbScanline = thumbScanlineSBGGRxxP,
> >  	} },
> > -	{ PixelFormat(DRM_FORMAT_SRGGB12, MIPI_FORMAT_MOD_CSI2_PACKED), {
> > +	{ formats::SRGGB12_CSI2P, {
> >  		.bitsPerSample = 12,
> >  		.pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
> >  		.packScanline = packScanlineSBGGR12P,
> > diff --git a/src/qcam/format_converter.cpp b/src/qcam/format_converter.cpp
> > index bf887ad446eb..4b9722d4ecf7 100644
> > --- a/src/qcam/format_converter.cpp
> > +++ b/src/qcam/format_converter.cpp
> > @@ -11,6 +11,8 @@
> >  
> >  #include <QImage>
> >  
> > +#include <libcamera/formats.h>
> > +
> >  #define RGBSHIFT		8
> >  #ifndef MAX
> >  #define MAX(a,b)		((a)>(b)?(a):(b))
> > @@ -29,79 +31,79 @@ int FormatConverter::configure(const libcamera::PixelFormat &format,
> >  			       const QSize &size)
> >  {
> >  	switch (format) {
> > -	case DRM_FORMAT_NV12:
> > +	case libcamera::formats::NV12:
> >  		formatFamily_ = NV;
> >  		horzSubSample_ = 2;
> >  		vertSubSample_ = 2;
> >  		nvSwap_ = false;
> >  		break;
> > -	case DRM_FORMAT_NV21:
> > +	case libcamera::formats::NV21:
> >  		formatFamily_ = NV;
> >  		horzSubSample_ = 2;
> >  		vertSubSample_ = 2;
> >  		nvSwap_ = true;
> >  		break;
> > -	case DRM_FORMAT_NV16:
> > +	case libcamera::formats::NV16:
> >  		formatFamily_ = NV;
> >  		horzSubSample_ = 2;
> >  		vertSubSample_ = 1;
> >  		nvSwap_ = false;
> >  		break;
> > -	case DRM_FORMAT_NV61:
> > +	case libcamera::formats::NV61:
> >  		formatFamily_ = NV;
> >  		horzSubSample_ = 2;
> >  		vertSubSample_ = 1;
> >  		nvSwap_ = true;
> >  		break;
> > -	case DRM_FORMAT_NV24:
> > +	case libcamera::formats::NV24:
> >  		formatFamily_ = NV;
> >  		horzSubSample_ = 1;
> >  		vertSubSample_ = 1;
> >  		nvSwap_ = false;
> >  		break;
> > -	case DRM_FORMAT_NV42:
> > +	case libcamera::formats::NV42:
> >  		formatFamily_ = NV;
> >  		horzSubSample_ = 1;
> >  		vertSubSample_ = 1;
> >  		nvSwap_ = true;
> >  		break;
> >  
> > -	case DRM_FORMAT_RGB888:
> > +	case libcamera::formats::RGB888:
> >  		formatFamily_ = RGB;
> >  		r_pos_ = 2;
> >  		g_pos_ = 1;
> >  		b_pos_ = 0;
> >  		bpp_ = 3;
> >  		break;
> > -	case DRM_FORMAT_BGR888:
> > +	case libcamera::formats::BGR888:
> >  		formatFamily_ = RGB;
> >  		r_pos_ = 0;
> >  		g_pos_ = 1;
> >  		b_pos_ = 2;
> >  		bpp_ = 3;
> >  		break;
> > -	case DRM_FORMAT_ARGB8888:
> > +	case libcamera::formats::ARGB8888:
> >  		formatFamily_ = RGB;
> >  		r_pos_ = 2;
> >  		g_pos_ = 1;
> >  		b_pos_ = 0;
> >  		bpp_ = 4;
> >  		break;
> > -	case DRM_FORMAT_RGBA8888:
> > +	case libcamera::formats::RGBA8888:
> >  		formatFamily_ = RGB;
> >  		r_pos_ = 3;
> >  		g_pos_ = 2;
> >  		b_pos_ = 1;
> >  		bpp_ = 4;
> >  		break;
> > -	case DRM_FORMAT_ABGR8888:
> > +	case libcamera::formats::ABGR8888:
> >  		formatFamily_ = RGB;
> >  		r_pos_ = 0;
> >  		g_pos_ = 1;
> >  		b_pos_ = 2;
> >  		bpp_ = 4;
> >  		break;
> > -	case DRM_FORMAT_BGRA8888:
> > +	case libcamera::formats::BGRA8888:
> >  		formatFamily_ = RGB;
> >  		r_pos_ = 1;
> >  		g_pos_ = 2;
> > @@ -109,28 +111,28 @@ int FormatConverter::configure(const libcamera::PixelFormat &format,
> >  		bpp_ = 4;
> >  		break;
> >  
> > -	case DRM_FORMAT_VYUY:
> > +	case libcamera::formats::VYUY:
> >  		formatFamily_ = YUV;
> >  		y_pos_ = 1;
> >  		cb_pos_ = 2;
> >  		break;
> > -	case DRM_FORMAT_YVYU:
> > +	case libcamera::formats::YVYU:
> >  		formatFamily_ = YUV;
> >  		y_pos_ = 0;
> >  		cb_pos_ = 3;
> >  		break;
> > -	case DRM_FORMAT_UYVY:
> > +	case libcamera::formats::UYVY:
> >  		formatFamily_ = YUV;
> >  		y_pos_ = 1;
> >  		cb_pos_ = 0;
> >  		break;
> > -	case DRM_FORMAT_YUYV:
> > +	case libcamera::formats::YUYV:
> >  		formatFamily_ = YUV;
> >  		y_pos_ = 0;
> >  		cb_pos_ = 1;
> >  		break;
> >  
> > -	case DRM_FORMAT_MJPEG:
> > +	case libcamera::formats::MJPEG:
> >  		formatFamily_ = MJPEG;
> >  		break;
> >  
> > diff --git a/src/qcam/viewfinder.cpp b/src/qcam/viewfinder.cpp
> > index 0d68f62ee6d7..ac83d7e6c397 100644
> > --- a/src/qcam/viewfinder.cpp
> > +++ b/src/qcam/viewfinder.cpp
> > @@ -17,18 +17,20 @@
> >  #include <QPainter>
> >  #include <QtDebug>
> >  
> > +#include <libcamera/formats.h>
> > +
> >  #include "format_converter.h"
> >  
> >  static const QMap<libcamera::PixelFormat, QImage::Format> nativeFormats
> >  {
> >  #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
> > -	{ libcamera::PixelFormat{ DRM_FORMAT_ABGR8888 }, QImage::Format_RGBA8888 },
> > +	{ libcamera::formats::ABGR8888, QImage::Format_RGBA8888 },
> >  #endif
> > -	{ libcamera::PixelFormat{ DRM_FORMAT_ARGB8888 }, QImage::Format_RGB32 },
> > +	{ libcamera::formats::ARGB8888, QImage::Format_RGB32 },
> >  #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
> > -	{ libcamera::PixelFormat{ DRM_FORMAT_BGR888 }, QImage::Format_BGR888 },
> > +	{ libcamera::formats::BGR888, QImage::Format_BGR888 },
> >  #endif
> > -	{ libcamera::PixelFormat{ DRM_FORMAT_RGB888 }, QImage::Format_RGB888 },
> > +	{ libcamera::formats::RGB888, QImage::Format_RGB888 },
> 
> Excepting the format swap necessary on BGR888/RGB888 in regards to the
> QImage formats, which has been identified after you created this patch:

I'll rebase this on top of the fix you've submitted, once you merge it.

> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> 
> >  };
> >  
> >  ViewFinder::ViewFinder(QWidget *parent)
Kieran Bingham May 28, 2020, 11:15 a.m. UTC | #3
Hi Laurent,


<snip>

On 28/05/2020 12:11, Laurent Pinchart wrote:
> Hi Kieran,
>>>  static const QMap<libcamera::PixelFormat, QImage::Format> nativeFormats
>>>  {
>>>  #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
>>> -	{ libcamera::PixelFormat{ DRM_FORMAT_ABGR8888 }, QImage::Format_RGBA8888 },
>>> +	{ libcamera::formats::ABGR8888, QImage::Format_RGBA8888 },
>>>  #endif
>>> -	{ libcamera::PixelFormat{ DRM_FORMAT_ARGB8888 }, QImage::Format_RGB32 },
>>> +	{ libcamera::formats::ARGB8888, QImage::Format_RGB32 },
>>>  #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
>>> -	{ libcamera::PixelFormat{ DRM_FORMAT_BGR888 }, QImage::Format_BGR888 },
>>> +	{ libcamera::formats::BGR888, QImage::Format_BGR888 },
>>>  #endif
>>> -	{ libcamera::PixelFormat{ DRM_FORMAT_RGB888 }, QImage::Format_RGB888 },
>>> +	{ libcamera::formats::RGB888, QImage::Format_RGB888 },
>>
>> Excepting the format swap necessary on BGR888/RGB888 in regards to the
>> QImage formats, which has been identified after you created this patch:
> 
> I'll rebase this on top of the fix you've submitted, once you merge it.

Well in that case, try a git fetch now ;-)

> 
>> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
>>
>>>  };
>>>  
>>>  ViewFinder::ViewFinder(QWidget *parent)
>

Patch

diff --git a/src/qcam/dng_writer.cpp b/src/qcam/dng_writer.cpp
index cbd8bed3e6d0..1aa2eaa9a501 100644
--- a/src/qcam/dng_writer.cpp
+++ b/src/qcam/dng_writer.cpp
@@ -14,6 +14,7 @@ 
 #include <tiffio.h>
 
 #include <libcamera/control_ids.h>
+#include <libcamera/formats.h>
 
 using namespace libcamera;
 
@@ -83,49 +84,49 @@  void thumbScanlineSBGGRxxP(const FormatInfo &info, void *output,
 }
 
 static const std::map<PixelFormat, FormatInfo> formatInfo = {
-	{ PixelFormat(DRM_FORMAT_SBGGR10, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SBGGR10_CSI2P, {
 		.bitsPerSample = 10,
 		.pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
 		.packScanline = packScanlineSBGGR10P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SGBRG10, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SGBRG10_CSI2P, {
 		.bitsPerSample = 10,
 		.pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
 		.packScanline = packScanlineSBGGR10P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SGRBG10, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SGRBG10_CSI2P, {
 		.bitsPerSample = 10,
 		.pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
 		.packScanline = packScanlineSBGGR10P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SRGGB10, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SRGGB10_CSI2P, {
 		.bitsPerSample = 10,
 		.pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
 		.packScanline = packScanlineSBGGR10P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SBGGR12, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SBGGR12_CSI2P, {
 		.bitsPerSample = 12,
 		.pattern = { CFAPatternBlue, CFAPatternGreen, CFAPatternGreen, CFAPatternRed },
 		.packScanline = packScanlineSBGGR12P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SGBRG12, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SGBRG12_CSI2P, {
 		.bitsPerSample = 12,
 		.pattern = { CFAPatternGreen, CFAPatternBlue, CFAPatternRed, CFAPatternGreen },
 		.packScanline = packScanlineSBGGR12P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SGRBG12, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SGRBG12_CSI2P, {
 		.bitsPerSample = 12,
 		.pattern = { CFAPatternGreen, CFAPatternRed, CFAPatternBlue, CFAPatternGreen },
 		.packScanline = packScanlineSBGGR12P,
 		.thumbScanline = thumbScanlineSBGGRxxP,
 	} },
-	{ PixelFormat(DRM_FORMAT_SRGGB12, MIPI_FORMAT_MOD_CSI2_PACKED), {
+	{ formats::SRGGB12_CSI2P, {
 		.bitsPerSample = 12,
 		.pattern = { CFAPatternRed, CFAPatternGreen, CFAPatternGreen, CFAPatternBlue },
 		.packScanline = packScanlineSBGGR12P,
diff --git a/src/qcam/format_converter.cpp b/src/qcam/format_converter.cpp
index bf887ad446eb..4b9722d4ecf7 100644
--- a/src/qcam/format_converter.cpp
+++ b/src/qcam/format_converter.cpp
@@ -11,6 +11,8 @@ 
 
 #include <QImage>
 
+#include <libcamera/formats.h>
+
 #define RGBSHIFT		8
 #ifndef MAX
 #define MAX(a,b)		((a)>(b)?(a):(b))
@@ -29,79 +31,79 @@  int FormatConverter::configure(const libcamera::PixelFormat &format,
 			       const QSize &size)
 {
 	switch (format) {
-	case DRM_FORMAT_NV12:
+	case libcamera::formats::NV12:
 		formatFamily_ = NV;
 		horzSubSample_ = 2;
 		vertSubSample_ = 2;
 		nvSwap_ = false;
 		break;
-	case DRM_FORMAT_NV21:
+	case libcamera::formats::NV21:
 		formatFamily_ = NV;
 		horzSubSample_ = 2;
 		vertSubSample_ = 2;
 		nvSwap_ = true;
 		break;
-	case DRM_FORMAT_NV16:
+	case libcamera::formats::NV16:
 		formatFamily_ = NV;
 		horzSubSample_ = 2;
 		vertSubSample_ = 1;
 		nvSwap_ = false;
 		break;
-	case DRM_FORMAT_NV61:
+	case libcamera::formats::NV61:
 		formatFamily_ = NV;
 		horzSubSample_ = 2;
 		vertSubSample_ = 1;
 		nvSwap_ = true;
 		break;
-	case DRM_FORMAT_NV24:
+	case libcamera::formats::NV24:
 		formatFamily_ = NV;
 		horzSubSample_ = 1;
 		vertSubSample_ = 1;
 		nvSwap_ = false;
 		break;
-	case DRM_FORMAT_NV42:
+	case libcamera::formats::NV42:
 		formatFamily_ = NV;
 		horzSubSample_ = 1;
 		vertSubSample_ = 1;
 		nvSwap_ = true;
 		break;
 
-	case DRM_FORMAT_RGB888:
+	case libcamera::formats::RGB888:
 		formatFamily_ = RGB;
 		r_pos_ = 2;
 		g_pos_ = 1;
 		b_pos_ = 0;
 		bpp_ = 3;
 		break;
-	case DRM_FORMAT_BGR888:
+	case libcamera::formats::BGR888:
 		formatFamily_ = RGB;
 		r_pos_ = 0;
 		g_pos_ = 1;
 		b_pos_ = 2;
 		bpp_ = 3;
 		break;
-	case DRM_FORMAT_ARGB8888:
+	case libcamera::formats::ARGB8888:
 		formatFamily_ = RGB;
 		r_pos_ = 2;
 		g_pos_ = 1;
 		b_pos_ = 0;
 		bpp_ = 4;
 		break;
-	case DRM_FORMAT_RGBA8888:
+	case libcamera::formats::RGBA8888:
 		formatFamily_ = RGB;
 		r_pos_ = 3;
 		g_pos_ = 2;
 		b_pos_ = 1;
 		bpp_ = 4;
 		break;
-	case DRM_FORMAT_ABGR8888:
+	case libcamera::formats::ABGR8888:
 		formatFamily_ = RGB;
 		r_pos_ = 0;
 		g_pos_ = 1;
 		b_pos_ = 2;
 		bpp_ = 4;
 		break;
-	case DRM_FORMAT_BGRA8888:
+	case libcamera::formats::BGRA8888:
 		formatFamily_ = RGB;
 		r_pos_ = 1;
 		g_pos_ = 2;
@@ -109,28 +111,28 @@  int FormatConverter::configure(const libcamera::PixelFormat &format,
 		bpp_ = 4;
 		break;
 
-	case DRM_FORMAT_VYUY:
+	case libcamera::formats::VYUY:
 		formatFamily_ = YUV;
 		y_pos_ = 1;
 		cb_pos_ = 2;
 		break;
-	case DRM_FORMAT_YVYU:
+	case libcamera::formats::YVYU:
 		formatFamily_ = YUV;
 		y_pos_ = 0;
 		cb_pos_ = 3;
 		break;
-	case DRM_FORMAT_UYVY:
+	case libcamera::formats::UYVY:
 		formatFamily_ = YUV;
 		y_pos_ = 1;
 		cb_pos_ = 0;
 		break;
-	case DRM_FORMAT_YUYV:
+	case libcamera::formats::YUYV:
 		formatFamily_ = YUV;
 		y_pos_ = 0;
 		cb_pos_ = 1;
 		break;
 
-	case DRM_FORMAT_MJPEG:
+	case libcamera::formats::MJPEG:
 		formatFamily_ = MJPEG;
 		break;
 
diff --git a/src/qcam/viewfinder.cpp b/src/qcam/viewfinder.cpp
index 0d68f62ee6d7..ac83d7e6c397 100644
--- a/src/qcam/viewfinder.cpp
+++ b/src/qcam/viewfinder.cpp
@@ -17,18 +17,20 @@ 
 #include <QPainter>
 #include <QtDebug>
 
+#include <libcamera/formats.h>
+
 #include "format_converter.h"
 
 static const QMap<libcamera::PixelFormat, QImage::Format> nativeFormats
 {
 #if QT_VERSION >= QT_VERSION_CHECK(5, 2, 0)
-	{ libcamera::PixelFormat{ DRM_FORMAT_ABGR8888 }, QImage::Format_RGBA8888 },
+	{ libcamera::formats::ABGR8888, QImage::Format_RGBA8888 },
 #endif
-	{ libcamera::PixelFormat{ DRM_FORMAT_ARGB8888 }, QImage::Format_RGB32 },
+	{ libcamera::formats::ARGB8888, QImage::Format_RGB32 },
 #if QT_VERSION >= QT_VERSION_CHECK(5, 14, 0)
-	{ libcamera::PixelFormat{ DRM_FORMAT_BGR888 }, QImage::Format_BGR888 },
+	{ libcamera::formats::BGR888, QImage::Format_BGR888 },
 #endif
-	{ libcamera::PixelFormat{ DRM_FORMAT_RGB888 }, QImage::Format_RGB888 },
+	{ libcamera::formats::RGB888, QImage::Format_RGB888 },
 };
 
 ViewFinder::ViewFinder(QWidget *parent)