gstreamer/sys/glsink/glvideo.h
David Schleef 1a1691eb02 sys/glsink/gstvideo-common.*: Pull together some common raw video functions into one location.
Original commit message from CVS:
* sys/glsink/gstvideo-common.c:
* sys/glsink/gstvideo-common.h:
Pull together some common raw video functions into one location.
This should eventually move to -base.
* sys/glsink/Makefile.am:
* sys/glsink/glimagesink.c:
* sys/glsink/glimagesink.h:
* sys/glsink/glvideo.c:
* sys/glsink/glvideo.h:
* sys/glsink/gstopengl.c:
Use the new video-common.h stuff.  Readd support for RGB video.
2007-12-15 06:33:37 +00:00

64 lines
1.4 KiB
C

#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_RGBx,
GLVIDEO_IMAGE_TYPE_BGRx,
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