static inline const GstVaapiDisplayClass * gst_vaapi_display_glx_class (void) { static GstVaapiDisplayGLXClass g_class; static gsize g_class_init = FALSE; if (g_once_init_enter (&g_class_init)) { gst_vaapi_display_glx_class_init (&g_class); g_once_init_leave (&g_class_init, TRUE); } return GST_VAAPI_DISPLAY_CLASS (&g_class); }
static void gst_vaapi_display_glx_class_init (GstVaapiDisplayGLXClass * klass) { GObjectClass *const object_class = G_OBJECT_CLASS (klass); GstVaapiDisplayClass *const dpy_class = GST_VAAPI_DISPLAY_CLASS (klass); object_class->finalize = gst_vaapi_display_glx_finalize; dpy_class->display_type = GST_VAAPI_DISPLAY_TYPE_GLX; dpy_class->create_window = gst_vaapi_display_glx_create_window; dpy_class->create_texture = gst_vaapi_display_glx_create_texture; dpy_class->get_texture_map = gst_vaapi_display_glx_get_texture_map; }
static void gst_vaapi_display_glx_class_init (GstVaapiDisplayGLXClass * klass) { GstVaapiMiniObjectClass *const object_class = GST_VAAPI_MINI_OBJECT_CLASS (klass); GstVaapiDisplayClass *const dpy_class = GST_VAAPI_DISPLAY_CLASS (klass); gst_vaapi_display_x11_class_init (&klass->parent_class); object_class->size = sizeof (GstVaapiDisplayGLX); dpy_class->display_type = GST_VAAPI_DISPLAY_TYPE_GLX; dpy_class->create_window = gst_vaapi_display_glx_create_window; dpy_class->create_texture = gst_vaapi_display_glx_create_texture; }
void gst_vaapi_display_x11_class_init (GstVaapiDisplayX11Class * klass) { GstVaapiDisplayClass *const dpy_class = GST_VAAPI_DISPLAY_CLASS (klass); dpy_class->display_type = GST_VAAPI_DISPLAY_TYPE_X11; dpy_class->bind_display = gst_vaapi_display_x11_bind_display; dpy_class->open_display = gst_vaapi_display_x11_open_display; dpy_class->close_display = gst_vaapi_display_x11_close_display; dpy_class->sync = gst_vaapi_display_x11_sync; dpy_class->flush = gst_vaapi_display_x11_flush; dpy_class->get_display = gst_vaapi_display_x11_get_display_info; dpy_class->get_size = gst_vaapi_display_x11_get_size; dpy_class->get_size_mm = gst_vaapi_display_x11_get_size_mm; dpy_class->create_window = gst_vaapi_display_x11_create_window; }
static void gst_vaapi_display_egl_class_init (GstVaapiDisplayEGLClass * klass) { GObjectClass *const object_class = G_OBJECT_CLASS (klass); GstVaapiDisplayClass *const dpy_class = GST_VAAPI_DISPLAY_CLASS (klass); object_class->finalize = gst_vaapi_display_egl_finalize; dpy_class->display_type = GST_VAAPI_DISPLAY_TYPE_EGL; dpy_class->bind_display = gst_vaapi_display_egl_bind_display; dpy_class->close_display = gst_vaapi_display_egl_close_display; dpy_class->lock = gst_vaapi_display_egl_lock; dpy_class->unlock = gst_vaapi_display_egl_unlock; dpy_class->sync = gst_vaapi_display_egl_sync; dpy_class->flush = gst_vaapi_display_egl_flush; dpy_class->get_display = gst_vaapi_display_egl_get_display_info; dpy_class->get_size = gst_vaapi_display_egl_get_size; dpy_class->get_size_mm = gst_vaapi_display_egl_get_size_mm; dpy_class->get_visual_id = gst_vaapi_display_egl_get_visual_id; dpy_class->create_window = gst_vaapi_display_egl_create_window; dpy_class->create_texture = gst_vaapi_display_egl_create_texture; dpy_class->get_texture_map = gst_vaapi_display_egl_get_texture_map; }
static void gst_vaapi_display_x11_class_init(GstVaapiDisplayX11Class *klass) { GObjectClass * const object_class = G_OBJECT_CLASS(klass); GstVaapiDisplayClass * const dpy_class = GST_VAAPI_DISPLAY_CLASS(klass); g_type_class_add_private(klass, sizeof(GstVaapiDisplayX11Private)); object_class->finalize = gst_vaapi_display_x11_finalize; object_class->set_property = gst_vaapi_display_x11_set_property; object_class->get_property = gst_vaapi_display_x11_get_property; object_class->constructed = gst_vaapi_display_x11_constructed; dpy_class->open_display = gst_vaapi_display_x11_open_display; dpy_class->close_display = gst_vaapi_display_x11_close_display; dpy_class->sync = gst_vaapi_display_x11_sync; dpy_class->flush = gst_vaapi_display_x11_flush; dpy_class->get_display = gst_vaapi_display_x11_get_va_display; dpy_class->get_size = gst_vaapi_display_x11_get_size; dpy_class->get_size_mm = gst_vaapi_display_x11_get_size_mm; /** * GstVaapiDisplayX11:synchronous: * * When enabled, runs the X display in synchronous mode. Note that * this is used only for debugging. */ g_object_class_install_property (object_class, PROP_SYNCHRONOUS, g_param_spec_boolean("synchronous", "Synchronous mode", "Toggles X display synchronous mode", FALSE, G_PARAM_READWRITE)); /** * GstVaapiDisplayX11:x11-display: * * The X11 #Display that was created by gst_vaapi_display_x11_new() * or that was bound from gst_vaapi_display_x11_new_with_display(). */ g_object_class_install_property (object_class, PROP_X11_DISPLAY, g_param_spec_pointer("x11-display", "X11 display", "X11 display", G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); /** * GstVaapiDisplayX11:x11-screen: * * The X11 screen that was created by gst_vaapi_display_x11_new() * or that was bound from gst_vaapi_display_x11_new_with_display(). */ g_object_class_install_property (object_class, PROP_X11_SCREEN, g_param_spec_int("x11-screen", "X11 screen", "X11 screen", 0, G_MAXINT32, 0, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); /** * GstVaapiDisplayX11:display-name: * * The X11 display name. */ g_object_class_install_property (object_class, PROP_DISPLAY_NAME, g_param_spec_string("display-name", "X11 display name", "X11 display name", NULL, G_PARAM_READWRITE|G_PARAM_CONSTRUCT_ONLY)); }