summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGwenole Beauchesne <gbeauchesne@splitted-desktop.com>2009-11-04 13:01:44 +0000
committerXiang, Haihao <haihao.xiang@intel.com>2010-07-12 13:26:10 +0800
commit835603e68e1b5c9a2fc1805bcc380b7d98185037 (patch)
treefa010375bfd997e1dac8880edcf659782556538b
parent4119b70ed61e10aa51ad57161a19204597e3d47c (diff)
downloadlibva-835603e68e1b5c9a2fc1805bcc380b7d98185037.tar.gz
Add YV12 image format.
-rw-r--r--i965_drv_video/i965_drv_video.c32
-rw-r--r--i965_drv_video/i965_drv_video.h2
2 files changed, 32 insertions, 2 deletions
diff --git a/i965_drv_video/i965_drv_video.c b/i965_drv_video/i965_drv_video.c
index 688d41b..36963d8 100644
--- a/i965_drv_video/i965_drv_video.c
+++ b/i965_drv_video/i965_drv_video.c
@@ -54,6 +54,18 @@ enum {
I965_SURFACETYPE_INDEXED
};
+/* List of supported image formats */
+typedef struct {
+ unsigned int type;
+ VAImageFormat va_format;
+} i965_image_format_map_t;
+
+static const i965_image_format_map_t
+i965_image_formats_map[I965_MAX_IMAGE_FORMATS + 1] = {
+ { I965_SURFACETYPE_YUV,
+ { VA_FOURCC('Y','V','1','2'), VA_LSB_FIRST, 12, } },
+};
+
/* List of supported subpicture formats */
typedef struct {
unsigned int type;
@@ -419,8 +431,16 @@ i965_QueryImageFormats(VADriverContextP ctx,
VAImageFormat *format_list, /* out */
int *num_formats) /* out */
{
+ int n;
+
+ for (n = 0; i965_image_formats_map[n].va_format.fourcc != 0; n++) {
+ const i965_image_format_map_t * const m = &i965_image_formats_map[n];
+ if (format_list)
+ format_list[n] = m->va_format;
+ }
+
if (num_formats)
- *num_formats = 0;
+ *num_formats = n;
return VA_STATUS_SUCCESS;
}
@@ -1320,6 +1340,16 @@ i965_CreateImage(VADriverContextP ctx,
image->offsets[0] = 0;
image->data_size = image->offsets[0] + image->pitches[0] * height;
break;
+ case VA_FOURCC('Y','V','1','2'):
+ image->num_planes = 3;
+ image->pitches[0] = width;
+ image->offsets[0] = 0;
+ image->pitches[1] = width2;
+ image->offsets[1] = size + size2;
+ image->pitches[2] = width2;
+ image->offsets[2] = size;
+ image->data_size = size + 2 * size2;
+ break;
default:
goto error;
}
diff --git a/i965_drv_video/i965_drv_video.h b/i965_drv_video/i965_drv_video.h
index 22a1650..41060d1 100644
--- a/i965_drv_video/i965_drv_video.h
+++ b/i965_drv_video/i965_drv_video.h
@@ -43,7 +43,7 @@
#define I965_MAX_PROFILES 11
#define I965_MAX_ENTRYPOINTS 5
#define I965_MAX_CONFIG_ATTRIBUTES 10
-#define I965_MAX_IMAGE_FORMATS 10
+#define I965_MAX_IMAGE_FORMATS 1
#define I965_MAX_SUBPIC_FORMATS 4
#define I965_MAX_DISPLAY_ATTRIBUTES 4
#define I965_STR_VENDOR "i965 Driver 0.1"