]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - android/external-libkmsxx.git/blobdiff - kms++/inc/kms++/pixelformats.h
Merge commit 'e0067bdc75566629c9143818c8f3970c16c8825e'
[android/external-libkmsxx.git] / kms++ / inc / kms++ / pixelformats.h
diff --git a/kms++/inc/kms++/pixelformats.h b/kms++/inc/kms++/pixelformats.h
new file mode 100644 (file)
index 0000000..6392de1
--- /dev/null
@@ -0,0 +1,67 @@
+#pragma once
+
+#include <cstdint>
+#include <string>
+
+namespace kms
+{
+constexpr uint32_t MakeFourCC(const char *fourcc)
+{
+       return fourcc[0] | (fourcc[1] << 8) | (fourcc[2] << 16) | (fourcc[3] << 24);
+}
+
+enum class PixelFormat : uint32_t
+{
+       Undefined = 0,
+
+       NV12 = MakeFourCC("NV12"),
+       NV21 = MakeFourCC("NV21"),
+
+       UYVY = MakeFourCC("UYVY"),
+       YUYV = MakeFourCC("YUYV"),
+       YVYU = MakeFourCC("YVYU"),
+       VYUY = MakeFourCC("VYUY"),
+
+       XRGB8888 = MakeFourCC("XR24"),
+       XBGR8888 = MakeFourCC("XB24"),
+       ARGB8888 = MakeFourCC("AR24"),
+       ABGR8888 = MakeFourCC("AB24"),
+
+       RGB888 = MakeFourCC("RG24"),
+       BGR888 = MakeFourCC("BG24"),
+
+       RGB565 = MakeFourCC("RG16"),
+       BGR565 = MakeFourCC("BG16"),
+};
+
+static inline PixelFormat FourCCToPixelFormat(const std::string& fourcc)
+{
+       return (PixelFormat)MakeFourCC(fourcc.c_str());
+}
+
+static inline std::string PixelFormatToFourCC(PixelFormat f)
+{
+       char buf[5] = { (char)(((int)f >> 0) & 0xff),
+                       (char)(((int)f >> 8) & 0xff),
+                       (char)(((int)f >> 16) & 0xff),
+                       (char)(((int)f >> 24) & 0xff),
+                       0 };
+       return std::string(buf);
+}
+
+struct PixelFormatPlaneInfo
+{
+       uint8_t bitspp;
+       uint8_t xsub;
+       uint8_t ysub;
+};
+
+struct PixelFormatInfo
+{
+       uint8_t num_planes;
+       struct PixelFormatPlaneInfo planes[4];
+};
+
+const struct PixelFormatInfo& get_pixel_format_info(PixelFormat format);
+
+}