}
static void
+gst_vaapi_display_ensure_screen_resolution (GstVaapiDisplay * display)
+{
+ GstVaapiDisplayPrivate *const priv = GST_VAAPI_DISPLAY_GET_PRIVATE (display);
+ const GstVaapiDisplayClass *const klass =
+ GST_VAAPI_DISPLAY_GET_CLASS (display);
+
+ if (priv->got_scrres)
+ return;
+
+ if (klass->get_size)
+ klass->get_size (display, &priv->width, &priv->height);
+ if (klass->get_size_mm)
+ klass->get_size_mm (display, &priv->width_mm, &priv->height_mm);
+
+ gst_vaapi_display_calculate_pixel_aspect_ratio (display);
+ priv->got_scrres = TRUE;
+}
+
+static void
gst_vaapi_display_destroy (GstVaapiDisplay * display)
{
GstVaapiDisplayPrivate *const priv = GST_VAAPI_DISPLAY_GET_PRIVATE (display);
return FALSE;
priv->display = info.va_display;
priv->native_display = info.native_display;
- if (klass->get_size)
- klass->get_size (display, &priv->width, &priv->height);
- if (klass->get_size_mm)
- klass->get_size_mm (display, &priv->width_mm, &priv->height_mm);
- gst_vaapi_display_calculate_pixel_aspect_ratio (display);
break;
}
if (!priv->display)
{
g_return_val_if_fail (display != NULL, 0);
+ gst_vaapi_display_ensure_screen_resolution (display);
+
return GST_VAAPI_DISPLAY_GET_PRIVATE (display)->width;
}
{
g_return_val_if_fail (display != NULL, 0);
+ gst_vaapi_display_ensure_screen_resolution (display);
+
return GST_VAAPI_DISPLAY_GET_PRIVATE (display)->height;
}
{
g_return_if_fail (GST_VAAPI_DISPLAY (display));
+ gst_vaapi_display_ensure_screen_resolution (display);
+
if (pwidth)
*pwidth = GST_VAAPI_DISPLAY_GET_PRIVATE (display)->width;
{
g_return_if_fail (display != NULL);
+ gst_vaapi_display_ensure_screen_resolution (display);
+
if (par_n)
*par_n = GST_VAAPI_DISPLAY_GET_PRIVATE (display)->par_n;