[066/906] up
git-svn-id: svn://svn.wobow.com/GStreamer_playground/gst-plugins-gl@430 93df14bb-0f41-7a43-8087-d3e2a2f0e464
This commit is contained in:
parent
4511a3c0bd
commit
f509c88675
@ -13,7 +13,7 @@
|
|||||||
|
|
||||||
|
|
||||||
//------------------------------------------------------------
|
//------------------------------------------------------------
|
||||||
//-------------------- Private déclarations ------------------
|
//-------------------- Private d<EFBFBD>clarations ------------------
|
||||||
//------------------------------------------------------------
|
//------------------------------------------------------------
|
||||||
static void gst_gl_display_finalize (GObject * object);
|
static void gst_gl_display_finalize (GObject * object);
|
||||||
static gpointer gst_gl_display_glutThreadFunc (GstGLDisplay* display);
|
static gpointer gst_gl_display_glutThreadFunc (GstGLDisplay* display);
|
||||||
@ -371,15 +371,19 @@ gst_gl_display_glutCreateWindow (GstGLDisplay *display)
|
|||||||
gint glutWinId = 0;
|
gint glutWinId = 0;
|
||||||
GList *keys = NULL;
|
GList *keys = NULL;
|
||||||
gchar buffer[5];
|
gchar buffer[5];
|
||||||
GLenum err = 0;
|
GLenum err = 0;
|
||||||
|
|
||||||
//prepare opengl context
|
//prepare opengl context
|
||||||
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
|
glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE | GLUT_DEPTH);
|
||||||
glutInitWindowPosition(display->win_xpos, display->win_ypos);
|
glutInitWindowPosition(display->win_xpos, display->win_ypos);
|
||||||
glutInitWindowSize(display->glcontext_width, display->glcontext_height);
|
glutInitWindowSize(display->glcontext_width, display->glcontext_height);
|
||||||
|
|
||||||
//create opengl context
|
//create opengl context
|
||||||
|
#if WIN32
|
||||||
sprintf_s(buffer, 5, "%d", glutWinId);
|
sprintf_s(buffer, 5, "%d", glutWinId);
|
||||||
|
#else
|
||||||
|
sprintf(buffer, "%d", glutWinId);
|
||||||
|
#endif
|
||||||
display->title = g_string_append (display->title, buffer);
|
display->title = g_string_append (display->title, buffer);
|
||||||
glutWinId = glutCreateWindow (display->title->str, display->winId);
|
glutWinId = glutCreateWindow (display->title->str, display->winId);
|
||||||
|
|
||||||
@ -388,12 +392,12 @@ gst_gl_display_glutCreateWindow (GstGLDisplay *display)
|
|||||||
else
|
else
|
||||||
glutHideWindow ();
|
glutHideWindow ();
|
||||||
|
|
||||||
//Init glew
|
//Init glew
|
||||||
err = glewInit();
|
err = glewInit();
|
||||||
if (err != GLEW_OK)
|
if (err != GLEW_OK)
|
||||||
g_print ("Error: %s\n", glewGetErrorString(err));
|
g_print ("Error: %s\n", glewGetErrorString(err));
|
||||||
else
|
else
|
||||||
g_print ("Context %d, Using GLEW %s\n", glutWinId, glewGetString(GLEW_VERSION));
|
g_print ("Context %d, Using GLEW %s\n", glutWinId, glewGetString(GLEW_VERSION));
|
||||||
|
|
||||||
if (GLEW_EXT_framebuffer_object)
|
if (GLEW_EXT_framebuffer_object)
|
||||||
{
|
{
|
||||||
@ -407,8 +411,8 @@ gst_gl_display_glutCreateWindow (GstGLDisplay *display)
|
|||||||
|
|
||||||
//setup the render buffer for depth
|
//setup the render buffer for depth
|
||||||
glGenRenderbuffersEXT(1, &display->depthBuffer);
|
glGenRenderbuffersEXT(1, &display->depthBuffer);
|
||||||
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->depthBuffer);
|
glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->depthBuffer);
|
||||||
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
|
glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT,
|
||||||
display->textureFBOWidth, display->textureFBOHeight);
|
display->textureFBOWidth, display->textureFBOHeight);
|
||||||
|
|
||||||
//setup a texture to render to
|
//setup a texture to render to
|
||||||
@ -559,11 +563,18 @@ gst_gl_display_glutCreateWindow (GstGLDisplay *display)
|
|||||||
g_print ("Context %d, ARB_fragment_program supported: yes\n", glutWinId);
|
g_print ("Context %d, ARB_fragment_program supported: yes\n", glutWinId);
|
||||||
|
|
||||||
//from video to texture
|
//from video to texture
|
||||||
|
#if WIN32
|
||||||
sprintf_s (program, 2048, display->textFProgram_YUY2_UYVY, 'r', 'g', 'a');
|
sprintf_s (program, 2048, display->textFProgram_YUY2_UYVY, 'r', 'g', 'a');
|
||||||
|
#else
|
||||||
|
sprintf (program, display->textFProgram_YUY2_UYVY, 'r', 'g', 'a');
|
||||||
|
#endif
|
||||||
display->GLSLProgram_YUY2 = gst_gl_display_loadGLSLprogram (program);
|
display->GLSLProgram_YUY2 = gst_gl_display_loadGLSLprogram (program);
|
||||||
|
|
||||||
|
#if WIN32
|
||||||
sprintf_s (program, 2048, display->textFProgram_YUY2_UYVY, 'a', 'b', 'r');
|
sprintf_s (program, 2048, display->textFProgram_YUY2_UYVY, 'a', 'b', 'r');
|
||||||
|
#else
|
||||||
|
sprintf (program, display->textFProgram_YUY2_UYVY, 'a', 'b', 'r');
|
||||||
|
#endif
|
||||||
display->GLSLProgram_UYVY = gst_gl_display_loadGLSLprogram (program);
|
display->GLSLProgram_UYVY = gst_gl_display_loadGLSLprogram (program);
|
||||||
|
|
||||||
display->GLSLProgram_I420_YV12 = gst_gl_display_loadGLSLprogram (display->textFProgram_I420_YV12);
|
display->GLSLProgram_I420_YV12 = gst_gl_display_loadGLSLprogram (display->textFProgram_I420_YV12);
|
||||||
@ -572,10 +583,10 @@ gst_gl_display_glutCreateWindow (GstGLDisplay *display)
|
|||||||
|
|
||||||
//from texture to video
|
//from texture to video
|
||||||
|
|
||||||
sprintf_s (program, 2048, display->textFProgram_to_YUY2_UYVY, "y2,u,y1,v");
|
sprintf (program, display->textFProgram_to_YUY2_UYVY, "y2,u,y1,v");
|
||||||
display->GLSLProgram_to_YUY2 = gst_gl_display_loadGLSLprogram (program);
|
display->GLSLProgram_to_YUY2 = gst_gl_display_loadGLSLprogram (program);
|
||||||
|
|
||||||
sprintf_s (program, 2048, display->textFProgram_to_YUY2_UYVY, "v,y1,u,y2");
|
sprintf (program, display->textFProgram_to_YUY2_UYVY, "v,y1,u,y2");
|
||||||
display->GLSLProgram_to_UYVY = gst_gl_display_loadGLSLprogram (program);
|
display->GLSLProgram_to_UYVY = gst_gl_display_loadGLSLprogram (program);
|
||||||
|
|
||||||
display->GLSLProgram_to_I420_YV12 = gst_gl_display_loadGLSLprogram (display->textFProgram_to_I420_YV12);
|
display->GLSLProgram_to_I420_YV12 = gst_gl_display_loadGLSLprogram (display->textFProgram_to_I420_YV12);
|
||||||
|
@ -6,8 +6,8 @@ AM_LIBS = $(GST_BASE_LIBS)
|
|||||||
|
|
||||||
libgstopengl_la_SOURCES = \
|
libgstopengl_la_SOURCES = \
|
||||||
gstopengl.c \
|
gstopengl.c \
|
||||||
glimagesink.c \
|
gstglimagesink.c \
|
||||||
glimagesink.h \
|
gstglimagesink.h \
|
||||||
gstglgraphicmaker.c \
|
gstglgraphicmaker.c \
|
||||||
gstglgraphicmaker.h \
|
gstglgraphicmaker.h \
|
||||||
gstglvideomaker.c \
|
gstglvideomaker.c \
|
||||||
@ -21,6 +21,7 @@ libgstopengl_la_CFLAGS = $(GST_CFLAGS) $(X_CFLAGS) $(GST_BASE_CFLAGS) \
|
|||||||
-I$(top_srcdir)/gst-libs/gst/freeglut \
|
-I$(top_srcdir)/gst-libs/gst/freeglut \
|
||||||
-I$(top_srcdir)/gst-libs/gst/gl
|
-I$(top_srcdir)/gst-libs/gst/gl
|
||||||
libgstopengl_la_LIBADD = \
|
libgstopengl_la_LIBADD = \
|
||||||
|
$(top_builddir)/gst-libs/gst/freeglut/libgstfreeglut-$(GST_MAJORMINOR).la \
|
||||||
$(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_MAJORMINOR).la \
|
$(top_builddir)/gst-libs/gst/gl/libgstgl-$(GST_MAJORMINOR).la \
|
||||||
$(GST_BASE_LIBS) \
|
$(GST_BASE_LIBS) \
|
||||||
$(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_MAJORMINOR)
|
$(GST_PLUGINS_BASE_LIBS) -lgstinterfaces-$(GST_MAJORMINOR)
|
||||||
|
@ -196,7 +196,7 @@ gst_gl_graphicmaker_reset (GstGLGraphicmaker* graphicmaker)
|
|||||||
static gboolean
|
static gboolean
|
||||||
gst_gl_graphicmaker_start (GstBaseTransform * bt)
|
gst_gl_graphicmaker_start (GstBaseTransform * bt)
|
||||||
{
|
{
|
||||||
GstGLGraphicmaker* graphicmaker = GST_GL_GRAPHICMAKER (bt);
|
//GstGLGraphicmaker* graphicmaker = GST_GL_GRAPHICMAKER (bt);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,7 @@ gst_glimage_sink_change_state (GstElement * element, GstStateChange transition);
|
|||||||
|
|
||||||
static void gst_glimage_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
|
static void gst_glimage_sink_get_times (GstBaseSink * bsink, GstBuffer * buf,
|
||||||
GstClockTime * start, GstClockTime * end);
|
GstClockTime * start, GstClockTime * end);
|
||||||
static GstCaps *gst_glimage_sink_get_caps (GstBaseSink * bsink);
|
//static GstCaps *gst_glimage_sink_get_caps (GstBaseSink * bsink);
|
||||||
static gboolean gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
|
static gboolean gst_glimage_sink_set_caps (GstBaseSink * bsink, GstCaps * caps);
|
||||||
static GstFlowReturn gst_glimage_sink_render (GstBaseSink * bsink,
|
static GstFlowReturn gst_glimage_sink_render (GstBaseSink * bsink,
|
||||||
GstBuffer * buf);
|
GstBuffer * buf);
|
||||||
|
@ -142,7 +142,7 @@ gst_gl_videomaker_reset (GstGLVideomaker* videomaker)
|
|||||||
static gboolean
|
static gboolean
|
||||||
gst_gl_videomaker_start (GstBaseTransform* bt)
|
gst_gl_videomaker_start (GstBaseTransform* bt)
|
||||||
{
|
{
|
||||||
GstGLVideomaker* videomaker = GST_GL_VIDEOMAKER (bt);
|
//GstGLVideomaker* videomaker = GST_GL_VIDEOMAKER (bt);
|
||||||
|
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
@ -36,10 +36,6 @@ struct _GstGLVideomakerClass
|
|||||||
GstBaseTransformClass base_transform_class;
|
GstBaseTransformClass base_transform_class;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct _GstGLVideomaker GstGLVideomaker;
|
|
||||||
typedef struct _GstGLVideomakerClass GstGLVideomakerClass;
|
|
||||||
|
|
||||||
|
|
||||||
GType gst_gl_videomaker_get_type (void);
|
GType gst_gl_videomaker_get_type (void);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
Loading…
x
Reference in New Issue
Block a user