Matthew Waters
530ae2cbb0
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.
2017-12-09 19:31:54 +00:00
Alessandro Decina
0c459222f8
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.
2017-12-09 19:31:54 +00:00
Matthew Waters
f3beaecfa0
gstglcaopengllayer: use the correct rectangle type for iOS and OS X
2017-12-09 19:31:54 +00:00
Matthew Waters
dac1e577e7
glcolorconvert: use the correct caps feature for supported caps
...
glcolorconvert currently only supports converting between GLMemory
targets.
2017-12-09 19:31:54 +00:00
Matthew Waters
572265206c
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.
2017-12-09 19:31:54 +00:00
Matthew Waters
149cbb2e31
gl: update unit test for glmemory api change
2017-12-09 19:31:54 +00:00
Matthew Waters
157170011d
glimagesink: clobber the alpha channel by default
...
this can be disabled with the ignore-alpha property
2017-12-09 19:31:54 +00:00
Alessandro Decina
1c1084881b
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.
2017-12-09 19:31:54 +00:00
Alessandro Decina
9f2f3fec17
libgstgl: gstglcaopengllayer: set the layer as opaque
2017-12-09 19:31:54 +00:00
Sebastian Dröge
78aaa6b1de
glcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular textures
2017-12-09 19:31:53 +00:00
Sebastian Dröge
46086ac1fe
glcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL
...
It's not defined for GLES.
2017-12-09 19:31:53 +00:00
Alessandro Decina
9f1cb84523
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
2017-12-09 19:31:53 +00:00
Alessandro Decina
966cad27d7
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
2017-12-09 19:31:53 +00:00
Alessandro Decina
f31ba88835
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.
2017-12-09 19:31:53 +00:00
Alessandro Decina
5c81a68eb1
gstglcolorconvert: relax caps features check
...
Require caps to have the GST_CAPS_FEATURE_MEMORY_GL_MEMORY feature but allow
them to have more features.
2017-12-09 19:31:53 +00:00
Matthew Waters
66cec1c47a
gl/win32: fixup compilation
2017-12-09 19:31:53 +00:00
Matthew Waters
598715fc4b
glwindow: make showing a window explicit
...
Also fixes the cgl context always displaying a window to render to for
every GstGLContextCocoa created
2017-12-09 19:31:53 +00:00
Matthew Waters
200842b3f8
gl/calayer: add resize callback based on the bounds rectangle
2017-12-09 19:31:53 +00:00
Matthew Waters
e8878507cb
gl/caopengllayer: draw asynchronously
...
This essentially makes the CAOpenGLLayer draw every refresh cycle.
2017-12-09 19:31:53 +00:00
Matthew Waters
c5bc8663ae
gl/cocoa: don't segfault if we have a NULL draw/resize/close callback
2017-12-09 19:31:53 +00:00
Matthew Waters
698f1236a4
cgl/calayer: use a callback instead of hardcoding the draw functionality
2017-12-09 19:31:53 +00:00
Matthew Waters
0cfeddbd05
cgl: install the gl context and gl layer headers
2017-12-09 19:31:53 +00:00
Matthew Waters
e57fb35bc0
cgl: add a header for the CAOpenGLLayer support
2017-12-09 19:31:53 +00:00
Philippe Normand
81f768be3e
gl/dispmanx: fix build
...
Commit ab48bb6f0f
changed the API of
GstGLWindow.
2017-12-09 19:31:53 +00:00
Matthew Waters
3f52b33c7a
glmemory: more compatibility defines for gles2 systems
2017-12-09 19:31:53 +00:00
Matthew Waters
03135a2238
glmemory: add some thread safety for gl operations
2017-12-09 19:31:53 +00:00
Matthew Waters
d8cc4cfc47
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
2017-12-09 19:31:53 +00:00
Matthew Waters
230d19e172
glprototypes: add some (un)map buffer variants for GL/GLES
2017-12-09 19:31:53 +00:00
Edward Hervey
2833e8c63a
gltestsrc: Ensure variable is initialized before usage
...
Coverity CID: 1256569
2017-12-09 19:31:53 +00:00
Matthew Waters
8f59549ec5
gl/tests: update glwindow api change
2017-12-09 19:31:53 +00:00
Matthew Waters
580c144fd7
gl/window/eagl: fix a couple of typos
2017-12-09 19:31:53 +00:00
Matthew Waters
fb103253d7
glwindow: cleanup/reorganize functions/members into logical groups
2017-12-09 19:31:53 +00:00
Matthew Waters
07d41de7c4
gl/qt/examples: update for NSOpenGL -> CGL change
2017-12-09 19:31:53 +00:00
Matthew Waters
019367c128
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.
2017-12-09 19:31:53 +00:00
Matthew Waters
01248b1864
glcontext/cocoa: avoid destroying a possibly 0 GSource id
2017-12-09 19:31:53 +00:00
Matthew Waters
0e835bc374
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.
2017-12-09 19:31:53 +00:00
Matthew Waters
971e9e3128
glcontext/cocoa: add debug category
2017-12-09 19:31:53 +00:00
Sebastian Dröge
39e719fb33
Constify some static arrays everywhere
2017-12-09 19:31:53 +00:00
Nicola Murino
dd928efa51
glimagesink: fix memleak
...
https://bugzilla.gnome.org/show_bug.cgi?id=743142
2017-12-09 19:31:52 +00:00
Lasse Laursen
2e3d26192f
glapi: fix compilation with latest MSVC
...
https://bugzilla.gnome.org/show_bug.cgi?id=743041
2017-12-09 19:31:52 +00:00
Matthew Waters
e3d3049641
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.
2017-12-09 19:31:52 +00:00
Matthew Waters
02fdc64844
glvideomixer: don't upload if alpha <= 0
...
Implemented using a upload_buffer vfunc within GstGLMixer allowing
NULL uploaded buffers.
2017-12-09 19:31:52 +00:00
Matthew Waters
aedfadd972
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.
2017-12-09 19:31:52 +00:00
Matthew Waters
1dfeae2c42
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.
2017-12-09 19:31:52 +00:00
Matthew Waters
19fbe2afbc
glmemory: offset the data pointer for upload for GstVideoAlignment
...
otherwise we attempt to read from the padding data
2017-12-09 19:31:52 +00:00
Matthew Waters
a2af67aef0
glmemory: use pbo's for upload
2017-12-09 19:31:52 +00:00
Matthew Waters
4288866e55
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
2017-12-09 19:31:52 +00:00
Nicola Murino
ef987be337
glcolorconvert: fix memleak
...
https://bugzilla.gnome.org/show_bug.cgi?id=741943
2017-12-09 19:31:52 +00:00
Nicola Murino
209fbd950f
glupload: fix some memory leaks
...
https://bugzilla.gnome.org/show_bug.cgi?id=741943
2017-12-09 19:31:52 +00:00
Matthew Waters
bef3f020a6
glcontext: allow wrapped contexts to be utilised like non-wrapped contexts
...
Fill in the missing pieces like get_proc_address, the gl function vtable
2017-12-09 19:31:52 +00:00