- 09 Dec, 2017 40 commits
-
-
GstGLRenderbuffer GstGLFramebuffer GstGLQuery GstEGLImage GstGLMemoryEGL
-
The spec allows the core/compatibility profiles to be used with #version 150. Also tighten up the tests to check for default profiles being chosen correctly.
-
The change to use GST_EXPORT for symbols under Windows requires GST_EXPORTS for internal use, and that is also needed under Autotools. The same thing is done for gstreamer-1.0.dll in -core.
-
The calling convention may be deprecated, but we still need it for OpenGL. The build issue was caused by an incorrect syntax being used for the WINAPI (__stdcall) prototype in function pointers which was accepted by GCC but is rejected by MSVC.
-
MSVC warns about this because it's a C++ compiler, and this actually results in useful things such as the incorrect 'gboolean' return value for functions that return GstFlowReturn, so let's do explicit conversions to reduce the noise and increase its efficacy.
-
With MSVC, this gives the following warning: warning C4305: 'function': truncation from 'double' to 'gfloat' Apparently, MSVC does not figure out what type to use for constants based on the assignment. This warning is very spammy, so let's try to fix it.
-
All these should return GstFlowReturn, not gboolean
-
This is a requirement for those symbols to be exported in gstgl-1.0.dll when building with the MSVC compiler
-
Currently only tested with MSVC.
-
The headers we include already define boolean on Windows with MSVC, and it leads to a typedef redefinition error with jpeglib.h which tries to redefine it in jmorecfg.h
-
GL/gl.h needs windows.h on MSVC WINAPI should not be used with MSVC. It also causes a build error.
-
At minimum, we only need to glFlush() if we are in a shared GL context environment. Move the glFinish() to when the actual wait is requested which may be never. Improves the throughput on older GL systems without GL3/GLES3 and/or fence sync objects.
-
-
The function pointer and the user data arguments were swapped in both uses. https://bugzilla.gnome.org/show_bug.cgi?id=769382
-
We need to check for libGL if we may use desktop OpenGL *or* GLX.
-
Use the winsys variable for an incorrect winsys provided
-
Using g_thread_join() in _finalize() handlers may result in a deadlock joining the current thread when the last reference is held by a signal handler. e.g.: error 'Resource deadlock avoided' during 'pthread_join (pt->system_thread, NULL)' The backtrace looks like this: [...] g_thread_join () gst_gl_window_finalize () gst_gl_window_x11_finalize () g_object_unref () g_value_unset () g_signal_emit_valist () g_signal_emit () gst_gl_window_send_mouse_event () gst_gl_window_mouse_event_cb () g_main_dispatch () [..] g_main_loop_run () gst_gl_window_navigation_thread () g_thread_proxy () start_thread () clone ()
-
When only linking the element, the upload object will be created from _transform_caps() but will never be unreffed as the only case is in _stop(). Add an unref if non-NULL to a new finalize handler for this case.
-
e.g. the final glGetError() must also be completed on the GL thread
-
It hasn't been used in ages and is dead code.
-
We cannot set the x, y coordinate of the video frame at the dispmanx at this point. We need to teach dispmanx backend to understand about set_render_rectangle API to draw a video with other UI. This patch keeps the current behavior which places video frame at the center of the display if there is no set_render_rectangle call to the dispmanx window. https://bugzilla.gnome.org/show_bug.cgi?id=766018
-
-
Otherwise we leak GWeakRef's. Found with make -C tests/check libs/gstglcontext.valgrind
-
Fixes an assertion when moving from passthrough to non-passthrough Without an explicit reconfigure, glfiter won't have created the GL resources such as the FBO, GL bufferpool, etc and basetransform will allocate sysmem buffers instead.
-
e.g. passing with_gl_api=gles2 would still build the glx code but not be linking against the libGL library which is where the glX* functions are located and would result in a linker error. Solved by checking for the libGL library if either opengl or glx may be needed and then disabling the corresponding deps as requested.
-
Currently only works on linux with egl/glx + wayland/x11 but the general principals have been layed out for adding the other GL platforms/winsys'.
-
These seem to have been missed in the previous commit to this file. https://bugzilla.gnome.org/show_bug.cgi?id=771023
-
Previously it was created in the init function and destroyed in ::stop, which lead to segfaults when reusing the element. Now the upload object is created in ::transform_caps if it is NULL, which is the earliest we need it. The other vfuncs already bail out if the upload object is NULL, which means that negotiation wasn't done.
-
It's triggering a warning building git master on OSX
-
-
714d8aa in core removed this include dir from it's pkgconfig file. https://bugzilla.gnome.org/show_bug.cgi?id=770523
-
The tests were broken since 91fea30, which changed glupload to return GST_GL_UPLOAD_RECONFIGURE if the texture target in the input buffers doesn't match the texture-target configured in the output caps. This commit fixes that and adds more checks for the new behaviour.
-
Now when used with video/x-raw as input, the GLMemoryUpload method checks for ->tex_target in input GLMemory(es) and sets the output texture-target accordingly. Fixes video corruption with a pipeline like avfvideosrc ! video/x-raw ! glimagesink where on macos avfvideosrc pushes RECTANGLE textures but glupload was configuring texture-target=2D as output.
-
-
Add some example pipelines for glstereomix, and fix up the example pipelines for glviewconvert
-
The videoaggregator negotiation sequence changed some time back and broke glstereomix. Instead of doing nego incorrectly in the find_best_format() vfunc, do it directly in the update_caps() method.
-