vaapivideomemory: fix determination of the surface pool format.
authorSreerenj Balachandran <sreerenj.balachandran@intel.com>
Thu, 3 Jul 2014 15:41:11 +0000 (18:41 +0300)
committerGwenole Beauchesne <gwenole.beauchesne@intel.com>
Wed, 23 Jul 2014 16:48:32 +0000 (18:48 +0200)
While creating the vaapi video allocator, make sure the associated
surface pool has correct format instead of defaulting to NV12 video
format even though there is no direct rendering support.

https://bugzilla.gnome.org/show_bug.cgi?id=732691

gst/vaapi/gstvaapivideomemory.c

index 0400fefb952fa3b5c606e35e57caf5f4edee8655..9c0b5b92b038922f7051cb5c76c7a406fbbcdc7b 100644 (file)
@@ -515,12 +515,12 @@ gst_vaapi_video_allocator_new(GstVaapiDisplay *display, const GstVideoInfo *vip)
             image = gst_vaapi_surface_derive_image(surface);
             if (!image)
                 break;
-            if (GST_VAAPI_IMAGE_FORMAT(image) != GST_VIDEO_INFO_FORMAT(vip))
-                break;
             if (!gst_vaapi_image_map(image))
                 break;
             allocator->has_direct_rendering = gst_video_info_update_from_image(
                 &allocator->surface_info, image);
+            if (GST_VAAPI_IMAGE_FORMAT(image) != GST_VIDEO_INFO_FORMAT(vip))
+               allocator->has_direct_rendering = FALSE;
             gst_vaapi_image_unmap(image);
             GST_INFO("has direct-rendering for %s surfaces: %s",
                      GST_VIDEO_INFO_FORMAT_STRING(&allocator->surface_info),