vaapivideobufferpool: force video meta if sizes are different
authorU. Artie Eoff <ullysses.a.eoff@intel.com>
Thu, 5 Mar 2020 21:22:23 +0000 (13:22 -0800)
committerGStreamer Merge Bot <gitlab-merge-bot@gstreamer-foundation.org>
Fri, 6 Mar 2020 12:08:44 +0000 (12:08 +0000)
The strides and offsets could be the same, but the allocation
size might be different (e.g. alignment).  Thus, ensure we also
set the flag to copy from VA memory to system memory when alloc
size differs.

Fixes #243

gst/vaapi/gstvaapivideobufferpool.c

index 082cf91..2de92ea 100644 (file)
@@ -250,7 +250,9 @@ gst_vaapi_video_buffer_pool_set_config (GstBufferPool * pool,
       if (GST_VIDEO_INFO_PLANE_OFFSET (&new_allocation_vinfo, i) !=
           GST_VIDEO_INFO_PLANE_OFFSET (&priv->vmeta_vinfo, i) ||
           GST_VIDEO_INFO_PLANE_STRIDE (&new_allocation_vinfo, i) !=
-          GST_VIDEO_INFO_PLANE_STRIDE (&priv->vmeta_vinfo, i)) {
+          GST_VIDEO_INFO_PLANE_STRIDE (&priv->vmeta_vinfo, i) ||
+          GST_VIDEO_INFO_SIZE (&new_allocation_vinfo) !=
+          GST_VIDEO_INFO_SIZE (&priv->vmeta_vinfo)) {
         priv->options |= GST_VAAPI_VIDEO_BUFFER_POOL_OPTION_VIDEO_META;
         priv->forced_video_meta = TRUE;
         GST_INFO_OBJECT (base_pool, "adding unrequested video meta");