+
+/**
+ * gst_vaapi_subpicture_get_global_alpha:
+ * @subpicture: a #GstVaapiSubpicture
+ *
+ * Returns the value of global_alpha, set for this @subpicture.
+ *
+ * Return value: the global_alpha value of this @subpicture
+ */
+gfloat
+gst_vaapi_subpicture_get_global_alpha(GstVaapiSubpicture *subpicture)
+{
+ g_return_val_if_fail(GST_VAAPI_IS_SUBPICTURE(subpicture), 1.0);
+
+ return subpicture->priv->global_alpha;
+}
+
+/**
+ * gst_vaapi_subpicture_set_global_alpha:
+ * @subpicture: a #GstVaapiSubpicture
+ * @global_alpha: value for global-alpha (range: 0.0 to 1.0, inclusive)
+ *
+ * Sets the global_alpha value of @subpicture. This function calls
+ * vaSetSubpictureGlobalAlpha() if the format of @subpicture, i.e.
+ * the current VA driver supports it.
+ *
+ * Return value: %TRUE if global_alpha could be set, %FALSE otherwise
+ */
+gboolean
+gst_vaapi_subpicture_set_global_alpha(GstVaapiSubpicture *subpicture,
+ gfloat global_alpha)
+{
+ GstVaapiSubpicturePrivate *priv;
+ GstVaapiDisplay *display;
+ VAStatus status;
+
+ g_return_val_if_fail(GST_VAAPI_IS_SUBPICTURE(subpicture), FALSE);
+
+ priv = subpicture->priv;
+
+ if (!(priv->flags & GST_VAAPI_SUBPICTURE_FLAG_GLOBAL_ALPHA))
+ return FALSE;
+
+ if (priv->global_alpha == global_alpha)
+ return TRUE;
+
+ display = GST_VAAPI_OBJECT_DISPLAY(subpicture);
+
+ GST_VAAPI_DISPLAY_LOCK(display);
+ status = vaSetSubpictureGlobalAlpha(
+ GST_VAAPI_DISPLAY_VADISPLAY(display),
+ GST_VAAPI_OBJECT_ID(subpicture),
+ global_alpha
+ );
+ GST_VAAPI_DISPLAY_UNLOCK(display);
+ if (!vaapi_check_status(status, "vaSetSubpictureGlobalAlpha()"))
+ return FALSE;
+
+ priv->global_alpha = global_alpha;
+ return TRUE;
+}