/** * gst_vaapi_display_x11_get_display: * @display: a #GstVaapiDisplayX11 * * Returns the underlying X11 #Display that was created by * gst_vaapi_display_x11_new() or that was bound from * gst_vaapi_display_x11_new_with_display(). * * Return value: the X11 #Display attached to @display */ Display * gst_vaapi_display_x11_get_display (GstVaapiDisplayX11 * display) { g_return_val_if_fail (GST_VAAPI_IS_DISPLAY_X11 (display), NULL); return GST_VAAPI_DISPLAY_XDISPLAY (display); }
static gboolean ensure_pix_fmts (GstVaapiDisplayX11 * display) { GstVaapiDisplayX11Private *const priv = GST_VAAPI_DISPLAY_X11_PRIVATE (display); XPixmapFormatValues *pix_fmts; int i, n, num_pix_fmts; if (priv->pixmap_formats) return TRUE; GST_VAAPI_DISPLAY_LOCK (display); pix_fmts = XListPixmapFormats (GST_VAAPI_DISPLAY_XDISPLAY (display), &num_pix_fmts); GST_VAAPI_DISPLAY_UNLOCK (display); if (!pix_fmts) return FALSE; priv->pixmap_formats = g_array_sized_new (FALSE, FALSE, sizeof (GstVaapiPixmapFormatX11), num_pix_fmts); if (!priv->pixmap_formats) { XFree (pix_fmts); return FALSE; } for (i = 0, n = 0; i < num_pix_fmts; i++) { GstVaapiPixmapFormatX11 *const pix_fmt = &g_array_index (priv->pixmap_formats, GstVaapiPixmapFormatX11, n); pix_fmt->depth = pix_fmts[i].depth; pix_fmt->bpp = pix_fmts[i].bits_per_pixel; pix_fmt->format = pix_fmt_to_video_format (pix_fmt->depth, pix_fmt->bpp); if (pix_fmt->format != GST_VIDEO_FORMAT_UNKNOWN) n++; } priv->pixmap_formats->len = n; return TRUE; }
static VADisplay gst_vaapi_display_x11_get_va_display(GstVaapiDisplay *display) { return vaGetDisplay(GST_VAAPI_DISPLAY_XDISPLAY(display)); }