[042/906] * sys/glsink/glimagesink.c: * sys/glsink/glimagesink.h: * sys/glsink/glvide...
[platform/upstream/gstreamer.git] / gst-libs / gst / gl / gstglbuffer.h
1
2 #ifndef _GST_GL_BUFFER_H_
3 #define _GST_GL_BUFFER_H_
4
5 #include <gst/gst.h>
6 #include <gst/video/video.h>
7 #include <xcb/xcb.h>
8 #include <glvideo.h>
9
10 typedef struct _GstGLBuffer GstGLBuffer;
11
12 #define GST_TYPE_GL_BUFFER (gst_gl_buffer_get_type())
13
14 #define GST_IS_GL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_GL_BUFFER))
15 #define GST_GL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_GL_BUFFER, GstGLBuffer))
16
17 typedef enum {
18   GST_GL_BUFFER_UNKNOWN,
19   GST_GL_BUFFER_XIMAGE,
20   GST_GL_BUFFER_RBO,
21   GST_GL_BUFFER_TEXTURE
22 } GstGLBufferType;
23
24 struct _GstGLBuffer {
25   GstBuffer buffer;
26
27   GstGLDisplay *display;
28
29   GstGLBufferType type;
30
31   XID pixmap;
32   GC gc;
33
34   GLuint rbo;
35   GLuint texture;
36
37   int width;
38   int height;
39 };
40
41 GType gst_gl_buffer_get_type (void);
42
43 GstGLBuffer * gst_gl_buffer_new (GstGLDisplay *display, GstVideoFormat format,
44     int width, int height);
45 void gst_gl_buffer_upload (GstGLBuffer *buffer, void *data);
46 void gst_gl_buffer_download (GstGLBuffer *buffer, void *data);
47
48 #endif
49