summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKieran Bingham <kieran.bingham@ideasonboard.com>2020-02-21 10:03:57 +0000
committerKieran Bingham <kieran.bingham@ideasonboard.com>2020-03-16 15:21:15 +0000
commit32ccaf458f1137b717c5a66c77d3e7dede9aa7a2 (patch)
tree50c8736194afde2791a6dd9802944a09c1dd0e11
parent4de31ccc9ef47e7b16330d226d071d5d006faa6d (diff)
qcam: format_convertor: Extend 32 bit ARGB format combinations
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 accelerations such as 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@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/qcam/format_converter.cpp25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/qcam/format_converter.cpp b/src/qcam/format_converter.cpp
index 383d4822..46041434 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;
};