summaryrefslogtreecommitdiff
path: root/kms++/src/pixelformats.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'kms++/src/pixelformats.cpp')
-rw-r--r--kms++/src/pixelformats.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/kms++/src/pixelformats.cpp b/kms++/src/pixelformats.cpp
new file mode 100644
index 0000000..f2b1137
--- /dev/null
+++ b/kms++/src/pixelformats.cpp
@@ -0,0 +1,32 @@
+#include <map>
+
+#include <kms++/pixelformats.h>
+
+using namespace std;
+
+namespace kms
+{
+static const map<PixelFormat, PixelFormatInfo> format_info_array = {
+ /* YUV packed */
+ { PixelFormat::UYVY, { 1, { { 16, 2, 1 } }, } },
+ { PixelFormat::YUYV, { 1, { { 16, 2, 1 } }, } },
+ { PixelFormat::YVYU, { 1, { { 16, 2, 1 } }, } },
+ { PixelFormat::VYUY, { 1, { { 16, 2, 1 } }, } },
+ /* YUV semi-planar */
+ { PixelFormat::NV12, { 2, { { 8, 1, 1, }, { 8, 2, 2 } }, } },
+ { PixelFormat::NV21, { 2, { { 8, 1, 1, }, { 8, 2, 2 } }, } },
+ /* RGB16 */
+ { PixelFormat::RGB565, { 1, { { 16, 1, 1 } }, } },
+ /* RGB32 */
+ { PixelFormat::XRGB8888, { 1, { { 32, 1, 1 } }, } },
+ { PixelFormat::XBGR8888, { 1, { { 32, 1, 1 } }, } },
+ { PixelFormat::ARGB8888, { 1, { { 32, 1, 1 } }, } },
+ { PixelFormat::ABGR8888, { 1, { { 32, 1, 1 } }, } },
+};
+
+const struct PixelFormatInfo& get_pixel_format_info(PixelFormat format)
+{
+ return format_info_array.at(format);
+}
+
+}