summaryrefslogtreecommitdiff
path: root/v4l2++/src/pixelformats.cpp
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>2022-10-04 10:09:53 +0300
committerTomi Valkeinen <tomi.valkeinen@ideasonboard.com>2022-10-04 11:02:45 +0300
commitdfa9e526a43086a1b0936b74ec243f23396d5f69 (patch)
tree6eb3f9dad18d4a6754a5d6722f30d82cb234c2a7 /v4l2++/src/pixelformats.cpp
parent1bba3eca5ddbfa8fb7ed05994207b1c329ab58ee (diff)
v4l2: add DRMFourCCToPixelFormat
Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
Diffstat (limited to 'v4l2++/src/pixelformats.cpp')
-rw-r--r--v4l2++/src/pixelformats.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/v4l2++/src/pixelformats.cpp b/v4l2++/src/pixelformats.cpp
index 1c8453f..b7ecc7b 100644
--- a/v4l2++/src/pixelformats.cpp
+++ b/v4l2++/src/pixelformats.cpp
@@ -290,10 +290,23 @@ static const map<PixelFormat, PixelFormatInfo> format_info_array = {
} },
};
+PixelFormat DRMFourCCToPixelFormat(const std::string& fourcc)
+{
+ // Handle the formats which differ between DRM and V4L2
+ if (fourcc == "RG16")
+ return PixelFormat::RGB565;
+ if (fourcc == "XR24")
+ return PixelFormat::XRGB8888;
+ if (fourcc == "RG24")
+ return PixelFormat::RGB888;
+
+ return FourCCToPixelFormat(fourcc);
+}
+
const struct PixelFormatInfo& get_pixel_format_info(PixelFormat format)
{
if (!format_info_array.count(format))
- throw invalid_argument("get_pixel_format_info: Unsupported pixelformat");
+ throw invalid_argument("v4l2: get_pixel_format_info: Unsupported pixelformat");
return format_info_array.at(format);
}