From dc9636348546beece8dc0f4618875f4bea3c6c3d Mon Sep 17 00:00:00 2001 From: Julien Isorce Date: Sun, 24 Aug 2008 03:38:40 +0200 Subject: [PATCH] [207/906] oups, fix my mistake on last commit --- gst-libs/gst/gl/gstgldisplay.c | 89 +++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 44 deletions(-) diff --git a/gst-libs/gst/gl/gstgldisplay.c b/gst-libs/gst/gl/gstgldisplay.c index 92a47a8..6f0528d 100644 --- a/gst-libs/gst/gl/gstgldisplay.c +++ b/gst-libs/gst/gl/gstgldisplay.c @@ -962,63 +962,64 @@ gst_gl_display_thread_init_upload (GstGLDisplay *display) case GST_VIDEO_FORMAT_AYUV: //color space conversion is needed { - //Frame buffer object is a requirement for every cases - if (GLEW_EXT_framebuffer_object) + //check if fragment shader is available, then load them + /* shouldn't we require ARB_shading_language_100? --Filippo */ + if (GLEW_ARB_fragment_shader) { - //a texture must be attached to the FBO - GLuint fake_texture = 0; + g_print ("Context %d, ARB_fragment_shader supported: yes\n", display->glutWinId); - g_print ("Context %d, EXT_framebuffer_object supported: yes\n", display->glutWinId); + //Frame buffer object is a requirement for every cases + if (GLEW_EXT_framebuffer_object) + { + //a texture must be attached to the FBO + GLuint fake_texture = 0; - //-- init intput frame buffer object (video -> GL) + g_print ("Context %d, EXT_framebuffer_object supported: yes\n", display->glutWinId); - //setup FBO - glGenFramebuffersEXT (1, &display->upload_fbo); - glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->upload_fbo); + //-- init intput frame buffer object (video -> GL) - //setup the render buffer for depth - glGenRenderbuffersEXT(1, &display->upload_depth_buffer); - glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->upload_depth_buffer); - glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, - display->upload_width, display->upload_height); + //setup FBO + glGenFramebuffersEXT (1, &display->upload_fbo); + glBindFramebufferEXT (GL_FRAMEBUFFER_EXT, display->upload_fbo); - //a fake texture is attached to the upload FBO (cannot init without it) - glGenTextures (1, &fake_texture); - glBindTexture(GL_TEXTURE_RECTANGLE_ARB, fake_texture); - glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8, - display->upload_width, display->upload_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); + //setup the render buffer for depth + glGenRenderbuffersEXT(1, &display->upload_depth_buffer); + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, display->upload_depth_buffer); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, + display->upload_width, display->upload_height); - //attach the texture to the FBO to renderer to - glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, - GL_TEXTURE_RECTANGLE_ARB, fake_texture, 0); + //a fake texture is attached to the upload FBO (cannot init without it) + glGenTextures (1, &fake_texture); + glBindTexture(GL_TEXTURE_RECTANGLE_ARB, fake_texture); + glTexImage2D(GL_TEXTURE_RECTANGLE_ARB, 0, GL_RGBA8, + display->upload_width, display->upload_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL); - //attach the depth render buffer to the FBO - glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, - GL_RENDERBUFFER_EXT, display->upload_depth_buffer); + //attach the texture to the FBO to renderer to + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, + GL_TEXTURE_RECTANGLE_ARB, fake_texture, 0); - gst_gl_display_check_framebuffer_status(); + //attach the depth render buffer to the FBO + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, + GL_RENDERBUFFER_EXT, display->upload_depth_buffer); - g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) == - GL_FRAMEBUFFER_COMPLETE_EXT); + gst_gl_display_check_framebuffer_status(); - //unbind the FBO - glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + g_assert (glCheckFramebufferStatusEXT (GL_FRAMEBUFFER_EXT) == + GL_FRAMEBUFFER_COMPLETE_EXT); - glDeleteTextures (1, &fake_texture); - } - else - { - //turn off the pipeline because Frame buffer object is a not present - g_print ("Context %d, EXT_framebuffer_object supported: no\n", display->glutWinId); - display->isAlive = FALSE; - } - - //check if fragment shader is available, then load them - /* shouldn't we require ARB_shading_language_100? --Filippo */ - if (GLEW_ARB_fragment_shader) - { - g_print ("Context %d, ARB_fragment_shader supported: yes\n", display->glutWinId); + //unbind the FBO + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + glDeleteTextures (1, &fake_texture); + } + else + { + //turn off the pipeline because Frame buffer object is a not present + g_print ("Context %d, EXT_framebuffer_object supported: no\n", display->glutWinId); + display->isAlive = FALSE; + break; + } + display->upload_colorspace_conversion = GST_GL_DISPLAY_CONVERSION_GLSL; switch (display->upload_video_format) -- 2.7.4