#ifndef __GST_GL_H__ #define __GST_GL_H__ #include #include #include #include typedef struct _GstGLDisplay GstGLDisplay; typedef struct _GstGLDisplayClass GstGLDisplayClass; #define GST_TYPE_GL_DISPLAY \ (gst_gl_display_get_type()) #define GST_GL_DISPLAY(obj) \ (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_GL_DISPLAY,GstGLDisplay)) #define GST_GL_DISPLAY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_GL_DISPLAY,GstGLDisplayClass)) #define GST_IS_GL_DISPLAY(obj) \ (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_GL_DISPLAY)) #define GST_IS_GL_DISPLAY_CLASS(klass) \ (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_GL_DISPLAY)) struct _GstGLDisplay { GObject object; Display *display; GC gc; XVisualInfo *visinfo; GLXContext context; GMutex *lock; Screen *screen; int screen_num; Visual *visual; Window root; guint32 white; guint32 black; int depth; int max_texture_size; gboolean have_ycbcr_texture; gboolean have_texture_rectangle; gboolean have_color_matrix; Window window; gboolean visible; Window parent_window; int win_width; int win_height; }; struct _GstGLDisplayClass { GObjectClass object_class; }; GType gst_gl_display_get_type (void); GstGLDisplay *gst_gl_display_new (void); gboolean gst_gl_display_connect (GstGLDisplay *display, const char *display_name); gboolean gst_gl_display_can_handle_type (GstGLDisplay *display, GstVideoFormat type); void gst_gl_display_lock (GstGLDisplay *display); void gst_gl_display_unlock (GstGLDisplay *display); void gst_gl_display_set_window (GstGLDisplay *display, Window window); void gst_gl_display_update_attributes (GstGLDisplay *display); void gst_gl_display_clear (GstGLDisplay *display); void gst_gl_display_draw_texture (GstGLDisplay * display, GLuint texture, int width, int height, gboolean sync); void gst_gl_display_check_error (GstGLDisplay *display, int line); GLuint gst_gl_display_upload_texture_rectangle (GstGLDisplay *display, GstVideoFormat type, void *data, int width, int height); void gst_gl_display_set_visible (GstGLDisplay *display, gboolean visible); void gst_gl_display_set_window_size (GstGLDisplay *display, int width, int height); void gst_gl_display_update_window (GstGLDisplay * display); #endif