summaryrefslogtreecommitdiff
path: root/src/i965_fourcc.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/i965_fourcc.h')
-rw-r--r--src/i965_fourcc.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/src/i965_fourcc.h b/src/i965_fourcc.h
new file mode 100644
index 0000000..3a9f120
--- /dev/null
+++ b/src/i965_fourcc.h
@@ -0,0 +1,68 @@
+#ifndef _I965_FOURCC_H_
+#define _I965_FOURCC_H_
+
+#ifndef VA_FOURCC_YV16
+#define VA_FOURCC_YV16 VA_FOURCC('Y','V','1','6')
+#endif
+
+#ifndef VA_FOURCC_I420
+#define VA_FOURCC_I420 VA_FOURCC('I','4','2','0')
+#endif
+
+/*
+ * VA_FOURCC_IA44 is an exception because the va.h already
+ * defines the AI44 as VA_FOURCC('I', 'A', '4', '4').
+ */
+#ifndef VA_FOURCC_IA44
+#define VA_FOURCC_IA44 VA_FOURCC('A','I','4','4')
+#endif
+
+#ifndef VA_FOURCC_IA88
+#define VA_FOURCC_IA88 VA_FOURCC('I','A','8','8')
+#endif
+
+#ifndef VA_FOURCC_AI88
+#define VA_FOURCC_AI88 VA_FOURCC('A','I','8','8')
+#endif
+
+#ifndef VA_FOURCC_IMC1
+#define VA_FOURCC_IMC1 VA_FOURCC('I','M','C','1')
+#endif
+
+#ifndef VA_FOURCC_YVY2
+#define VA_FOURCC_YVY2 VA_FOURCC('Y','V','Y','2')
+#endif
+
+#define I965_MAX_PLANES 4
+#define I965_MAX_COMONENTS 4
+
+#define I965_COLOR_YUV 0
+#define I965_COLOR_RGB 1
+#define I965_COLOR_INDEX 2
+
+typedef struct {
+ uint8_t plane; /* the plane which the pixel belongs to */
+ uint8_t offset; /* bits offset within a pixel in the plane */
+} i965_component_info;
+
+typedef struct {
+ uint32_t fourcc; /* fourcc */
+ uint32_t format; /* 0: YUV, 1: RGB, 2: Indexed format */
+ uint32_t subsampling; /* Sub sampling */
+ uint8_t flag; /* 1: only supported by vaCreateSurfaces(), 2: only supported by vaCreateImage(), 3: both */
+ uint8_t hfactor; /* horizontal sampling factor */
+ uint8_t vfactor; /* vertical sampling factor */
+ uint8_t num_planes; /* number of planes */
+ uint8_t bpp[I965_MAX_PLANES]; /* bits per pixel within a plane */
+ uint8_t num_components; /* number of components */
+ /*
+ * Components in the array are ordered in Y, U, V, A (up to 4 components)
+ * for YUV formats, R, G, B, A (up to 4 components) for RGB formats and
+ * I, A (2 components) for indexed formats
+ */
+ i965_component_info components[I965_MAX_COMONENTS];
+} i965_fourcc_info;
+
+extern const i965_fourcc_info *get_fourcc_info(unsigned int);
+
+#endif /* _I965_FOURCC_H_ */