#ifndef __GLVIDEO_H__ #define __GLVIDEO_H__ #include #include #include typedef struct _GLVideoDisplay GLVideoDisplay; typedef struct _GLVideoDrawable GLVideoDrawable; typedef enum { GLVIDEO_IMAGE_TYPE_RGBx, GLVIDEO_IMAGE_TYPE_BGRx, GLVIDEO_IMAGE_TYPE_xRGB, GLVIDEO_IMAGE_TYPE_xBGR, GLVIDEO_IMAGE_TYPE_YUY2, GLVIDEO_IMAGE_TYPE_UYVY, GLVIDEO_IMAGE_TYPE_AYUV, } 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; gboolean have_texture_rectangle; gboolean have_color_matrix; }; struct _GLVideoDrawable { GLVideoDisplay *display; Window window; gboolean destroy_on_free; int win_width; int win_height; }; GLVideoDisplay *glv_display_new (const char *display_name); gboolean glv_display_can_handle_type (GLVideoDisplay *display, GLVideoImageType type); 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