Sebastian Dröge
dac3e4ca06
vtdec: Don't dereference NULL frames when draining/flushing
2015-02-03 15:38:40 +01: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
Matthew Waters
438b83c9fc
gl: update unit test for glmemory api change
2015-01-30 18:51:17 +11:00
Matthew Waters
c827d1f804
glimagesink: clobber the alpha channel by default
...
this can be disabled with the ignore-alpha property
2015-01-30 15:54:05 +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
f577b52e5d
applemedia: rework GL texture sharing
...
Use YUV instead of RGB textures, then convert using the new apple specific
shader in GstGLColorConvert. Also use GLMemory directly instead of using the
GL upload meta, avoiding an extra texture copy we used to have before.
2015-01-30 00:34:08 +11:00
Alessandro Decina
77d48abfab
applemedia: vtdec: fix CMBlockBufferRef leak
...
Fix huge leak that went unnoticed for too long. Oops.
2015-01-30 00:34:08 +11: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
8734abb1ce
applemedia: don't call CVPixelBufferLockBaseAddress when doing texture sharing
...
When doing texture sharing we don't need to call CVPixelBufferLockBaseAddress to
map the buffer in CPU. This cuts about 10% relative cpu time from a vtdec !
glimagesink pipeline.
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
e91989136a
applemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional
...
Mapping is not necessary and impacts performance when doing texture sharing with
downstream
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
Vincent Penquerc'h
5c44bceeb3
opusenc: change audio property to audio-type
...
This is now an enum with values generic (default) and voice.
https://bugzilla.gnome.org/show_bug.cgi?id=740891
2015-01-29 13:23:57 +00:00
Matthew Waters
1e6011bcdf
gl/win32: fixup compilation
2015-01-29 23:46:57 +11:00
Luis de Bethencourt
26692836f2
audiovisualizer: remove double-setting of render function
...
No need to set the audiovisualizer->render function twice. Once is enough.
2015-01-29 11:55:13 +00: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
Thibault Saunier
71e4c485f0
aggregator: Cleanup locking around AggregatorPad flush related fields
...
And document the locking
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Mathieu Duponchelle
b27fb0dbac
aggregator: keep chain functions as dumb as possible.
...
+ A pad chain function has no business checking other pads,
that's what the aggregate thread is for.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Thibault Saunier
ccf329d527
aggregator: More fixes around locking when accessing protected private fields
...
In some more places we were accessing GstAggregator->segment
and GstAggregator->seqnum without holding the GST_OBJECT_LOCK
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Thibault Saunier
1a07467d5f
aggregator: Make the PAD_LOCK private
...
Instead of using the GST_OBJECT_LOCK we should have
a dedicated mutex for the pad as it is also associated
with the mutex on the EVENT_MUTEX on which we wait
in the _chain function of the pad.
The GstAggregatorPad.segment is still protected with the
GST_OBJECT_LOCK.
Remove the gst_aggregator_pad_peak_unlocked method as it does not make
sense anymore with a private lock.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Thibault Saunier
d8eef43123
aggregator: Hide GstAggregatorPad buffer and EOS fileds
...
And add a getter for the EOS.
The user should always use the various getters to access
those fields
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
fb6ba27ae5
audiomixer: Make flush start/stop test non-racy
...
The flush stop could have happened between the source trying
to push the segment event and the buffer, this would cause a warning.
Prevent that by taking the source's stream lock while flushing.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
f98e457f99
audiomixer: Replace racy timeout based tested with drain query
...
Using the drain query, we can be certain that the buffer has done going
through the aggregator by taking the stream locks.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
93d0b51dba
aggregator: Document locking of GstAggregatorPrivate members
...
Most of them are protected by the object lock, specify
which ones use a different lock.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
ea76d39738
aggregator: Document how the segment is protected
...
Document that it can only be accessed with the object lock.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
9df8ac0a98
aggregator: Protect all latency related members with the object lock
...
The locking was not consistent, now consistently use the object lock.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
41d26673d6
aggregator: Document locking for gst_aggregator_get_latency_unlocked()
...
Renamed it to _unlocked() to make it clear.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
f7070dcfdc
aggregator: Protect the srcpad caps negotiation with the stream lock
...
Instead of adding another lock, use the srcpad stream lock, which is already
taken anyway to push out the new caps if needed.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
4a5882ee08
aggregator: Protect the tags with the object lock
...
The tags related variables were sometimes protected, sometimes not and
sometimes atomic. Put them all under the object lock.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
94e2d78479
audiomixer: Avoid race in caps negotiation
...
With the current audiomixer, the input caps need to be the same,
otherwise there is an unavoidable race in the caps negotiation. So
enforce that using capsfilters
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
eddd5fd259
aggregator: Consistenly lock the flow_return state
...
Use the object's lock to protect it.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
a2f1aa30c8
audiomixer: Clear GstAudioInfo the the caps
...
When clearing the caps, also clear the matching GstAudioInfo
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
cc605f4560
aggregator: Consistently lock some members
...
Some members sometimes used atomic access, sometimes where not locked at
all. Instead consistently use a mutex to protect them, also document
that.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
067b44e0b8
audiomixer: Don't reset caps on flush
...
A flush event doesn't invalidate the previous caps event.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
ee04b09233
videoaggregator: Lock access to members of GstAggregatorPad
...
Take the pad's object lock before accessing members of the
GstAggregatorPad structure.
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00
Olivier Crête
68ac6438f0
aggregator: Protect exported pad members with the pad's object lock
...
https://bugzilla.gnome.org/show_bug.cgi?id=742684
2015-01-29 10:24:18 +01:00