[libcamera-devel] [PATCH] qcam: format_convertor: Extend 32 bit ARGB format combinations
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed Feb 26 02:41:47 CET 2020
Hi Kieran,
Thank you for the patch.
On Mon, Feb 24, 2020 at 01:08:55PM +0000, Kieran Bingham wrote:
> Add further support to the pixel format convertor to allow ARGB, RGBA,
> and ABGR formats to be displayed in qcam.
>
> Blank lines are added between the sections for NV, RGB, YUV, and MJPEG
> configurations.
>
> The implementation of the RGB conversions are highly inefficient, and
> where possible should be extended to use hardware accellerations such as
s/accellerations/accelerations/
> OpenGL, or in the event that the input format is identical (or
> compatible) with the output format - a more optimised memcpy should be
> implemented.
>
> Signed-off-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> src/qcam/format_converter.cpp | 25 +++++++++++++++++++++++++
> 1 file changed, 25 insertions(+)
>
> diff --git a/src/qcam/format_converter.cpp b/src/qcam/format_converter.cpp
> index 383d48223140..4604143419dd 100644
> --- a/src/qcam/format_converter.cpp
> +++ b/src/qcam/format_converter.cpp
> @@ -67,6 +67,7 @@ int FormatConverter::configure(unsigned int format, unsigned int width,
> vertSubSample_ = 1;
> nvSwap_ = true;
> break;
> +
> case DRM_FORMAT_RGB888:
> formatFamily_ = RGB;
> r_pos_ = 2;
> @@ -81,6 +82,27 @@ int FormatConverter::configure(unsigned int format, unsigned int width,
> b_pos_ = 2;
> bpp_ = 3;
> break;
> + case DRM_FORMAT_ARGB8888:
> + formatFamily_ = RGB;
> + r_pos_ = 2;
> + g_pos_ = 1;
> + b_pos_ = 0;
> + bpp_ = 4;
> + break;
> + case DRM_FORMAT_RGBA8888:
> + formatFamily_ = RGB;
> + r_pos_ = 3;
> + g_pos_ = 2;
> + b_pos_ = 1;
> + bpp_ = 4;
> + break;
> + case DRM_FORMAT_ABGR8888:
> + formatFamily_ = RGB;
> + r_pos_ = 0;
> + g_pos_ = 1;
> + b_pos_ = 2;
> + bpp_ = 4;
> + break;
> case DRM_FORMAT_BGRA8888:
> formatFamily_ = RGB;
> r_pos_ = 1;
> @@ -88,6 +110,7 @@ int FormatConverter::configure(unsigned int format, unsigned int width,
> b_pos_ = 3;
> bpp_ = 4;
> break;
> +
> case DRM_FORMAT_VYUY:
> formatFamily_ = YUV;
> y_pos_ = 1;
> @@ -108,9 +131,11 @@ int FormatConverter::configure(unsigned int format, unsigned int width,
> y_pos_ = 0;
> cb_pos_ = 1;
> break;
> +
> case DRM_FORMAT_MJPEG:
> formatFamily_ = MJPEG;
> break;
> +
> default:
> return -EINVAL;
> };
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list