2007-12-24 21:04:45 +00:00
|
|
|
|
|
|
|
#ifndef __GST_GL_H__
|
|
|
|
#define __GST_GL_H__
|
|
|
|
|
|
|
|
#include <GL/glx.h>
|
|
|
|
#include <GL/gl.h>
|
|
|
|
#include <gst/gst.h>
|
|
|
|
#include <gst/video/video.h>
|
|
|
|
|
|
|
|
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;
|
2008-01-06 01:19:48 +00:00
|
|
|
gboolean visible;
|
2007-12-29 00:37:40 +00:00
|
|
|
Window parent_window;
|
2007-12-24 21:04:45 +00:00
|
|
|
|
|
|
|
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,
|
2008-01-06 03:01:39 +00:00
|
|
|
int width, int height, gboolean sync);
|
2007-12-24 21:04:45 +00:00
|
|
|
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);
|
2008-01-06 01:19:48 +00:00
|
|
|
void gst_gl_display_set_visible (GstGLDisplay *display, gboolean visible);
|
2008-01-06 03:01:39 +00:00
|
|
|
void gst_gl_display_set_window_size (GstGLDisplay *display, int width,
|
|
|
|
int height);
|
|
|
|
void gst_gl_display_update_window (GstGLDisplay * display);
|
2007-12-24 21:04:45 +00:00
|
|
|
|
|
|
|
#endif
|
|
|
|
|