Matthew Waters
5432308012
glupload: restrict EGL and UploadMeta to RGBA
...
other formats are highly untested.
2015-02-05 11:07:19 +11:00
Matthew Waters
8c91da6f75
glcolorconvert: don't intersect with the input caps
...
that limits our formats to whatever is in the input caps
2015-02-05 11:07:19 +11:00
Luis de Bethencourt
2cd9d30340
gl: fix memory leak
...
In gst_gl_filter_fixate_caps () it can goto done without freeing the memory of
the tmp GstStructure. This makes it go out of scope and leak.
CID #1265765
2015-02-04 14:10:13 +00:00
Matthew Waters
c1ad8d776a
gl: remove the egl caps from the src pads
...
we don't actually support producing EGLImage buffers anywhere.
2015-02-03 15:30:08 +11:00
Matthew Waters
e7a10a2d44
glcolorconvert: put GstGLSyncMeta on output buffers
...
allows thread safely using the provided output buffer in a separate
thread
2015-02-03 14:32:55 +11:00
Matthew Waters
73c2ab70fc
glupload: only try the glmemory upload for sysmem/glmemory caps features
...
Allows selecting/testing the upload path with explicit caps features.
2015-02-03 14:32:55 +11:00
Matthew Waters
46ecf99a8a
glmemory: add missing initilisation of tex_target when copying
...
fixes:
glcolorscale ! video/x-raw\(meta:GstVideoGLTextureUploadMeta\) !
glimagesink
2015-02-03 14:32:55 +11:00
Matthew Waters
b947c9805a
glupload: allow NULL buffer for accept vfunc
2015-02-03 14:32:55 +11:00
Matthew Waters
917dcfdfee
glupload: remove unsed convert field in private struct
2015-02-03 14:32:55 +11:00
Matthew Waters
c06715bde6
glupload/download/convert: provide transform_caps functions
...
Allows finer grain decisions about formats and features at each
stage of the pipeline.
Also provide propose_allocation for glupload besed on the supported
methods.
2015-02-03 14:32:55 +11:00
Alessandro Decina
7d46357627
gstglwindow_cocoa: fix slow render rate
...
In gst_gl_window_cocoa_draw we used to just call setNeedsDisplay:YES. That was
creating an implicit CA transaction which was getting committed at the next
runloop iteration. Since we don't know how often the main runloop is running,
and when we run it implicitly (from gst_gl_window_cocoa_nsapp_iteration) we only
do so every 200ms, use an explicit CA transaction instead and commit it
immediately. CA transactions nest and debounce automatically so this will never
result in extra work.
2015-02-03 11:19:35 +11:00
Matthew Waters
ddcc580505
gstglcaopengllayer: use the correct rectangle type for iOS and OS X
2015-02-02 23:43:54 +11:00
Matthew Waters
ed7d7418c2
glcolorconvert: use the correct caps feature for supported caps
...
glcolorconvert currently only supports converting between GLMemory
targets.
2015-02-02 21:07:48 +11:00
Matthew Waters
abb55f2453
glsyncmeta: don't use the gst debug object variants
...
We are not a GObject or any inferable GstMiniObject supported by
the gst debug system. Also fixes a segfault.
2015-02-02 20:51:31 +11:00
Alessandro Decina
b1aae5cb70
Revert "libgstgl: gstglcaopengllayer: set the layer as opaque"
...
This reverts commit 6f152d381c
.
The layer shouldn't be always opaque, it should be made a property.
2015-01-30 12:32:17 +11:00
Alessandro Decina
6f152d381c
libgstgl: gstglcaopengllayer: set the layer as opaque
2015-01-30 12:22:25 +11:00
Sebastian Dröge
c2492b3a6b
glcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular textures
2015-01-29 16:30:34 +01:00
Sebastian Dröge
4b6a968203
glcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL
...
It's not defined for GLES.
2015-01-29 16:26:26 +01:00
Alessandro Decina
3655e8b8bc
libgstgl: run a custom shader to convert YUV to RGB on mac and ios
...
When GL_APPLE_ycbcr_422 is available, run a custom shader to convert
GL_TEXTURE_RECTANGLE textures from YUV to RGB.
See https://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt
2015-01-30 00:34:08 +11:00
Alessandro Decina
5f547c5600
gl: initial support for texture targets other than GL_TEXTURE_2D
...
Make GstGLMemory hold the texture target (tex_target) the texture it represents
(tex_id) is bound to. Modify gst_gl_memory_wrapped_texture and
gst_gl_download_perform_with_data to take the texture target as an argument.
This change is needed to support wrapping textures created outside libgstgl,
which might be bound to a target other than GL_TEXTURE_2D. For example on OSX
textures coming from VideoToolbox have target GL_TEXTURE_RECTANGLE.
With this change we still keep (and sometimes imply) GL_TEXTURE_2D as the
target of textures created with libgstgl.
API: modify GstGLMemory
API: modify gst_gl_memory_wrapped_texture
API: gst_gl_download_perform_with_data
2015-01-30 00:34:08 +11:00
Alessandro Decina
12e8bb4a66
gstglcolorconvert: micro optimization
...
Don't call glClear && glClearColor at each draw since we're going to draw the
whole viewport anyway. Gets rid of a glFlush triggered by glClear on OSX.
2015-01-30 00:34:08 +11:00
Alessandro Decina
c7284a6390
gstglcolorconvert: relax caps features check
...
Require caps to have the GST_CAPS_FEATURE_MEMORY_GL_MEMORY feature but allow
them to have more features.
2015-01-30 00:34:08 +11:00
Matthew Waters
1e6011bcdf
gl/win32: fixup compilation
2015-01-29 23:46:57 +11:00
Matthew Waters
6cf97eb221
glwindow: make showing a window explicit
...
Also fixes the cgl context always displaying a window to render to for
every GstGLContextCocoa created
2015-01-29 22:26:37 +11:00
Matthew Waters
6d9dc9c81c
gl/calayer: add resize callback based on the bounds rectangle
2015-01-29 18:32:04 +11:00
Matthew Waters
2ab0e1517f
gl/caopengllayer: draw asynchronously
...
This essentially makes the CAOpenGLLayer draw every refresh cycle.
2015-01-29 18:32:04 +11:00
Matthew Waters
f3273cafc4
gl/cocoa: don't segfault if we have a NULL draw/resize/close callback
2015-01-29 18:32:04 +11:00
Matthew Waters
8d5ba8d96a
cgl/calayer: use a callback instead of hardcoding the draw functionality
2015-01-29 18:32:04 +11:00
Matthew Waters
693cdb47cd
cgl: install the gl context and gl layer headers
2015-01-29 18:32:04 +11:00
Matthew Waters
9caf706185
cgl: add a header for the CAOpenGLLayer support
2015-01-29 18:32:04 +11:00
Philippe Normand
cfc0230e04
gl/dispmanx: fix build
...
Commit ab48bb6f0f
changed the API of
GstGLWindow.
2015-01-27 21:31:21 +11:00
Matthew Waters
08dbd8bbd7
glmemory: more compatibility defines for gles2 systems
2015-01-27 14:52:47 +11:00
Matthew Waters
eea03967e4
glmemory: add some thread safety for gl operations
2015-01-27 12:26:05 +11:00
Matthew Waters
9a55a3f98c
glmemory: use pbo's for download
...
In order to use pbo's efficiently, the transfer operation has to
be separated from the use of the downloaded data which requires some
rearchitecturing around glcolorconvert/gldownload and elements
2015-01-27 12:26:04 +11:00
Matthew Waters
f2667ebc7b
glprototypes: add some (un)map buffer variants for GL/GLES
2015-01-27 12:26:04 +11:00
Matthew Waters
27e5e0c2df
gl/window/eagl: fix a couple of typos
2015-01-23 16:52:25 +11:00
Matthew Waters
06fdbd44b9
glwindow: cleanup/reorganize functions/members into logical groups
2015-01-23 16:39:44 +11:00
Matthew Waters
ab48bb6f0f
glwindow: remove width/height from _draw()
...
Depending on the platform, it was only ever implemented to 1) set a
default surface size, 2) resize based on the video frame or 3) nothing.
Instead, provide a set_preferred_size () that elements/applications
can use to request a certain size which may be ignored for
videooverlay/other cases.
2015-01-23 16:11:31 +11:00
Matthew Waters
4fc554054c
glcontext/cocoa: avoid destroying a possibly 0 GSource id
2015-01-22 21:43:51 +11:00
Matthew Waters
e10d2417e2
gl/cocoa: move to CGL and CAOpenGLLayer for rendering
...
Removes the use of NSOpenGL* variety and functions. Any Cocoa
specific functions that took/returned a NSOpenGL* object now
take/return the CGL equivalents.
2015-01-22 21:29:52 +11:00
Matthew Waters
fe8fdbdc7c
glcontext/cocoa: add debug category
2015-01-22 21:27:44 +11:00
Sebastian Dröge
80e02cbdf9
Constify some static arrays everywhere
2015-01-21 10:18:50 +01:00
Lasse Laursen
174ea7af7b
glapi: fix compilation with latest MSVC
...
https://bugzilla.gnome.org/show_bug.cgi?id=743041
2015-01-17 10:56:20 +11:00
Matthew Waters
989af902fe
glmemory: use the correct size for the pbo
...
It was missing the GstVideoAlignment padding which could cause GL
errors related to overrunning the size of the pbo.
2015-01-17 10:56:20 +11:00
Matthew Waters
8fef381417
glmemory: remove spurious gst_video_info_align
...
That will be taken care of by the calling code (typically a bufferpool).
The GstVideoAlignment is purely informational to compute plane data sizes.
2015-01-15 09:50:02 +11:00
Matthew Waters
d5c3693791
gl: split glcolorconvert usage from glupload
...
the separation allows the transfer operation to occur in a separate
thread/time which may increase performance in specific circumstances.
2015-01-14 22:22:13 +11:00
Matthew Waters
4ccf45823e
glmemory: offset the data pointer for upload for GstVideoAlignment
...
otherwise we attempt to read from the padding data
2015-01-14 22:22:13 +11:00
Matthew Waters
d1e923765b
glmemory: use pbo's for upload
2015-01-14 22:22:13 +11:00
Matthew Waters
8c2d5dac72
glupload: relax the GLMemory uploader check for input caps features
...
As there may be a sysmem caps features with GLMemory filled buffers.
e.g.
videotestsrc ! glimagesink
2015-01-14 22:22:13 +11:00
Nicola Murino
442451a30d
glcolorconvert: fix memleak
...
https://bugzilla.gnome.org/show_bug.cgi?id=741943
2015-01-13 15:20:34 +11:00
Nicola Murino
3c6d775766
glupload: fix some memory leaks
...
https://bugzilla.gnome.org/show_bug.cgi?id=741943
2015-01-13 15:19:39 +11:00
Matthew Waters
4c73e20553
glcontext: allow wrapped contexts to be utilised like non-wrapped contexts
...
Fill in the missing pieces like get_proc_address, the gl function vtable
2015-01-13 15:18:41 +11:00
Sebastian Dröge
fa5c433e7e
gl/cocoa: Disable hack for NSApp iteration with a special #define
...
The hack causes deadlocks and other interesting problems and it really
can only be fixed properly inside GLib. We will include a patch for
GLib in our builds for now that handles this, and hopefully at some
point GLib will also merge a proper solution.
A proper solution would first require to refactor the polling in
GMainContext to only provide a single fd, e.g. via epoll/kqueue
or a thread like the one added by our patch. Then this single
fd could be retrieved from the GMainContext and directly integrated
into a NSRunLoop.
https://bugzilla.gnome.org/show_bug.cgi?id=741450
https://bugzilla.gnome.org/show_bug.cgi?id=704374
2015-01-10 15:54:30 +01:00
Sebastian Dröge
1b2de14000
gl/cocoa: Don't init and clear static GMutex / GCond
...
We would potentially use it from the main loop later in
gst_gl_window_cocoa_init_nsapp() if it timed out before.
2015-01-08 09:36:24 +01:00
Luis de Bethencourt
75cc750efc
glfilter: remove logically dead code
...
Soon after setting two variables to 1, the code checks if their values are
different from each other. This would never be true. Removing this.
CID 1226443
2015-01-07 16:53:41 +00:00
Nicolas Dufresne
207308446b
glbufferpool: Always recalculate buffer size
...
Actually we should always recalculate buffer size since our buffer size
even when not-padded is smaller for many sub-sampled formats. This is
because we don't add padding between the planes.
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 12:25:41 -05:00
Nicolas Dufresne
170a49f901
glmemory: No need for padding
...
A memory object cannot be put on stack, so no need for padding.
2014-12-19 12:12:08 -05:00
Nicolas Dufresne
9954de1ccd
gl: Add support for GstVideoAlignment
...
This allow saving a copy with libav video decoders or decoders with
similar padding requirement.
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 12:11:08 -05:00
Nicolas Dufresne
da3ae06cd1
glmemory: Handle upload/download flags from map
...
Problem was that if buffer was mapped READWRITE (state of buffers from
libav right now), mapping it READ/GL will not upload. This is because the
flag is only set when the buffer is unmapped. We can fix this by setting
the flags in map. This result in already mapped buffer that get mapped
to be read in GL will be uploaded. The problem is that if the write
mapper makes modification afterward, the modification will never get
uploaded.
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 11:45:35 -05:00
Nicolas Dufresne
4f3c33af3a
glmemory: Handle custom stride with OPENGL3
...
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2014-12-19 11:45:35 -05:00
Wang Xin-yu (王昕宇)
15eab1ed01
glfilter: fix position/texcoord attrib index usage
...
https://bugzilla.gnome.org/show_bug.cgi?id=741231
2014-12-11 19:41:23 +11:00
Matthew Waters
f021549294
gl: fixup vao and vbo usage for legacy GL
2014-12-11 19:41:23 +11:00
Philippe Normand
c4ba73e39b
glsyncmeta: add G_END_DECLS
2014-12-04 01:36:38 +11:00
Julien Isorce
230022fe62
glcontext: try cgl before glx
...
It was already done by commit
f506e80686
but it has been broken by commit
45ec777cea
2014-12-03 08:02:58 +00:00
Matthew Waters
90a2477b9e
glcontext: require GL_ARB_ES2_compatibility for opengl3
...
until we generate gl3 compliant shaders
https://bugzilla.gnome.org/show_bug.cgi?id=740012
2014-11-30 00:44:46 +11:00
Matthew Waters
e653ae9fc2
gl: fixup compat definition for GLuint64 for OS X
2014-11-28 13:04:21 +11:00
Matthew Waters
b0faa2dd77
gl: add compat definition for GLuint64 for android
...
../../../../gst-libs/gst/gl/glprototypes/sync.h:41:23: error: unknown type name 'GLuint64'
GLuint64 timeout))
2014-11-28 11:57:25 +11:00
Matthew Waters
3e92a8ef53
glsync: fix build with desktop gl
2014-11-28 11:11:43 +11:00
Matthew Waters
57898fec2a
gl: fix various build errors without desktop gl
2014-11-28 10:59:46 +11:00
Matthew Waters
f67190d3ca
gldisplay: fix build error
...
gstgldisplay.c:234:541: error: 'return' with no value, in function returning non-void [-Werror]
g_return_if_fail (GST_IS_GL_DISPLAY (display));
2014-11-28 10:03:18 +11:00
Matthew Waters
3c1e77eb31
gldisplay: implement runtime GL api filtering
...
Needed so that the pipeline/application can limit the choice of GL api
to what it supports
2014-11-28 09:14:26 +11:00
Matthew Waters
6bd1150ca8
gl: remove the use of glu
2014-11-28 09:14:26 +11:00
Matthew Waters
f2af65ee2d
gl: add a sync meta for synchronizing across GL contexts
...
A context can create a GLsync object that can be waited on in order
to ensure that GL resources created in one context are able to be
used in another shared context without any chance of reading invalid
data.
This meta would be placed on buffers that are known to cross from
one context to another. The receiving element would then wait
on the sync object to ensure that the data to be used is complete.
2014-11-28 09:14:25 +11:00
Matthew Waters
480d3f97eb
glprototypes: add sync function definitions
2014-11-28 09:14:25 +11:00
Matthew Waters
6d39e04992
glfilter: add a gl3 code path using vao's and vbo's
2014-11-28 09:14:25 +11:00
Matthew Waters
5ff5f8c1ee
glframebuffer: add support for gl3
2014-11-28 09:14:25 +11:00
Matthew Waters
a32f29f2ce
glcolorconvert: add support for gl3
2014-11-28 09:14:25 +11:00
Matthew Waters
fca0bc97a4
glshader add support for gl3
2014-11-28 09:14:25 +11:00
Matthew Waters
2c24b97cf0
glx: ask for a GL3 core context
2014-11-28 09:14:25 +11:00
Sebastian Dröge
082c12b8e2
glcolorconvert: Unref buffer with the correct function
2014-11-27 18:09:58 +01:00
Sebastian Dröge
b6ba579fa0
glmemory: Handle failure of memory allocation gracefully
2014-11-27 18:09:14 +01:00
Sebastian Dröge
f2dc9b2b8f
glmemory: Use g_try_malloc() in the appropriate places
...
g_malloc() aborts if allocation fails, it's pointless to check against NULL
afterwards. That's why g_try_malloc() exists.
2014-11-27 18:06:26 +01:00
Wang Xin-yu (王昕宇)
15c0d5c21b
glcolorconvert: support RGB16/BGR16 video format download
...
https://bugzilla.gnome.org/show_bug.cgi?id=740801
2014-11-27 10:08:11 +01:00
Matthew Waters
2d97e03c54
gl/wayland: implement resizing the window using the right mouse button
2014-11-27 13:03:21 +11:00
Matthew Waters
1d7c4f4344
glfilter: support fixed dimensions on both sides of the element
...
Fixes:
width=320,height=240 ! glfilter ! width=800,height=600
width=230,height=240 ! glfilter ! width=600
... ! glfilter ! width=800
2014-11-27 01:32:21 +11:00
Ramprakash Jelari
aea08e86a5
glcontext: Fix unused variable warning by moving declaration where it is actually used
2014-11-24 14:16:58 +01:00
Sebastian Dröge
0f753b7099
glupload: Fix valid compiler warning
...
gstglupload.c:442:32: error: if statement has empty body [-Werror,-Wempty-body]
if (upload->texture_ids[i]);
^
2014-11-24 11:32:33 +01:00
Philippe Normand
c08a461fa4
gl: ship the gstglcontext_egl.h header
...
It is required by gsteglimagememory.h.
https://bugzilla.gnome.org/show_bug.cgi?id=740611
2014-11-24 21:24:27 +11:00
Tim-Philipp Müller
1a613c5d4e
gl: shadervariables: make parsing of floats locale-independent
...
Floating point numbers are written differently in different
locales, e.g. in many countries 1/2 = 0,5 instead of 0.5, and
strtod will not be able to parse "0.5" correctly in such a
locale.
2014-11-24 10:02:33 +00:00
Matthew Waters
59085936b8
glshadervariables: also trim \r as well as \n
2014-11-24 02:52:24 +11:00
Matthew Waters
810d38c29f
glupload: rearchitecture for non GLMemory inputs/outputs
...
Allows other memory types to be implemented/returned/used by the caller.
2014-11-23 17:13:36 +11:00
Vineeth T M
aafc0d509c
glcontext: build errors when GST_GL_HAVE_OPENGL is 0
...
Moving variables within #if GST_GL_HAVE_OPENGL, which are not going to be used otherwise.
and which are needed only when OpenGl is present
https://bugzilla.gnome.org/show_bug.cgi?id=740235
2014-11-17 22:39:07 +11:00
Matthew Waters
4afad4ecd3
glfilter: add read-only context property
2014-11-17 18:50:28 +11:00
Sebastian Dröge
236ffa69be
gl/cocoa: Only use convertRectToBacking on OSX >= 10.7
...
It does not exist before and older versions also don't have
support for HiDPI displays anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=740201
2014-11-16 11:00:57 +01:00
Sebastian Dröge
9492db96d1
gl: Use numeric OSX version instead of the macro
...
The macro is not defined on older OSX versions and evaluates to 0.
https://bugzilla.gnome.org/show_bug.cgi?id=740201
2014-11-16 11:00:57 +01:00
Sebastian Dröge
402e1a067a
gl/cocoa: Don't override the application delegate
...
Otherwise interesting things will happen in Cocoa applications, like
infinite event loops that block the NSApplication loop forever.
This was only needed for GNUStep and thus can safely be removed now.
2014-11-13 12:01:25 +01:00
Sebastian Dröge
13c8517570
gl/cocoa: Remove GNUStep support
...
Until gcc and GNUStep properly support Objective-C blocks and other
"new" features of Objective-C we can't properly support them without
making the code much more ugly.
https://bugzilla.gnome.org/show_bug.cgi?id=739152
2014-11-13 12:01:19 +01:00
Hyunjun Ko
a2e2507dbe
gl: Correct invalid comment text
2014-11-12 11:29:41 +11:00
Julien Isorce
7d0de0577a
gl: do not raise a critical msg if the backend does not handle window events
...
Fix "assertion 'window_class->handle_events != NULL' failed"
if not using a X11 window.
2014-11-12 00:07:06 +00:00
Matthew Waters
36ade75f4a
gl: remove the width/height fields from the caps to support frame resizing
...
It was previously only occuring with sysmem caps features
https://bugzilla.gnome.org/show_bug.cgi?id=739334
2014-11-11 14:23:55 +11:00
Sebastian Dröge
da0369c66c
gstglconfig: Put gstglconfig.h into $(libdir)/gstreamer-1.0/include
...
It's architecture dependent and should not be placed into the include
directory as the assumption is that all those headers are architecture
independent.
https://bugzilla.gnome.org/show_bug.cgi?id=739767
2014-11-07 12:00:29 +01:00
Matthew Waters
775ba4ff0b
glutils: only attempt getting the app context when we don't already have a display
...
avoids querying/messaging the world on each frame
2014-11-06 18:47:34 +11:00
Matthew Waters
1800ffb34a
glcontext: fail context creation if glGetString returns NULL
2014-11-06 18:46:48 +11:00
Lubosz Sarnecki
6702811e14
glimagesink: implement gst_video_overlay_handle_events
...
https://bugzilla.gnome.org/show_bug.cgi?id=736035
2014-11-06 16:04:11 +11:00
Julien Isorce
0a207c95dc
gl/cocoa: use NSAutoreleasePool to free resize data
...
Otherwise when resizing the window you will also get messages like:
class NSConcreteMapTable autoreleased with no pool in place - just leaking
class NSConcreteValue autoreleased with no pool in place - just leaking
class NSConcreteValue autoreleased with no pool in place - just leaking
class __NSCFDictionary autoreleased with no pool in place - just leaking
2014-11-03 23:24:33 +00:00
Julien Isorce
4307449449
gl/cocoa: include gl3.h to have GL_CONTEXT_PROFILE_MASK
2014-11-03 23:08:09 +00:00
Julien Isorce
2b487ef62b
gl/cocoa: make sure to turn on frame rectangle changes notifications
...
Default value of property postsFrameChangedNotifications is YES
but it is worth to explicitly enable it.
2014-11-03 23:07:34 +00:00
Julien Isorce
a259391c10
gl/cocoa: fix uncaught exception 'unrecognized selector sent to instance'
...
Need to set the ':' as the reshape method now takes one parameter.
For the story, the GstGLNSView was previously inheriting from
NSOpenGLView which has a reshape function without any parameter.
Now the GstGLNSView inherits from NSView and we re-use the reshape
function manually.
2014-11-03 23:02:17 +00:00
Julien Isorce
11661ceca9
gl/cocoa: fix compiler warning
...
Use the reshape function after being defined. The other way
would have been to declare the reshape function in the header.
gstglwindow_cocoa.m: In function '-[GstGLNSView drawRect:]':
gstglwindow_cocoa.m:555: warning: 'GstGLNSView' may not respond to '-reshape'
gstglwindow_cocoa.m:555: warning: (Messages without a matching method signature
gstglwindow_cocoa.m:555: warning: will be assumed to return 'id' and accept
gstglwindow_cocoa.m:555: warning: '...' as arguments.)
2014-11-03 22:59:41 +00:00
Tim-Philipp Müller
ebcee78fab
gl: fix Since marker for gst_gl_window_run_navigation()
2014-11-03 00:17:41 +00:00
Luis de Bethencourt
658f403a26
glshader: Fix memory leak
...
Memory is only freed in the TRUE clause of the if conditional. Free in the else
clause as well.
Also, consolidate g_malloc + sprintf into a g_strdup_printf().
CID #1212171
https://bugzilla.gnome.org/show_bug.cgi?id=739368
2014-11-01 15:42:21 +00:00
Luis de Bethencourt
50f2a803f6
glcolorconvert: fix comments that confuse gtk-doc
...
GTK-Doc uses a special syntax for code documentation. A multiline comment that
starts with an additional '*' marks a documentation block that will be processed
by the GTK-Doc tools. So GTK-Doc is confused if a comment block starts with that
additional '*' but isn't meant to be processed. Removing this additional '*'.
https://bugzilla.gnome.org/show_bug.cgi?id=739444
2014-10-31 11:20:29 +00:00
Matthew Waters
f36d6daf51
gl: sprinkle some Since markers
2014-10-31 21:29:25 +11:00
Matthew Waters
c1f3cc9f1c
gl/examples: update for other-context property removal
2014-10-30 18:58:50 +11:00
Matthew Waters
567185a277
glcontext: add more functionality to wrapped contexts
...
Implements get_current_context() and get_proc_address() for wrapped
contexts.
2014-10-30 18:58:50 +11:00
Matthew Waters
d2cbc7cc16
glshader: advertise the default vertex and fragment shaders on desktop GL
2014-10-30 18:58:49 +11:00
Matthew Waters
5e2e6f3326
glfilter: get the config from the correct pool
2014-10-28 18:27:11 +11:00
Matthew Waters
28105a6e7d
glfilter: avoid uninitialized variable size when chaining multiple glfilters
...
https://bugzilla.gnome.org/show_bug.cgi?id=739277
2014-10-28 18:01:27 +11:00
Matthew Waters
0289fbe2cd
glfilter: gst-indent file
2014-10-28 18:01:01 +11:00
Matthew Waters
81ceca1aea
glcontext: add api for retreiving the current context and api
...
that is current in the calling thread.
2014-10-28 17:33:20 +11:00
Matthew Waters
ce14777919
glprototypes: add vertex attribute array definitions
2014-10-28 17:33:20 +11:00
Matthew Waters
e40d70c69a
gl: propogate other-context using GstContext
2014-10-23 23:58:33 +11:00
Sebastian Dröge
af6e2228b2
gl/cocoa: Fix compiler warning
...
gstglwindow_cocoa.m: In function '-[GstGLNSView drawRect:]':
gstglwindow_cocoa.m:555: warning: 'GstGLNSView' may not respond to '-reshape'
gstglwindow_cocoa.m:555: warning: (Messages without a matching method signature
gstglwindow_cocoa.m:555: warning: will be assumed to return 'id' and accept
gstglwindow_cocoa.m:555: warning: '...' as arguments.)
2014-10-21 16:22:06 +02:00
Matthew Waters
2e49c99db3
glbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option
2014-10-21 02:00:09 +11:00
Wang Xin-yu (王昕宇)
5eb538f9e2
glcolorconvert: support RGB16/BGR16 video format upload
...
https://bugzilla.gnome.org/show_bug.cgi?id=738842
2014-10-20 12:55:39 +02:00
Brion Vibber
88b19bcf99
gl/cocoa: Fix for building on Mac OS X 10.10
...
Using NSApp directly seems to confuse something, as the compiler
was expecting an id<NSFileManagerDelegate>. Switched to using
[NSApplication sharedApplication], and specified the delegate
protocol on the window class as well.
https://bugzilla.gnome.org/show_bug.cgi?id=738740
2014-10-19 20:01:55 +02:00
Matthew Waters
4b019ba268
glfilter: add uploaded_buffer field
2014-10-14 16:54:01 +02:00
Sebastian Dröge
014cbbbb33
gl/cocoa: Add support for HiDPI displays
...
Without this our GL surface would be upscaled after rendering
by Cocoa, which would reduce image quality.
2014-10-09 10:56:06 +03:00
Matthew Waters
ccdd88eb5a
glcolorconvert: output why we cannot convert a buffer
2014-10-09 12:29:57 +11:00
Matthew Waters
9108c52a22
glcolorconvert: fix planar YUV download
...
- sample the u and v planes properly
- output the correctly scaled u and v planes for different chroma block sizes
2014-10-09 12:29:57 +11:00
Matthew Waters
9dc1f9be36
glcolorconvert: fix UYVY download green screen
2014-10-07 23:04:30 +11:00
Matthew Waters
2fb0b28f74
glcolrconvert: fix YUY2 download
...
- The shader was outputing the wrong values compared with raw
videotestsrc.
- deal with the texture edge properly.
- properly sample the 2x1 rectangle for the u and v values
- don't double sample the y value
2014-10-07 22:55:32 +11:00
Sebastian Dröge
c4cc2dfabf
gl/cocoa: Always update our viewport if Cocoa tells us something has changed
...
The visible rect and bounds might be the same as before, but Cocoa
might've changed our viewport without us nothing. This happens if
you hide the view and show it again.
2014-10-01 16:04:36 +03:00
Sebastian Dröge
061d55f535
gl/cocoa: Handle NSView::renewGState() properly
...
Don't update the screen until we redraw, this prevents flickering during
scrolling, clipping, resizing, etc
2014-10-01 11:55:51 +03:00
Matthew Waters
dc4b4832d4
glcolorconvert: convert xRGB into ARGB properly
...
The alpha channel might not be the last component so check which one
it is in and clobber that one instead.
2014-09-30 14:46:14 +10:00
Matthew Waters
7b0a30343a
glmemory: unset the opposite corresponding transfer flags when mapped with write
...
fixes consistency with consecutive gst_memory_map()'s with
flags & GST_MAP_WRITE
2014-09-30 01:49:05 +10:00
Sebastian Dröge
d4ed76e4da
gl/cocoa: Update viewport according to the current clipping
...
We have to update the GL viewport if the NSView is only partially
visible. Otherwise the content of the frame will be visibly offset.
2014-09-29 14:34:42 +03:00
Sebastian Dröge
8d92b6a364
gl/cocoa: Improve the NSApplication initialization
...
This is only for non-Cocoa apps but previously caused a 2 second
waiting during startup for Cocoa apps. This is unacceptable.
Instead we now check a bit more extensive if something actually
runs on the GLib default main context, and if not don't even
bother waiting for something to happen from there.
2014-09-29 10:57:18 +03:00
Sebastian Dröge
0cd19cbda3
gl/cocoa: NSView::drawRect() should call into reshape too
...
We a) need to render again because part of the window was
obscured and b) might need to reshape because of clipping
changes.
2014-09-29 10:57:18 +03:00
Sebastian Dröge
66cb4166d3
gl/cocoa: Call UI related API from the application main thread
2014-09-29 10:57:18 +03:00
Sebastian Dröge
2173d34462
gl/cocoa: Switch to a plain NSView subclass instead of NSOpenGLView
...
We don't and can't use NSOpenGLView as it's supposed to be used and
it gets into our way by being to clever in various situations.
2014-09-29 10:57:18 +03:00
Edward Hervey
e064d280ea
glcontext: Initialize variable
...
Avoids the following warning:
gstglcontext.c:647:58: error: 'prev' may be used uninitialized in
this function [-Werror=maybe-uninitialized]
2014-09-29 08:54:29 +02:00
Matthew Waters
fc2471eb54
glcontext: fixup error in sharegroup comment
2014-09-29 00:32:05 +10:00
Matthew Waters
3b9893192c
glcontext: detect the sharegroup case where the context are in different chains
...
In the end they will lead to the same root context in the tree so check that
for equality.
2014-09-29 00:24:28 +10:00
Matthew Waters
81c38c1d2b
glfilter: silence a warning with empty input caps
...
discovered with the doublecube example
gst_caps_get_features: assertion 'index < GST_CAPS_LEN (caps)' failed
2014-09-28 21:18:32 +10:00
Sebastian Dröge
c9283c95f6
gl/cocoa: Switch from our custom main loop to a GMainLoop
...
Simplifies code a lot and makes it more similar to the other backends.
2014-09-25 16:13:19 +03:00
Sebastian Dröge
bc52e41641
gl/cocoa: Clear the current GL context when it should happen
2014-09-25 16:12:24 +03:00
Matthew Waters
c44352b11f
gl: download whenever we have sysmem capsfeatures
...
Otherwise we could pass on a RGBA formatted buffer and downstream would
misinterpret that as some other video format.
Fixes pipelines of the form
gleffects ! tee ! xvimagesink
2014-09-24 13:16:30 +10:00
Matthew Waters
82a3a34475
glupload: fallback to upload if contexts cannot share GL resources
...
Fixes pipelines of the form
gleffects ! tee ! glimagesink
as tee does not pass on the allocation query.
2014-09-23 12:02:18 +10:00
Matthew Waters
d99b517b53
glcontext: add gst_gl_context_can_share
...
Which determines whether two GstGLContext's can share sharable
OpenGL resources.
2014-09-23 12:01:04 +10:00
Sebastian Dröge
8d457a4d18
gl: Let gst_gl_context_get_thread() return a new reference to the GThread
...
Otherwise it might go away in the meantime and the caller has some random pointer.
2014-09-22 10:09:24 +03:00
Anuj Jaiswal
d153b01280
gl: consecutive return, break statement
...
Signed-off-by: Anuj Jaiswal <anuj.jaiswal@samsung.com>
https://bugzilla.gnome.org/show_bug.cgi?id=736939
2014-09-22 16:17:15 +10:00
Matthew Waters
7216b360b7
gl/debug: desktop GL does not have the KHR suffixes
2014-09-22 12:21:22 +10:00
Tim-Philipp Müller
10997063a1
gl: add since markers for new API
2014-09-21 13:32:29 +01:00
Matthew Waters
64fc86844d
glmemory: add debug line for freeing textures
2014-09-21 21:42:41 +10:00
Matthew Waters
5b8d7a443e
glupload: provide the output buffer that is rendered into
...
Allows callers to properly reference count the buffers used for
rendering.
Fixes a redraw race in glimagesink where the previous buffer
(the one used for redraw operations) is freed as soon as the next
buffer is uploaded.
1. glimagesink uploads in _prepare() to texture n
1.1 glupload holds buffer n
2. glimagesink _render()s texture n
3. glimagesink uploads texture n+1
3.1 glupload free previous buffer which deletes texture n
3.2 glupload holds buffer n+1
4. glwindow resize/expose
5. glimagesink redraws with texture n
The race is that the buffer n (the one used for redrawing) is freed as soon as
the buffer n+1 arrives. There could be any amount of time and number of
redraws between this event and when buffer n+1 is actually rendered and thus
replaces buffer n as the redraw source.
https://bugzilla.gnome.org/show_bug.cgi?id=736740
2014-09-21 21:36:49 +10:00
Matthew Waters
e7bd332887
glcontext: add API to retreive the thread that context is active in
2014-09-21 21:30:58 +10:00
Ognyan Tonchev
5dc2843c86
glfilter: do not leak pool in error cases
...
https://bugzilla.gnome.org/show_bug.cgi?id=736732
2014-09-16 12:51:25 +03:00
Vasilis Liaskovitis
3c3b78508f
GstGLWindow: Introduce navigation thread
...
This thread dispatches navigation events. It is needed to avoid deadlocks
between window backend threads that emit navigation events (e.g. X11/GMainLoop
thread) and consumers of navigation events such as glimagesink, see
https://bugzilla.gnome.org/show_bug.cgi?id=733661
GstGlWindow_x11 thread is changed to invoke the navigation thread for navigation
dispatching, instead of emiting the event itself. Othe backends beside X11 do
not dispatch navigation events yet, but should use this thread when dispatching
these events in the future.
The navigation thread is currently part of GstGLWindow and not implemented in
separate subclasses / backends. This will be needed in the future.
gst_gl_window_x11_get_surface_dimensions is also changed to use a cached value
of the window's width, height. These values are now retrieved in the X11
thread, function gst_gl_window_x11_handle_event. This change is needed because
otherwise the XGetWindowAttributes gets called from the navigation thread,
leading to xlib aborting due to multithreaded access (if XInitThreads is not
called before, as is the case for gst-launch)
2014-09-09 21:47:02 +10:00
Wang Xin-yu (王昕宇)
9047a01f5f
gl: Add GSTGLAPI macro to the debug callback function
...
Fixes the Windows build.
https://bugzilla.gnome.org/show_bug.cgi?id=735565
2014-08-28 10:00:54 +03:00
Jan Schmidt
c93017a074
egl: Wrap KHR_create_context flags in an ifdef
...
EGL_CONTEXT_FLAGS_KHR and EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR
don't exist in the Android NDK. Wrap their usage in an #ifdef
EGL_KHR_create_context to fix the build there.
2014-08-26 12:41:35 +10:00
Matthew Waters
83a32dbddb
egl: fallback to a non-debug context if a debug one fails
...
The text for EGL_KHR_create_context added the possiblity for ES
contexts to ask for a debug context however that has not been
fully realized by all implementations. Fallback to a non-debug
context when the implementation errors.
2014-08-22 16:51:29 +10:00
Lubosz Sarnecki
5ae3d68590
gstopengl: add introspection support
...
https://bugzilla.gnome.org/show_bug.cgi?id=734482
2014-08-21 18:41:38 +10:00
Lubosz Sarnecki
d2cac06eeb
glshader: expose opengl handle in getter
...
https://bugzilla.gnome.org/show_bug.cgi?id=734482
2014-08-21 17:38:36 +10:00
Wang Xin-yu (王昕宇)
4c65eca7be
gl: check null before unref GstGLDisplay
2014-08-21 14:59:45 +10:00
Matthew Waters
14bd147a2d
gl: add prototype definition for KHR_debug
2014-08-21 10:03:07 +10:00
Matthew Waters
95a4585d4c
glcontext: implement the debug callback
...
For both GL_KHR_debug and ARB_debug_output. This allows us to
receive errors and other hints from the GL instead of querying after
every GL operation.
2014-08-20 23:26:26 +10:00
Matthew Waters
14a3484b14
gl: add prototypes for KHR_debug/ARB_debug_output
2014-08-20 23:26:26 +10:00
Matthew Waters
cb4fd36e7e
gl: don't take an extra ref on the display on set_context
...
gst_context_get_gl_display() returns a ref. Don't take another in
gst_object_replace().
2014-08-19 20:14:22 +10:00
Tim-Philipp Müller
21e6989848
glbufferpool: fix allocator leak in some cases
...
Spotted by Sebastian Rasmussen.
https://bugzilla.gnome.org/show_bug.cgi?id=734523
2014-08-13 18:05:40 +03:00
Vasilis Liaskovitis
4dacc4ba55
GstGLWindow, GstGLImagesink, x11: Scale navigation events on resized windows
...
If window is resized, GstStructure pointer values have to be rescaled to
original geometry. A get_surface_dimensions GLWindow class method is added for
this purpose and used in the navigation send_event function.
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-08-07 13:55:02 +10:00
Wang Xin-yu (王昕宇)
ba822e1dd0
glupload: don't determine if frame needs upload by pointer compare
...
https://bugzilla.gnome.org/show_bug.cgi?id=734269
2014-08-06 14:47:52 +10:00
Matthew Waters
8f045ab18c
gl/docs: remove superflous 'the'
2014-08-01 17:51:08 +10:00
Matthew Waters
707cb58004
gl: document GST_GL_* environment variables
...
https://bugzilla.gnome.org/show_bug.cgi?id=733245
2014-08-01 16:43:47 +10:00
Matthew Waters
750c70f8f5
glcontext: add a destroy function
...
that just calls the subclass
2014-07-31 18:46:33 +10:00
Matthew Waters
46db28ac2c
gl/x11: silence runtime warning
...
g_main_loop_quit: assertion 'loop != NULL' failed
2014-07-31 18:36:58 +10:00
Matthew Waters
acb38a2a79
glmemory: use the plane offsets to compute the size of the data pointer
...
Certain elements expect that there be a certain number of lines
that they can write into. e.g. for odd heights, I420, YV12, NV12,
NV21 (and others) Y lines are expected to have exactly twice the
number of U/UV lines.
https://bugzilla.gnome.org/show_bug.cgi?id=733717
2014-07-31 15:19:54 +10:00
Matthew Waters
89636392fa
glmemory: use GstVideoInfo everywhere
...
Simplifies a lot of the calling code
https://bugzilla.gnome.org/show_bug.cgi?id=733717
2014-07-31 15:19:54 +10:00
Matthew Waters
dc5b0c8c8d
glmemory: reenable the texture_rg support for !eagl
...
The GST_GL_HAVE_PLATFORM_EAGL is always defined we need to compare
against the value instead.
2014-07-29 11:47:55 +10:00
Vasilis Liaskovitis
05f908bf45
glwindow/11: Emit signals for mouse and key navigation events
...
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-07-24 12:24:34 +02:00
Sebastian Dröge
eab38c5b21
glwindow: Constify string parameters to the send_*_event() functions
2014-07-24 12:23:03 +02:00
Vasilis Liaskovitis
41632d486b
GstGLWindow : Add mouse-event and key-event signals for navigation
...
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-07-24 12:48:44 +10:00
Wang Xin-yu (王昕宇)
1adb0a77d6
gl: fix multi gl object leaks
...
1. fix FBO leaks in decide_allocation
2. fix texture leaks in decide_allocation and reset
3. fix texture leaks in FBO incomplete error path
2014-07-24 11:46:56 +10:00
Sebastian Dröge
acb1d5afc3
gl: Link to all required libraries but not more
2014-07-11 12:06:48 +02:00
Sebastian Dröge
92d00d0233
gl: Move GstGLMixer to the plugin for now
...
It depends on GstAggregator and we don't want to install headers
for that yet.
https://bugzilla.gnome.org/show_bug.cgi?id=732207
2014-07-11 09:41:05 +02:00
Julien Isorce
6e51790a11
glcocoa: initalize NSApp asap when using gst-launch
...
See https://bugzilla.gnome.org/show_bug.cgi?id=732661
2014-07-03 10:39:44 +01:00
Sebastian Dröge
4cbddec9fe
eagl: Disable usage of R and RG textures on iOS
...
They don't work currently and just render zeroes, while the
fallback code path with LUM and LUM_ALPHA textures still works.
https://bugzilla.gnome.org/show_bug.cgi?id=732390
2014-06-30 19:16:13 +02:00
Matthew Waters
c39105524a
glcolorconvert: free pixel swizzling information
2014-06-26 11:25:37 +10:00
Matthew Waters
a03dbd11e4
glmixer: remove redundant/unused lock
...
Use the GstObject lock instead
2014-06-26 11:15:56 +10:00
Matthew Waters
de05daec80
glmixer: remove redundant creation and free of GPtrArrays
...
Also plugs a memory leak
2014-06-26 11:12:49 +10:00
Matthew Waters
f686c890e4
glmixer: plug a memory leak for the caps
...
gst_query_set_caps_result() takes a ref on the caps
2014-06-26 10:54:38 +10:00
Matthew Waters
596353854f
glmixer: intersect with the filtercaps if available
2014-06-26 10:31:41 +10:00
Matthew Waters
8ef71b5db7
gl: update gles2 compatability header
2014-06-26 10:31:41 +10:00
Matthew Waters
720405b561
glfilter: pass through the allocation query when in passthrough mode
...
Otherwise two GL elements on either side will fail to use the same
GL context.
2014-06-25 22:05:37 +10:00
Matthew Waters
a2bd2ce83b
glfilter: prefer passthrough for non-sysmem caps
2014-06-25 21:50:40 +10:00
Julien Isorce
f63c91ab71
glfilter: handle NULL decide_query which means passthrough
...
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
2014-06-25 06:56:33 +01:00
Julien Isorce
045aa4ee7e
glfilter: prepend intersection to src caps
...
Prefer to stay in the same memory space if possible.
Also it let a chance to do passthrough.
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
2014-06-25 06:56:25 +01:00
Matthew Waters
1d16cd50a3
gl: add a scary note about initializing thread support for the winsys
...
We cannot do it as the winsys may crash if we initialize too late.
Example, GLX contexts with Intel drivers:
Intel requires the X Display to be the same in order to share GL
resources across GL contexts. These GL contexts are generally
accessed from different threads. Without winsys support it is
nearly impossible to guarentee that concurrent access will not
occur. This concurrent access could result in crashes or abortion
by the winsys (xcb).
https://bugzilla.gnome.org/show_bug.cgi?id=731525
2014-06-24 23:41:00 +10:00
Matthew Waters
078c789ffa
gluploadmeta: reenable GLMemory upload path
2014-06-23 21:43:10 +10:00
Matthew Waters
d52ef19d7f
gl: move gles2 compat header to glprototypes
2014-06-22 09:48:22 +10:00
Matthew Waters
838fd776cf
glbufferpool: provide a consistent API regardless of platform
2014-06-22 09:48:22 +10:00
Matthew Waters
1970659fa1
gl: mark library as API unstable
2014-06-22 09:48:22 +10:00
Thibault Saunier
4ce8b409cc
gl: Port glmixer to the GstVideoAggregator baseclass
...
https://bugzilla.gnome.org/show_bug.cgi?id=731921
2014-06-20 19:53:33 +02:00
Matthew Waters
189353619c
glframebuffer: don't segfault needlessly with GLES2
...
gst_gl_framebuffer_use_v2 was using a function that is not available
with GLES2
2014-06-17 23:21:15 +10:00
Matthew Waters
7899b9af9f
gldownload: plug a memory leak
2014-06-15 15:17:07 +10:00
Matthew Waters
015beb5404
glmixer: allow the subclass to choose the sink pad type
...
Allows custom properties to be placed on the sink pads by subclasses
2014-06-15 12:28:45 +10:00
Matthew Waters
e1e2a88358
glmixer: send the stream-start event
...
and the caps event after.
https://bugzilla.gnome.org/show_bug.cgi?id=730944
2014-06-12 14:58:47 +10:00
Matthew Waters
d7f8cc9a78
glfilterapp: remove the reshape/draw properties
...
The reshape property was never used.
Replace the draw property with a signal.
Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
https://bugzilla.gnome.org/show_bug.cgi?id=704507
2014-06-12 12:49:42 +10:00
Matthew Waters
9e662b8229
glmixer: lock the size of mix->frames to the number of pads
...
Fixes a segfault with decodebin ! glmixer where the request pads on
both sides were being requested after the state change to PAUSED.
Also fixes dynamically adding and removing pads while glmixer is
in a state >= PAUSED.
2014-06-12 12:18:23 +10:00
Matthew Waters
574b29f2c4
gl/wayland: create a dummy display instead of an EGLDisplay
...
Currently, GstGLWindowWaylandEGL holds the wayland display connection
If we create the EGLDisplay at the GstDisplay creation time, then
libEGL will internally open another connection to the wayland server.
These two display connections are unable to communicate resulting in
no window output/display and hangs inside libEGL.
Eventually we will move the wl_display from GstGLWindow to GstGLDisplay.
2014-06-05 18:52:11 +10:00
Matthew Waters
59088f5a90
glupload: always release the previous buffer
...
Fixes the case where _perform_with_buffer() is called without
intervening calls to _release_buffer() as is the case on start up
with glimagesink.
Also release the buffer when reseting the upload.
https://bugzilla.gnome.org/show_bug.cgi?id=731107
2014-06-03 14:03:21 +10:00
Sebastian Dröge
91581cf531
glcontext: Handle (unlikely) NULL return of gl->GetString (GL_VERSION) more gracefully
...
CID 1219858
2014-06-02 09:23:39 +02:00
Matthew Waters
0f4485fc66
glmemory: remove uneeded gl api ifdefs
2014-05-30 12:29:54 +10:00
Matthew Waters
1f90323a4d
glwindow_x11: allow expose events to redraw our window
...
otherwise we will not update the window contents on low framerate
streams until the next buffer
https://bugzilla.gnome.org/show_bug.cgi?id=723529
2014-05-30 11:51:01 +10:00
Matthew Waters
4ee5967414
glcontext: fix up assertion
...
error: 'return' with no value, in function returning non-void
2014-05-30 10:46:25 +10:00
Matthew Waters
da35876537
glfeature: remove GST_GL_API_GLES3
...
instead check the gl version using gst_gl_context_check_gl_version()
2014-05-30 10:29:37 +10:00
Matthew Waters
1334884a61
glcontext: check for GLES versions
2014-05-30 10:29:37 +10:00
Matthew Waters
5273b726a6
gl/context: add check_gl_version
2014-05-30 10:29:37 +10:00
Edward Hervey
45ec777cea
glcontext: Try GLX support before EGL support
...
If available, glx has got a better chance of being the Gl platform
we want to use compared to EGL
2014-05-29 17:12:41 +02:00
Edward Hervey
30622337ab
glcontext: Try to open lib{EGL|GL|GLESv2}.so.1 before lib{EGL|GL|GLESv2}
...
Fixes issues with .so (without numbering) being installed for development
(such as from mesa-dev) but actual driver (with numbering) coming from
some other place (like nvidia drivers)
2014-05-29 17:12:41 +02:00
Sebastian Dröge
f56aa3e32c
glupload: Fix assertion after API changes
2014-05-29 10:37:02 +02:00
Matthew Waters
3390b2b385
gl/colorconvert: keep our private pointer
...
again, avoid to much trigger
2014-05-29 18:33:10 +10:00
Matthew Waters
4b5c5a7d37
gl/colorconvert: use GstObject's lock instead of our own
2014-05-29 17:29:41 +10:00
Matthew Waters
768c6de84e
gl/colorconvert: remove unnecassary pointer inderection
2014-05-29 17:12:03 +10:00
Matthew Waters
07919d874c
gl/upload: re add the upload meta to the private struct
...
try and avoid being to trigger happy
2014-05-29 16:45:37 +10:00
Matthew Waters
eff3da8871
gl/upload: small code cleanup and gst-indent
2014-05-29 16:30:14 +10:00
Matthew Waters
9eb6f536b9
gl/download: use GstObject's lock instead of out own
2014-05-29 16:30:13 +10:00
Matthew Waters
aa102d2660
gl/upload: use GstObject's lock instead of our own
2014-05-29 16:30:13 +10:00
Matthew Waters
75c7e5019c
gl/filter: also remove the width/height in transform_caps
...
allows scaling in the filters
2014-05-29 16:30:13 +10:00
Matthew Waters
a181460755
gl/colorconvert: optimise the same format case
...
simply return the input buffer unchanged
2014-05-29 16:30:13 +10:00
Matthew Waters
ec8a617e8f
gl/colorconvert: fix YUY2/UYVY download for RG/LA textures
2014-05-29 16:30:13 +10:00
Matthew Waters
f7f92e6d7a
gl/colorconvert: allocate output buffers
...
Allows the nop optimisation by simply reffing the input buffer.
2014-05-29 16:30:13 +10:00
Matthew Waters
21b6ca75c3
gl/upload: fix incorrect type in macros
2014-05-28 14:43:43 +10:00
Matthew Waters
6ce3b82efe
gl/upload: add GstGLUploadMeta object
...
That simply deals with the provider aspect of GstVideoGLTextureUploadMeta.
2014-05-28 14:41:35 +10:00
Matthew Waters
3ddcec8062
gl/win32: make send_message reentrant
...
I could not find a comparable win32API function so keep the running
thread pointer to compare against.
https://bugzilla.gnome.org/show_bug.cgi?id=730782
2014-05-28 00:57:25 +10:00
Tim-Philipp Müller
1f1bb8bbe3
glcolorconvert: fix compiler warning
...
gstglcolorconvert.c:1133:11: error: 'j' may be used uninitialized in this function
Was used uninitialized when jumping to out label
in error case.
2014-05-27 13:57:18 +01:00
Matthew Waters
60b6ef981e
gl/colorconvert: operate on buffers instead of memories
2014-05-27 21:59:12 +10:00
Julien Isorce
ce4a2b6828
gl: add missing cgl and eagl context type
...
https://bugzilla.gnome.org/show_bug.cgi?id=729245
2014-05-27 08:54:20 +01:00
Julien Isorce
fbe6dd9c5f
gl: rename platform cocoa to cgl
...
Before:
GST_GL_PLATFORM=cocoa GST_GL_WINDOW=cocoa
gst-launch-1.0 videotestsrc ! glimagesink
After:
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa
gst-launch-1.0 videotestsrc ! glimagesink
but still pass --enable-cocoa to configure script
because currently it can only be used with cocoa API.
We could later have cgl/gstglcontext_cgl.h that manages
a CGLContextObj directly and cocoa/gstglcontext_cocoa.h
would just wrap it.
So that it could be used with other Apple's window APIs.
https://bugzilla.gnome.org/show_bug.cgi?id=729245
2014-05-27 08:46:16 +01:00
Matthew Waters
397928714d
gl/mixer: don't segfault when we don't have a buffer
...
https://bugzilla.gnome.org/show_bug.cgi?id=729257
2014-05-27 13:57:09 +10:00
Matthew Waters
1512666ac7
gl/window_x11: avoid BadDrawable error on shutdown
2014-05-27 13:57:09 +10:00
Matthew Waters
dad342454b
gl/context_egl: pass the vars in the right order to DestroySurface
...
https://bugzilla.gnome.org/show_bug.cgi?id=728514
2014-05-27 10:49:26 +10:00
Nicolas Dufresne
075701669e
glfilter: Remove format information to allow color convert again
...
We also need to remove the format information, as glfilter can do
color convertion. This code was imported from videoconvert.
https://bugzilla.gnome.org/show_bug.cgi?id=729861
2014-05-25 09:03:32 -04:00
Matthew Waters
dbffcffaee
gl/memory: allocate the correct memory size
...
and avoid wasting resources we will never need
https://bugzilla.gnome.org/show_bug.cgi?id=730703
2014-05-25 11:45:59 +10:00
Nicolas Dufresne
a7866aa9e5
glcolorconvert: Fix YUY2 and UYVY support with luminance_alpha
...
https://bugzilla.gnome.org/show_bug.cgi?id=730666
2014-05-24 08:56:10 -04:00
Matthew Waters
13402f0b98
gl/memory: provide compatability defines
...
fixes build on android/OS X
2014-05-23 12:07:50 +10:00
Matthew Waters
26e9517355
gl/colorconvert: remove scratch texture for YUY2/UYVY
...
We can get all our data from the one RG/LA texture with some shader magic.
https://bugzilla.gnome.org/show_bug.cgi?id=728890
2014-05-23 11:25:11 +10:00
Matthew Waters
9a0129a0e4
gl/memory: RGBA/UNSIGNED_BYTE only format supported by ReadPixels GLES2
...
Error out in case we attempt to read with any other invalid format.
2014-05-23 11:25:11 +10:00
Matthew Waters
0c8ccd8c5f
gl/memory: generate textures with a sized internal format
...
Required in order to generate RG and RED textured with GLES3.
2014-05-23 11:25:11 +10:00
Matthew Waters
001b92ba12
gl/memory: implement GL_EXT_texture_rg support
...
Which is used by default over the Luminance formats due to it
being color renderable with fbos (and deprecation/removal with
GL 3.x).
https://bugzilla.gnome.org/show_bug.cgi?id=729750
https://bugzilla.gnome.org/show_bug.cgi?id=704222
https://bugzilla.gnome.org/show_bug.cgi?id=728890
2014-05-23 11:25:11 +10:00
Matthew Waters
746d021d70
gl/context: add gl extension checking to check_feature()
...
Useful for extensions that do not define any new GL API entrypoints
but can still modify behaviour when used.
2014-05-22 23:55:30 +10:00
Matthew Waters
0fb0286553
gl/download: fixup YUY2/UYVY download
...
Regression from 2da979831e
as it did
not update the download code to reflect the change in texture format.
2014-05-22 23:55:30 +10:00
Matthew Waters
42f4869593
gl/filter: fixup passthrough bufferpool
...
In a pipeline like so:
videotestsrc ! gleffects ! videoconvert ! sink
gleffects was simply passing the videoconvert bufferpool to videotestsrc
and not creating a glbufferpool. videobufferpool would then fail
to allocate from the glallocator.
2014-05-21 20:02:45 +10:00
Matthew Waters
2da979831e
gl/upload: switch the 'master' texture for YUY2, UYVY
...
From d4bcef3204
on, using a RGBA
texture to hold the data causes the glmemory to have half width
and a scaling of [2, 1]. Using a LA texture solves this problem
however cannot be attached to the framebuffer for copying into
a RGBA texture. Which will be solved by moving to EXT_texture_rg.
https://bugzilla.gnome.org/show_bug.cgi?id=728890
2014-05-21 10:26:21 +10:00
Matthew Waters
37c08c58c5
gl/eglimage: add eglimage context feature
...
Allows us to selectively use EGLImages only when available
https://bugzilla.gnome.org/show_bug.cgi?id=728234
2014-05-20 23:37:52 +10:00
Matthew Waters
b30023f571
gl/context: add generic feature checking
...
At the moment it simply delegates to the subclass.
2014-05-20 22:26:55 +10:00
Sebastian Dröge
911ec0d3ef
glcontext: Add more assertions to make sure that everything sets the GError during context creation if something fails
2014-05-19 12:21:13 +02:00
Matthew Waters
ce561913de
gl/download: update to be similar to the glupload semantics
2014-05-14 11:38:01 +10:00
Matthew Waters
b0a1e1f15b
gl/colorconvert: fix up alpha clobbering
...
Previously it would only work if the alpha value was in the last
component (RGBx, BGRx). Now it works wherever the alpha value may
be (xRGB, xBGR, etc).
2014-05-14 11:38:01 +10:00
Nicolas Dufresne
5c4ebaca4f
glfilter: Fix building without EGL support
...
This fixes the OSX build and any builds with --disable-egl. That issue
was introduced in "glfilter: rewrite transform_caps to preserve caps fields".
https://bugzilla.gnome.org/show_bug.cgi?id=729861
2014-05-13 13:17:01 -04:00
Julien Isorce
e46de48f10
glfilter: rewrite transform_caps to preserve caps fields
...
https://bugzilla.gnome.org/show_bug.cgi?id=729861
2014-05-13 12:43:42 -04:00
Matthew Waters
1e90a68aec
gl/colorconvert: use the texture scaling from the gl memory
...
The colorconvert values were not being used at all.
https://bugzilla.gnome.org/show_bug.cgi?id=729896
2014-05-13 11:44:06 -04:00
Nicolas Dufresne
d4bcef3204
glmemory: Fix handling of stride with alignement larger then 8
...
Setting a scaled factor for X coordinate is not enough as the indexer
will still think stride is shorter and will not fully skip it. Instead,
update width, so the lines are as expected. Combined with the scale, it
will hide the cropped portion.
https://bugzilla.gnome.org/show_bug.cgi?id=729896
2014-05-13 11:43:45 -04:00
Nicolas Dufresne
2d0a791348
glupload: Ensure we still have a texture after upload_set_format()
...
gst_gl_upload_set_format() resets the upload, hence the texture.
So we need to ensure we have a texture after this call when
uploading.
2014-05-12 18:26:12 -04:00
Nicolas Dufresne
864e1511c7
glupload: Correctly update the video info from video meta
...
Using gst_video_info_set_format() isn't complete when updating
a video info from video meta.
2014-05-12 18:26:12 -04:00
Nicolas Dufresne
4f84a6124a
glupload: Correctly update video info in upload fallback
...
When the upload accelerated method fails, we fallback to an upload,
but the video info was not correctly updated.
2014-05-12 18:26:12 -04:00
Julien Isorce
d93cd25e2d
gl/upload: set out_tex after reset, not before
...
Fix a regression introduced recently with the lazy init.
It was happening when calling gst_video_gl_texture_upload_meta_upload
from an aplication. So not using gst_gl_upload_perform_with_buffer.
2014-05-12 13:43:19 +01:00
Matthew Waters
f14e5ea027
gl/upload: update the video info on mapping a video frame
...
The buffer should contain the most specific data on how the data is
formatted. We should use this information.
https://bugzilla.gnome.org/show_bug.cgi?id=729896
2014-05-12 22:13:19 +10:00
Matthew Waters
bd3e600710
gl/convert: clobber alpha channel when needed
...
Needed in the conversion from padded RGB formats to formats with an
alpha channel. e.g. BGRx -> ABGR, etc
https://bugzilla.gnome.org/show_bug.cgi?id=729742
2014-05-12 22:10:19 +10:00
Matthew Waters
a4f0fbe4c3
gl/upload: avoid performing color conversion when there is no need
...
One such example is when the buffer contains GstGLMemory in the
RGBA format
https://bugzilla.gnome.org/show_bug.cgi?id=729278
2014-05-12 22:09:32 +10:00
Matthew Waters
91717ca5c2
gl/colorconvert: choose the right alpha component for AYUV -> RGBA
2014-05-11 14:04:22 +10:00
Matthew Waters
0c92f185c4
gl/upload: update the respective state when we cache textures/data
2014-05-11 10:45:34 +10:00
Matthew Waters
ecae7a1a41
gl/upload: cache the textures that we are using
2014-05-10 23:54:34 +10:00
Matthew Waters
c6e3f51ca5
gl/upload: avoid recreating the GLMemory struct for output textures
2014-05-10 23:05:03 +10:00
Nicolas Dufresne
afea9c6fe1
gl: Fix some of the error handling
2014-05-09 18:59:46 -04:00
Nicolas Dufresne
803f2c3dc0
glupload: Update GstVideoInfo after the buffer is mapped
...
gst_video_frame_map() will store an updated video info base
on the video meta. In order to have the right stride and offset
we should update that video info accordingly.
2014-05-09 17:59:43 -04:00
Sebastian Dröge
411f367dfc
gl: Fix memory leak
...
CID #1212171
2014-05-09 15:42:08 +02:00
Matthew Waters
2dcbf08d73
gl/colorconvert: preserve alpha in AYUV <-> RGBA conversions
...
https://bugzilla.gnome.org/show_bug.cgi?id=729743
2014-05-09 22:32:11 +10:00
Matthew Waters
34b55f33f2
gl/colorconvert: implement lazy init
2014-05-09 22:32:11 +10:00
Julien Isorce
dff8abd57a
gl/upload: set initted to TRUE when _init_upload succeeded
2014-05-09 13:07:16 +01:00
Sebastian Dröge
5c960069e4
gldisplay: Use GST_STR_NULL() for printing possibly NULL strings and print all variables we use
...
Fixes compiler warning about set but not used platform_choice variable
among other things.
2014-05-08 22:50:27 +02:00
Matthew Waters
ffe2c1f3c1
gl/upload: fix compilation on OS X
2014-05-08 17:28:11 +10:00
Matthew Waters
b0b630c69c
gl/upload: fail propoerly if init fails
2014-05-08 15:40:33 +10:00
Matthew Waters
c247be334a
gl: make all GObjects inherit from GstObject
...
Aids memory leak debugging with GST_TRACE=mem-live
2014-05-08 15:33:43 +10:00
Matthew Waters
a49a371710
gl/upload: implement lazy init
...
Rename init_format to set_format
2014-05-08 15:33:43 +10:00
Matthew Waters
5405273b0a
gl/upload: add get_format method
...
Simply retreives the format set by init_format
2014-05-08 14:03:57 +10:00
Matthew Waters
810d6710d4
gl/filter: attempt to passthrough the pool if the caps are the same
...
Reduces the number of glbufferpool instances required for >=2
consecutive GL elements in a pipeline.
2014-05-08 14:03:57 +10:00
Matthew Waters
c2cdac278e
gl/filter: always initialize the upload object
2014-05-08 14:03:50 +10:00
Matthew Waters
a27589629d
gl: advertise GstGLMemory usage in the caps as capsfeatures
...
https://bugzilla.gnome.org/show_bug.cgi?id=729658
2014-05-07 21:48:57 +10:00
Matthew Waters
ee95595af0
gl/display: avoid endless recursion for cocoa
2014-05-07 19:07:23 +10:00
Julien Isorce
d4fe519c2e
gl: do not allocate the target texture of an EGLImage
...
The target texture of an EGLImage is the texture bind just
before calling glEGLImageTargetTexture2D.
As we currently only support a gl texture as the source of an EGLImage
the gl texture is actually already allocated when creating the eglimage.
I also see some cases where it fails to upload an eglimage when
glTexImage2D is called on the target.
2014-05-06 15:39:12 +01:00
Julien Isorce
531e19214a
gl: allow to avoid calling glTexImage2D(w, h, NULL) when generating a texture
...
Just pass 0 as width or height to gst_gl_context_gen_texture.
2014-05-06 15:39:12 +01:00
Julien Isorce
2115f11f0b
gl: no need to initialize a frame buffer object to upload an eglimage
...
Fix https://bugzilla.gnome.org/show_bug.cgi?id=729588
2014-05-06 15:39:12 +01:00
Julien Isorce
65381ee664
gl: use GST_CAT_ERROR instead of GST_ERROR_OBJECT
...
It fixes segault when GST_DEBUG is at least level 1 and eglCreateImage fails
2014-05-06 15:39:12 +01:00
Julien Isorce
dd8929a272
gl: delete texture used with GstVideoGLTextureUploadMeta
2014-05-06 15:39:12 +01:00
Julien Isorce
73a3c173c7
gl: use gst_gl_context_gen_shader helper instead of duplicating code
2014-05-06 15:35:00 +01:00
Matthew Waters
f19e5abcb8
gl/display: clean up pre gstglcontext api and struct fields
...
https://bugzilla.gnome.org/show_bug.cgi?id=729551
2014-05-06 21:08:30 +10:00
Matthew Waters
c28dd9b0d3
gl/display: add get_handle_type
...
https://bugzilla.gnome.org/show_bug.cgi?id=729551
2014-05-06 21:08:30 +10:00
Matthew Waters
1eeecae29e
gl/display: avoid opening the X11 display on systems with Cocoa (OS X)
...
https://bugzilla.gnome.org/show_bug.cgi?id=729551
2014-05-06 21:08:30 +10:00
Matthew Waters
8743301af9
gl/window: fix string length check for eagl
2014-05-06 21:08:30 +10:00
Matthew Waters
b694b292b9
gl/display: check the correct env variable for choosing an egl display
...
GST_GL_WINDOW is used for window system specific choices.
An EGLDisplay can be created from window systems with egl support by using
eglGetDisplay().
https://bugzilla.gnome.org/show_bug.cgi?id=729551
2014-05-06 21:07:38 +10:00
Edward Hervey
48f770a2df
gl/cocoa: Use OBJCFLAGS where needed
...
Should fix usage of c-compiler-only flags with an objective-c compiler
2014-05-06 12:57:36 +02:00
Matthew Waters
dfc6745143
gl: use the bufferpool's upload when available
...
Avoids duplicating GL resources
https://bugzilla.gnome.org/show_bug.cgi?id=728872
2014-05-02 15:59:28 +10:00
Julien Isorce
cf509574be
gl: show internal cocoa window on top of others
...
Useful when your OSX terminal is fullscreen
https://bugzilla.gnome.org/show_bug.cgi?id=728127
2014-05-02 06:03:23 +01:00
Matthew Waters
b903c61ceb
gl/pool: init the upload object on start
...
Theoretically, set_config could be called multiple times
2014-05-02 14:16:49 +10:00
Sebastian Dröge
cad1bb32c8
gl: Try harder to load symbols from the correct place
...
This commit makes the loading of the GModules threadsafe, and
always first tries to load the symbol for the GL library that
is selected for the current context. Only then it falls back
to looking into the current module (NULL), and only as a last
resort the context specific function (e.g. eglGetProcAddress())
is called.
Also add configure parameters to select the names of the library
modules instead of using the defaults, and let the defaults be
independent of the G_MODULE_SUFFIX.
https://bugzilla.gnome.org/show_bug.cgi?id=728753
2014-05-01 14:36:54 +02:00
Matthew Waters
598a79a5e2
gl/mem: implement texture copying between formats with strides properly
...
Previously, we used the width to determine the amount of data to be
copied using pbos. This, makes it allocate enough data for the
the strides as well.
2014-05-01 14:00:04 +10:00
Matthew Waters
29ff67a60a
gl/mem: pad the public struct
2014-05-01 14:00:04 +10:00
Nicolas Dufresne
441ac82d7f
gl: no need to provide full lib path to load symbols
...
- Make gstgl work on Mali
- Keep it work on RPI
- fallback to NULL name module if fails with usual lib name
https://bugzilla.gnome.org/show_bug.cgi?id=728753
2014-04-30 15:16:06 -04:00
Julien Isorce
64e5b5a203
gl: add convenient functions to setup default vertex and fragment shaders
...
Most of our 2D filters use the same simple vertex shader.
Also define the default fragment shader as the identity.
Avoid duplicating the same vertex and fragment shader text.
2014-04-30 15:35:49 +01:00
Philippe Normand
eee4f95a1f
gl: add missing G_BEGIN/END_DECLS in utils header
2014-04-29 19:24:08 +01:00
Jan Schmidt
4296dc12f7
gl: Reduce noisy Info level output to LOG
2014-04-29 22:19:37 +10:00
Julien Isorce
1525fa8bad
gl: use gst_gl_platform_from_string because we support gl shareList on all platforms
2014-04-28 15:59:06 +01:00
Julien Isorce
6a18a1346b
glfilter: only warn when other_context attribute is set
...
Fix false positive
2014-04-28 15:59:06 +01:00
Julien Isorce
9cb3f93b4a
gl: fix string literal warning
...
warning: format not a string literal, argument types not checked [-Wformat-nonliteral]
2014-04-28 15:59:06 +01:00
Nicolas Dufresne
70350bd89e
gl/x11: Removed unused variable
2014-04-24 13:59:51 -04:00
Sebastian Dröge
eb88f19c10
gl/x11: Get rid of unneeded second display connection and do everything from the main loop
2014-04-24 19:11:31 +02:00
Sebastian Dröge
42a3bb7d6e
gl/x11: Block rendering until swapbuffers is called and don't go via X11 events as unneeded indirection
...
This should fix QoS problems, where basesink believed it was rendering with
20FPS but actually we were just queueing up X11 Expose events and only once
in a while something was rendered.
2014-04-24 19:11:31 +02:00
Julien Isorce
b92b86bdd9
gl/rpi: do not scale to full screen
...
Having a 640x360 movie being scaled to 1900x1200 does not look nice
2014-04-24 15:26:17 +01:00
Julien Isorce
562399a71a
gl/rpi: change dispmanx attributes of existing element instead of creating a new one
...
I was lucky that:
e1 = vc_dispmanx_element_add ()
eglCreateWindowSurface (e1)
vc_dispmanx_element_remove (e1)
e2 = vc_dispmanx_element_add ()
resulted in having e2 equal to e1. And also having the egl surface
that does not allocate its buffers before the first draw.
2014-04-24 15:26:17 +01:00
Julien Isorce
9bae6a9c2e
gl/rpi: ensure the dispmanx element to be opaque
...
So that we ensure it does not get alpha composited with other
dispmanx elements like the desktop.
2014-04-24 15:26:17 +01:00
Julien Isorce
510040e033
gl/cocoa: pass a NSView to set_window_handle instead of a NSWindow
...
Fix backwards compatibility
https://bugzilla.gnome.org/show_bug.cgi?id=728451
2014-04-24 10:37:00 +01:00
Julien Isorce
162dfcdf75
gl/cocoa: only draw once the window has been resized
...
It avoids to draw the first frame with an incorrect view port.
2014-04-24 09:09:20 +01:00
Julien Isorce
aa4bdcd707
gl/cocoa: set the view to use for drawing by the context
...
It avoids to draw to an invalid buffer.
Withtout this the default frame buffer is undefined:
glBindFramebuffer (GL_FRAMEBUFFER, 0)
Visually you could see some white frames at the beginning
when lunching videotestsrc ! glimagesink
With OpenGL Profiler from XCode you could see some
GL_INVALID_FRAMEBUFFER_OPERATION for the first frames
2014-04-24 09:09:13 +01:00
Julien Isorce
1ced9b1005
gl: fix declaration-definition mismatch for _init_upload
2014-04-23 21:10:07 +01:00
Julien Isorce
453245304d
gl/bufferpool: do not reset upload when set_config does not change the caps
...
With videotestsrc ! glimagesink it was reset 3 times
2014-04-23 21:10:03 +01:00
Julien Isorce
8fd840166b
gl: use #ifdef instead of #if for __APPLE__
...
warning: "__APPLE__" is not defined [-Wundef]
with gcc version 4.7.2 20120731 (prerelease)
(crosstool-NG linaro-1.13.1+bzr2458 - Linaro GCC 2012.08)
2014-04-23 21:09:58 +01:00
Nicolas Dufresne
9205bcdedb
glmemory: User g_slice_new0 to ensure fully initilized structure
...
The pbo pointer not being initialized would trigger a use of unitilialized variable
in valgrind.
2014-04-23 12:42:44 -04:00
Vincent Penquerc'h
6ec86ca1dc
gl: prevent division by 0 on unsupported texture type
...
Coverity 1199697
2014-04-21 13:23:45 +01:00
Jan Schmidt
b2fe0c50ff
glcolorconvert: Fix bt709 conversion matrices.
...
Fix the sign on one entry in the bt.709 YUV->RGB conversion
matrix, and the corresponding inverse matrix. Fixes really
wrong colouring of some videos.
2014-04-21 22:03:15 +10:00
Julien Isorce
d93ed2b870
gl: allow to include GLES/gl.h
...
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-04-15 17:40:54 +01:00
Sebastian Dröge
e5d96d052b
gl/eagl: Fix compilation
2014-04-13 19:20:32 +02:00
Sebastian Dröge
d3d1b5a5e2
gl/eagl: Notify the window's resize callback about surface dimension changes
...
https://bugzilla.gnome.org/show_bug.cgi?id=728107
2014-04-13 16:55:26 +02:00
Sebastian Dröge
ef509077db
gl/eagl: Remove spurious private struct pointer
2014-04-13 16:55:26 +02:00
Sebastian Dröge
5db4db6836
gl/android: Notify the window's resize callback about surface dimension changes
...
https://bugzilla.gnome.org/show_bug.cgi?id=728107
2014-04-13 16:55:26 +02:00
Matthew Waters
7f37505503
gl/context: output available extensions
2014-04-13 13:49:22 +10:00
Matthew Waters
24f533fae7
gl/context: provide get_gl_version
2014-04-13 13:44:31 +10:00
Julien Isorce
0586e49726
gl/color: restore viewport dimensions when fbo done
...
Regression introduced by 95abfda139
.
It caused to display the wrong frame size when resizing the window.
2014-04-13 10:00:46 +10:00
Sebastian Dröge
47f7bf269a
gl: Import QuartzCore/QuartzCore.h for CAEAGLLayer on older iOS versions
2014-04-12 22:45:30 +02:00
Sebastian Dröge
ae81268565
gl: Add support for iOS EAGL platform
...
https://bugzilla.gnome.org/show_bug.cgi?id=703341
2014-04-12 22:25:13 +02:00
Julien Isorce
6b2c24d0c4
gl/cocoa: make gst_gl_window_cocoa_send_message_async re-entrant
...
Backends that use g_main_context_invoke are re-entrant.
Il allows to call two nested gst_gl_context_thread_add.
ex: init_upload / init_colorconvert
2014-04-12 17:33:44 +01:00
Julien Isorce
871ddef9ce
gl/cocoa: fix NSAutoreleasePool initialization
2014-04-12 15:51:47 +01:00
Julien Isorce
3c49f0f42a
gl/cocoa: ensure to call NSApplication:sharedApplication in the main thread
...
"(NSApplication *)sharedApplication This method also makes a connection
to the window server and completes other initialization"
The implicit thing which is not mentioned is that it required
to be called in the main thread.
Fix a regression introduces by 82b7c915bb
When using with gst-launch, it was not possible to click on the close
cross of the window anymore which is a bit anoying and also because
it's was possible before.
Prior to this commit the GstGLContextCocoaClass was initialized
in the main thread because gst_gl_context_new was called in the
state change function from going from ready to paused.
From this commit this call is done from the streaming thread.
So that the call to [NSApplication sharedApplication];
was not done in the main thread anymore.
We now ensure that by assuming there is a GMainLoop running.
It's for debugging purpose so that's ok to do that. Also
note we already do this assumtion to run app itereations.
The regression had no consequence on the cocoa/videooverlay example
(that should be moved from gst-plugins-gl to -bad) because the
application is responsible for that necessary call.
2014-04-12 15:46:47 +01:00
Julien Isorce
995db85435
gl/color: fix warning type qualifiers ignored
...
i686-apple-darwin11-llvm-gcc-4.2
"warning: type qualifiers ignored on function return type"
2014-04-12 14:55:45 +01:00
Matthew Waters
ab9b54efdd
gl/color: remove if statement with no effect
...
Coverity 1199698
2014-04-12 18:24:43 +10:00
Matthew Waters
a05d62d5ca
gl/color: pass large value by reference
...
Coverity 1199700
2014-04-12 18:18:08 +10:00
Matthew Waters
b69e1f42bb
gl/mem: cache the stride/unpack length for upload
2014-04-11 17:26:09 +10:00
Matthew Waters
7a424780ce
gl/color: explicitly map the buffers we are copying into
...
Otherwise it may not be downloaded at all.
2014-04-11 17:26:09 +10:00
Matthew Waters
1e948cb42e
gl/color: cache the temporary textures
2014-04-11 16:09:09 +10:00
Matthew Waters
d92eb6dbbe
gl/mem: provide defines for tokens not defined in GLES2/ancient platforms
2014-04-11 11:04:43 +10:00
Matthew Waters
8cc10a1c9c
gl: fixup incorrect number of arguments
2014-04-11 11:03:19 +10:00
Matthew Waters
ad30c8e7e8
gl: fix incorrect usage of g_return_if_fail
2014-04-11 10:55:21 +10:00
Matthew Waters
15d0c04933
gl/mem: allocate the memory per plane
...
This patch provides the basic infrastructure required for this.
Upload and Download has been ported to this.
Has the nice effect of allowing GstGLMemory to be our
refcounted texture object for any texture type (not just RGBA).
Should not lose any features/video formats.
2014-04-11 10:37:06 +10:00
Matthew Waters
d8b6303c95
gl/eglimage: #if 0 unused code
2014-04-11 10:37:06 +10:00
Matthew Waters
95abfda139
gl: add colorconvert object that converts between color spaces/formats
...
Currently used by both upload and download objects separately.
2014-04-11 10:37:05 +10:00
Vincent Penquerc'h
cdfce09fb7
gl: fix leaks
...
As the relevant variables are initialized to 0/NULL, we can loop
over the full range and make sure we free partial allocations
when an error happens partway through initialization.
2014-04-08 15:54:01 +01:00
Matthew Waters
e01e2cce9f
gl: pass video info's by reference
2014-04-02 23:05:47 +11:00
Matthew Waters
7d2d3b3b80
gl/glx: use the context's display rather than asking for the window's
2014-04-02 22:53:10 +11:00
Matthew Waters
e58cd96b96
gl: avoid adding a NULL pool to propose allocation
2014-04-02 22:42:50 +11:00
Matthew Waters
14e993e745
gl: fix detection of extensions with GL versions < 3
...
Mesa, for example returns valid pointers for glGetIntegerv and
glGetStringi even if the gl version is less than that required for
both those functions to supposedly exist.
https://bugzilla.gnome.org/show_bug.cgi?id=727324
2014-04-01 22:02:46 +11:00
Tim-Philipp Müller
0f02311d13
gl: egl: fix distcheck and out of source build
2014-03-28 20:22:43 +00:00
Rico Tzschichholz
d10fcf4d3f
build: Fix make dist
2014-03-28 20:02:40 +00:00
Matthew Waters
e356088f15
gl: fix out-of-source builds pt2
...
21b897de2f
did this for x11 and wayland.
Do it for the other backends as well.
2014-03-27 22:03:14 +11:00
Julien Isorce
75c92dc915
gl: only set CAPS_FEATURE_MEMORY_EGL_IMAGE on egl platform
2014-03-27 07:07:01 +00:00
Julien Isorce
218244a040
gl: let the user includes itself our egl headers if needed
...
Forgot to address this change.
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 19:17:03 +00:00
Julien Isorce
0ae3c984aa
gl: add EGLImage support
...
* picked from old libgstegl:
- GstEGLImageMemory
- GstEGLImageAllocator
- last_buffer management from removed GstEGLImageBufferPool
* add-ons:
- GstEGLImageMemory now old a reference on GstGLContext
so that it can delete the EGLImage and its gltexture source
while having the associated gl context being current.
- add EGLImage support for GstVideoGLTextureUploadMeta which
mainly call EGLImageTargetTexture2D
- GstGLBufferPool now supports GstEGLImageAllocator
- glimagesink / glfilters / etc.. now propose GstEGLImageAllocator
to upstream
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 19:09:13 +00:00
Julien Isorce
6d10548e7f
gl: deploy egl headers in gst/gl/egl instead of gst/gl
...
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 14:52:39 +00:00
Julien Isorce
5bb4c4e866
gl: remove commented and unsued code in x11 Makefile.am
...
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 14:52:31 +00:00
Julien Isorce
2893a70aa0
gl: fix crash if _build_extension_string is not called
...
On GLES2 then (gl->GetIntegerv && gl->GetStringi) is false
regression introduced by cc6df204e2
https://bugzilla.gnome.org/show_bug.cgi?id=703343
2014-03-26 14:51:41 +00:00
Gwenole Beauchesne
21b897de2f
gl: fix out-of-source builds.
...
Always use the locally generated <gst/gl/gstglconfig.h> file.
Signed-off-by: Gwenole Beauchesne <gwenole.beauchesne@intel.com>
2014-03-24 17:56:13 +01:00
Matthew Waters
48ef9402bf
gl/download: add support for the bt709 color matrix
2014-03-25 00:50:30 +11:00
Matthew Waters
6d452f60ee
gl/upload: add support for the bt709 color matrix
2014-03-25 00:34:13 +11:00
Matthew Waters
9908375fc0
gl: remove explicit reference to X_CFLAGS
...
They are in GL_CFLAGS if required
2014-03-24 23:19:02 +11:00
Matthew Waters
f55b299826
gl/upload: remove the legacy GL 1.x upload path
...
uploading requires shaders and fbos available in GL2.
2014-03-24 23:19:02 +11:00
Julien Isorce
cc6df204e2
gl: fallback to glGetString if GL_NUM_EXTENSIONS fails
...
Need it on MacOSX 10.7.5
2014-03-23 11:02:08 +00:00
Matthew Waters
11e8b3017a
gl: and update the Makefile
2014-03-23 01:02:03 +11:00
Matthew Waters
3180899a98
gl: reorganize the extension headers by function rather than api
2014-03-23 00:39:43 +11:00
Matthew Waters
45c94fa750
gl/win32: use the correct include and gst-indent
2014-03-23 00:39:43 +11:00
Wang Xin-yu (王昕宇)
05cb4bc6a5
gl: use wglCreateContextAttribsARB to create share context
...
https://bugzilla.gnome.org/show_bug.cgi?id=726494
2014-03-20 15:45:02 +11:00
Matthew Waters
58aa3e9d64
gl/mixer: fix download check for failure
2014-03-20 07:01:01 +11:00
Matthew Waters
faa94a8737
gl: silence a critical if upstream does not provide us with meta params
2014-03-20 07:01:01 +11:00
Julien Isorce
fa4ce072ee
gl: silence warnings building for RPI related to 'vcos_*'
...
Similar than 1190a79b19
2014-03-19 14:43:13 +00:00
Julien Isorce
e870244e39
gl: keep only one occurence of '#include <EGL/egl.h>'
...
To simply maintainance if we need to put specific includes around it.
2014-03-19 14:43:13 +00:00
Руслан Ижбулатов
2a8f52a976
gl: fix the use of always-defined macros
...
After 2a0f0399ae
GST_GL_* macros are always
defined to 0 or 1. Don't use #ifdef ... or #if defined() on them.
https://bugzilla.gnome.org/show_bug.cgi?id=726591
2014-03-18 06:17:03 +00:00
Matthew Waters
a64dd649f5
gl: add GModule libs for win32
2014-03-17 15:16:13 +01:00
Matthew Waters
567820c551
gl: only link against gstegl if we are using egl
...
Assuming if we are building egl that the egl library is built
2014-03-17 15:06:25 +01:00
Matthew Waters
acf1616251
gl: add path of the gstegl library
...
Temporary until we merge the two libraries
2014-03-17 14:37:13 +01:00
Matthew Waters
023c10891e
Revert "gl: add dep on gstegl"
...
It was already in _LIBADD
This reverts commit b10a353080
.
2014-03-17 14:26:31 +01:00
Matthew Waters
b10a353080
gl: add dep on gstegl
...
Temporary until we merge the two libraries
2014-03-17 14:12:50 +01:00
Edward Hervey
16e60d0129
gl/cocoa: Fix debug statements and platform
2014-03-17 14:06:53 +01:00
Edward Hervey
0ae0bfcbc7
gl: Fix static build with objective-C
...
--tag=CC is needed for static build
2014-03-17 12:05:14 +01:00
Matthew Waters
49b37650f6
gl: Add EGLDisplay display subclass
2014-03-17 10:56:39 +01:00
Matthew Waters
b67af0e314
gl/window: add a dummy window class
...
Effective for the case where we have a platform that does not
require a native window. We require a mainloop to run the GL
commands which is currently operated by GstGLWindow.
2014-03-17 10:44:32 +01:00
Matthew Waters
aaa7cfc9fc
gl: fix undeclared symbol when building without GST_DEBUG
2014-03-17 08:10:50 +01:00
Matthew Waters
99c48c34c1
gl: fix a double unref of the query when building without X
2014-03-17 08:10:25 +01:00
Matthew Waters
6da1c48970
gl: silence a compiler warning about missing prototypes
2014-03-16 17:21:38 +01:00
Matthew Waters
5bf83bd48f
gl/utils: add x11 GstContext handling
...
https://bugzilla.gnome.org/show_bug.cgi?id=726360
2014-03-16 16:32:33 +01:00
Matthew Waters
e8bbcb366e
gl: define GL_NUM_EXTENSIONS if not defined
2014-03-16 15:34:11 +01:00
Matthew Waters
870503dc6b
gl: silence all the compiler warnings
2014-03-16 15:17:44 +01:00
Matthew Waters
92c7849979
[906/906] filter: warn about trying to share with multiple contexts at once
2014-03-15 18:37:07 +01:00