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