+#define GST_VAAPI_PAD_PRIVATE(pad) \
+ (GST_VAAPI_PLUGIN_BASE_GET_CLASS(plugin)->get_vaapi_pad_private(plugin, pad))
+
+GstVaapiPadPrivate *
+gst_vaapi_pad_private_new (void)
+{
+ GstVaapiPadPrivate *priv = g_new0 (GstVaapiPadPrivate, 1);
+
+ gst_video_info_init (&priv->info);
+
+ return priv;
+}
+
+void
+gst_vaapi_pad_private_reset (GstVaapiPadPrivate * priv)
+{
+ g_assert (priv);
+
+ gst_caps_replace (&priv->caps, NULL);
+ gst_video_info_init (&priv->info);
+
+ g_clear_object (&priv->buffer_pool);
+ g_clear_object (&priv->allocator);
+
+ priv->buffer_size = 0;
+ priv->caps_is_raw = FALSE;
+
+ g_clear_object (&priv->other_allocator);
+ priv->can_dmabuf = FALSE;
+}
+
+void
+gst_vaapi_pad_private_finalize (GstVaapiPadPrivate * priv)
+{
+ gst_vaapi_pad_private_reset (priv);
+ g_free (priv);
+}
+