summaryrefslogtreecommitdiffstats
path: root/sys/glsink/glvideo.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/glsink/glvideo.h')
-rw-r--r--sys/glsink/glvideo.h64
1 files changed, 64 insertions, 0 deletions
diff --git a/sys/glsink/glvideo.h b/sys/glsink/glvideo.h
new file mode 100644
index 00000000..7e2f6b13
--- /dev/null
+++ b/sys/glsink/glvideo.h
@@ -0,0 +1,64 @@
+
+#ifndef __GLVIDEO_H__
+#define __GLVIDEO_H__
+
+#include <GL/glx.h>
+#include <GL/gl.h>
+#include <glib.h>
+
+typedef struct _GLVideoDisplay GLVideoDisplay;
+typedef struct _GLVideoDrawable GLVideoDrawable;
+
+typedef enum {
+ GLVIDEO_IMAGE_TYPE_RGBA,
+ GLVIDEO_IMAGE_TYPE_BGRA,
+ GLVIDEO_IMAGE_TYPE_YUY2,
+ GLVIDEO_IMAGE_TYPE_UYVY,
+} GLVideoImageType;
+
+
+struct _GLVideoDisplay {
+ Display *display;
+ XVisualInfo *visinfo;
+ GLXContext context;
+ GMutex *lock;
+
+ Screen *screen;
+ int scrnum;
+ Window root;
+
+ int max_texture_size;
+
+ gboolean have_ycbcr_texture;
+};
+
+struct _GLVideoDrawable {
+ GLVideoDisplay *display;
+
+ Window window;
+
+ gboolean destroy_on_free;
+
+ int win_width;
+ int win_height;
+};
+
+
+GLVideoDisplay *glv_display_new (const char *display_name);
+void glv_display_free (GLVideoDisplay *display);
+
+/* drawable */
+
+GLVideoDrawable * glv_drawable_new_window (GLVideoDisplay *display);
+GLVideoDrawable * glv_drawable_new_root_window (GLVideoDisplay *display);
+GLVideoDrawable * glv_drawable_new_from_window (GLVideoDisplay *display, Window window);
+void glv_drawable_free (GLVideoDrawable *drawable);
+void glv_drawable_lock (GLVideoDrawable *drawable);
+void glv_drawable_unlock (GLVideoDrawable *drawable);
+void glv_drawable_update_attributes (GLVideoDrawable *drawable);
+void glv_drawable_clear (GLVideoDrawable *drawable);
+void glv_drawable_draw_image (GLVideoDrawable *drawable, GLVideoImageType type, void *data, int width, int height);
+
+
+#endif
+