Try YV12 & I420 image formats too.
authorgb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 18 Mar 2010 13:08:17 +0000 (13:08 +0000)
committergb <gb@5584edef-b1fe-4b99-b61b-dd2bab72e969>
Thu, 18 Mar 2010 13:08:17 +0000 (13:08 +0000)
tests/test-windows.c

index 745208b..1e3ca49 100644 (file)
@@ -174,8 +174,17 @@ main(int argc, char *argv[])
     GstVaapiDisplay *display;
     GstVaapiWindow  *window;
     GstVaapiSurface *surface;
-    GstVaapiImage   *image;
+    GstVaapiImage   *image = NULL;
+    GstVaapiImageFormat format;
     guint flags = GST_VAAPI_PICTURE_STRUCTURE_FRAME;
+    guint i;
+
+    static const GstVaapiImageFormat image_formats[] = {
+        GST_VAAPI_IMAGE_NV12,
+        GST_VAAPI_IMAGE_YV12,
+        GST_VAAPI_IMAGE_I420,
+        0
+    };
 
     static const GstVaapiChromaType chroma_type = GST_VAAPI_CHROMA_TYPE_YUV420;
     static const guint              width       = 320;
@@ -193,14 +202,22 @@ main(int argc, char *argv[])
     if (!surface)
         g_error("could not create Gst/VA surface");
 
-    image = gst_vaapi_image_new(display, GST_VAAPI_IMAGE_NV12, width, height);
+    for (i = 0; image_formats[i]; i++) {
+        image = gst_vaapi_image_new(display, image_formats[i], width, height);
+        if (image) {
+            format = image_formats[i];
+            break;
+        }
+    }
     if (!image)
         g_error("could not create Gst/VA image");
+
     if (!draw_rgb_rects(image))
         g_error("could not draw RGB rectangles");
 
     if (!gst_vaapi_surface_put_image(surface, image))
         g_error("could not upload image");
+
     if (!gst_vaapi_surface_sync(surface))
         g_error("could not complete image upload");