platform/upstream/gstreamer.git
9 years agotests: audiomixer: add unit test for proper segment.base handling
Tim-Philipp Müller [Thu, 5 Feb 2015 15:23:04 +0000 (15:23 +0000)]
tests: audiomixer: add unit test for proper segment.base handling

As adjusted by gst_pad_set_offset(), or when doing segment seeks
or looping for example. See previous audiomixer commit.

9 years agoaudiomixer: Remove weird and wrong segment handling
Sebastian Dröge [Thu, 5 Feb 2015 15:02:54 +0000 (16:02 +0100)]
audiomixer: Remove weird and wrong segment handling

There's no reason why audiomixer should override the segment
base of upstream with whatever value it got from a SEEK event,
or even worse... with 0 if there was no SEEK event yet. This
broke synchronization if upstream provided a segment base other
than 0, e.g. when using pad offsets.
Also that this code did things conditional on the element's state
should've been a big warning already that something is just wrong.
If this breaks anything else now, let's fix it properly :)

Also don't do fancy segment position trickery when receiving a
segment event. It's just not correct.

9 years agoopenslesringbuffer: Only pre-roll a single buffer
Sebastian Dröge [Thu, 5 Feb 2015 11:24:04 +0000 (12:24 +0100)]
openslesringbuffer: Only pre-roll a single buffer

There is no reason to pre-roll more buffers here as we have our own ringbuffer
with more segments around it, and we can immediately provide more buffers to
OpenSL ES when it requests that from the callback.

Pre-rolling a single buffer before starting is necessary though, as otherwise
we will only output silence.

Lowers latency a bit, depending on latency-time and buffer-time settings.

9 years agoopenslesringbuffer: Allocate at most 4 internal buffers
Sebastian Dröge [Thu, 5 Feb 2015 11:22:46 +0000 (12:22 +0100)]
openslesringbuffer: Allocate at most 4 internal buffers

4 is the "typical" number of buffers defined by Android's OpenSL ES
implementation, and its code is optimized for this. Also because we
have our own ringbuffer around this, we will always have enough
buffering on our side already.

Allows for more efficient processing.

9 years agoopenslessink/src: Lower default buffer time to 200ms like alsasink
Sebastian Dröge [Thu, 5 Feb 2015 11:21:55 +0000 (12:21 +0100)]
openslessink/src: Lower default buffer time to 200ms like alsasink

9 years agoglfilter: ensure that the input upload/colorconvert are always available
Matthew Waters [Thu, 5 Feb 2015 05:46:32 +0000 (16:46 +1100)]
glfilter: ensure that the input upload/colorconvert are always available

9 years agoglimagesink: log the converted caps
Matthew Waters [Thu, 5 Feb 2015 00:06:10 +0000 (11:06 +1100)]
glimagesink: log the converted caps

9 years agoglupload: restrict EGL and UploadMeta to RGBA
Matthew Waters [Thu, 5 Feb 2015 00:05:02 +0000 (11:05 +1100)]
glupload: restrict EGL and UploadMeta to RGBA

other formats are highly untested.

9 years agoglcolorconvert: don't intersect with the input caps
Matthew Waters [Thu, 5 Feb 2015 00:04:05 +0000 (11:04 +1100)]
glcolorconvert: don't intersect with the input caps

that limits our formats to whatever is in the input caps

9 years agogl: fix memory leak
Luis de Bethencourt [Wed, 4 Feb 2015 14:10:13 +0000 (14:10 +0000)]
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

9 years agomotioncells: initialize class variables
Luis de Bethencourt [Wed, 4 Feb 2015 11:52:26 +0000 (11:52 +0000)]
motioncells: initialize class variables

Some variables are not initialized in the constructor. It is highly unlikely
they are used before being set, but it is safer to initialize them.

CID #1197704

9 years agoksvideosrc: Fix missing brace warning
Nicolas Dufresne [Tue, 3 Feb 2015 23:13:25 +0000 (18:13 -0500)]
ksvideosrc: Fix missing brace warning

There is more but it's from ks.h GUID initializer, which is shipped
this way with mingw.

9 years agoksvideosrc: Fix buffer handling
Nicolas Dufresne [Tue, 3 Feb 2015 22:44:34 +0000 (17:44 -0500)]
ksvideosrc: Fix buffer handling

The pseudo buffer pool code was using gst_buffer_is_writable()
alone to try and figure-out if cached buffer could be reused.
It needs to check for memory writability too. Also check map
result and fix map flags.

https://bugzilla.gnome.org/show_bug.cgi?id=734264

9 years agompegtsmux: avoid leaking force keyunit event when going to NULL
Thiago Santos [Tue, 3 Feb 2015 20:05:06 +0000 (17:05 -0300)]
mpegtsmux: avoid leaking force keyunit event when going to NULL

Do not set to NULL before unreffing the event or it will leak

9 years agompegtsmux: parse force key unit events with the correct function
Anton Gritsay [Mon, 18 Mar 2013 08:15:00 +0000 (08:15 +0000)]
mpegtsmux: parse force key unit events with the correct function

Otherwise it won't be parsed and bogus values would be used.

https://bugzilla.gnome.org/show_bug.cgi?id=696032

9 years agotsdemux: remove update segment logic
Thiago Santos [Mon, 26 Jan 2015 23:42:25 +0000 (20:42 -0300)]
tsdemux: remove update segment logic

This is not needed in 1.x series anymore

9 years agotsdemux: don't mark streams as needing a new segment on flush
Aurélien Zanelli [Tue, 3 Feb 2015 13:59:16 +0000 (10:59 -0300)]
tsdemux: don't mark streams as needing a new segment on flush

The flush is called on discont and we shouldn't output a new segment
each time a discont happens. So this commit remove the mark for a new
segment when flushing streams by propagating the 'hard' flag passed
on the flusing from the base class.

https://bugzilla.gnome.org/show_bug.cgi?id=743363

9 years agocorevideotexturecache: Add some assertions instead of just dereferencing NULL
Sebastian Dröge [Tue, 3 Feb 2015 16:32:03 +0000 (17:32 +0100)]
corevideotexturecache: Add some assertions instead of just dereferencing NULL

9 years agocorevideotexturecache: Don't unconditionally use the CoreMedia meta on iOS
Sebastian Dröge [Tue, 3 Feb 2015 16:29:25 +0000 (17:29 +0100)]
corevideotexturecache: Don't unconditionally use the CoreMedia meta on iOS

We might instead have a CoreVideo meta.

9 years agoUndo accidental common module rewind
Tim-Philipp Müller [Tue, 3 Feb 2015 14:55:32 +0000 (14:55 +0000)]
Undo accidental common module rewind

in commit 7d463576

9 years agovtdec: Don't dereference NULL frames when draining/flushing
Sebastian Dröge [Tue, 3 Feb 2015 14:38:40 +0000 (15:38 +0100)]
vtdec: Don't dereference NULL frames when draining/flushing

9 years agogl: remove the egl caps from the src pads
Matthew Waters [Tue, 3 Feb 2015 04:30:08 +0000 (15:30 +1100)]
gl: remove the egl caps from the src pads

we don't actually support producing EGLImage buffers anywhere.

9 years agoglcolorconvert: put GstGLSyncMeta on output buffers
Matthew Waters [Tue, 3 Feb 2015 02:32:47 +0000 (13:32 +1100)]
glcolorconvert: put GstGLSyncMeta on output buffers

allows thread safely using the provided output buffer in a separate
thread

9 years agoglupload: only try the glmemory upload for sysmem/glmemory caps features
Matthew Waters [Mon, 2 Feb 2015 13:35:26 +0000 (00:35 +1100)]
glupload: only try the glmemory upload for sysmem/glmemory caps features

Allows selecting/testing the upload path with explicit caps features.

9 years agoglmemory: add missing initilisation of tex_target when copying
Matthew Waters [Mon, 2 Feb 2015 13:26:20 +0000 (00:26 +1100)]
glmemory: add missing initilisation of tex_target when copying

fixes:

glcolorscale ! video/x-raw\(meta:GstVideoGLTextureUploadMeta\) !
glimagesink

9 years agoglupload: allow NULL buffer for accept vfunc
Matthew Waters [Mon, 2 Feb 2015 13:15:30 +0000 (00:15 +1100)]
glupload: allow NULL buffer for accept vfunc

9 years agoglupload: remove unsed convert field in private struct
Matthew Waters [Mon, 2 Feb 2015 13:13:07 +0000 (00:13 +1100)]
glupload: remove unsed convert field in private struct

9 years agoglupload/download/convert: provide transform_caps functions
Matthew Waters [Mon, 2 Feb 2015 13:11:06 +0000 (00:11 +1100)]
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.

9 years agogstglwindow_cocoa: fix slow render rate
Alessandro Decina [Tue, 3 Feb 2015 00:07:58 +0000 (11:07 +1100)]
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.

9 years agogstglcaopengllayer: use the correct rectangle type for iOS and OS X
Matthew Waters [Mon, 2 Feb 2015 12:40:16 +0000 (23:40 +1100)]
gstglcaopengllayer: use the correct rectangle type for iOS and OS X

9 years agoglcolorconvert: use the correct caps feature for supported caps
Matthew Waters [Mon, 2 Feb 2015 10:07:48 +0000 (21:07 +1100)]
glcolorconvert: use the correct caps feature for supported caps

glcolorconvert currently only supports converting between GLMemory
targets.

9 years agoglsyncmeta: don't use the gst debug object variants
Matthew Waters [Mon, 2 Feb 2015 09:51:31 +0000 (20:51 +1100)]
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.

9 years agogl: update unit test for glmemory api change
Matthew Waters [Fri, 30 Jan 2015 07:51:17 +0000 (18:51 +1100)]
gl: update unit test for glmemory api change

9 years agoglimagesink: clobber the alpha channel by default
Matthew Waters [Fri, 30 Jan 2015 04:13:27 +0000 (15:13 +1100)]
glimagesink: clobber the alpha channel by default

this can be disabled with the ignore-alpha property

9 years agoRevert "libgstgl: gstglcaopengllayer: set the layer as opaque"
Alessandro Decina [Fri, 30 Jan 2015 01:32:17 +0000 (12:32 +1100)]
Revert "libgstgl: gstglcaopengllayer: set the layer as opaque"

This reverts commit 6f152d381ca21595cdc823f32341c8f2fe71b9c7.

The layer shouldn't be always opaque, it should be made a property.

9 years agolibgstgl: gstglcaopengllayer: set the layer as opaque
Alessandro Decina [Fri, 30 Jan 2015 01:22:25 +0000 (12:22 +1100)]
libgstgl: gstglcaopengllayer: set the layer as opaque

9 years agoglcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular...
Sebastian Dröge [Thu, 29 Jan 2015 15:30:34 +0000 (16:30 +0100)]
glcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular textures

9 years agoglcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL
Sebastian Dröge [Thu, 29 Jan 2015 15:26:26 +0000 (16:26 +0100)]
glcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL

It's not defined for GLES.

9 years agoapplemedia: rework GL texture sharing
Alessandro Decina [Thu, 29 Jan 2015 13:28:18 +0000 (00:28 +1100)]
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.

9 years agoapplemedia: vtdec: fix CMBlockBufferRef leak
Alessandro Decina [Tue, 27 Jan 2015 13:53:59 +0000 (00:53 +1100)]
applemedia: vtdec: fix CMBlockBufferRef leak

Fix huge leak that went unnoticed for too long. Oops.

9 years agolibgstgl: run a custom shader to convert YUV to RGB on mac and ios
Alessandro Decina [Tue, 27 Jan 2015 13:48:27 +0000 (00:48 +1100)]
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

9 years agoapplemedia: don't call CVPixelBufferLockBaseAddress when doing texture sharing
Alessandro Decina [Tue, 27 Jan 2015 13:43:09 +0000 (00:43 +1100)]
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.

9 years agogl: initial support for texture targets other than GL_TEXTURE_2D
Alessandro Decina [Tue, 27 Jan 2015 13:13:46 +0000 (00:13 +1100)]
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

9 years agogstglcolorconvert: micro optimization
Alessandro Decina [Thu, 22 Jan 2015 02:18:23 +0000 (13:18 +1100)]
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.

9 years agoapplemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional
Alessandro Decina [Thu, 22 Jan 2015 02:17:11 +0000 (13:17 +1100)]
applemedia: corevideobuffer: make mapping the CVPixelBuffer in CPU optional

Mapping is not necessary and impacts performance when doing texture sharing with
downstream

9 years agogstglcolorconvert: relax caps features check
Alessandro Decina [Thu, 22 Jan 2015 02:11:46 +0000 (13:11 +1100)]
gstglcolorconvert: relax caps features check

Require caps to have the GST_CAPS_FEATURE_MEMORY_GL_MEMORY feature but allow
them to have more features.

9 years agoopusenc: change audio property to audio-type
Vincent Penquerc'h [Wed, 28 Jan 2015 16:43:59 +0000 (16:43 +0000)]
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

9 years agogl/win32: fixup compilation
Matthew Waters [Thu, 29 Jan 2015 12:45:15 +0000 (23:45 +1100)]
gl/win32: fixup compilation

9 years agoaudiovisualizer: remove double-setting of render function
Luis de Bethencourt [Thu, 29 Jan 2015 11:54:35 +0000 (11:54 +0000)]
audiovisualizer: remove double-setting of render function

No need to set the audiovisualizer->render function twice. Once is enough.

9 years agoglwindow: make showing a window explicit
Matthew Waters [Thu, 29 Jan 2015 11:25:00 +0000 (22:25 +1100)]
glwindow: make showing a window explicit

Also fixes the cgl context always displaying a window to render to for
every GstGLContextCocoa created

9 years agoaggregator: Cleanup locking around AggregatorPad flush related fields
Thibault Saunier [Mon, 26 Jan 2015 16:06:29 +0000 (17:06 +0100)]
aggregator: Cleanup locking around AggregatorPad flush related fields

And document the locking

https://bugzilla.gnome.org/show_bug.cgi?id=742684

9 years agoaggregator: keep chain functions as dumb as possible.
Mathieu Duponchelle [Mon, 26 Jan 2015 12:11:05 +0000 (13:11 +0100)]
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

9 years agoaggregator: More fixes around locking when accessing protected private fields
Thibault Saunier [Mon, 26 Jan 2015 10:32:47 +0000 (11:32 +0100)]
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

9 years agoaggregator: Make the PAD_LOCK private
Thibault Saunier [Mon, 26 Jan 2015 10:29:08 +0000 (11:29 +0100)]
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

9 years agoaggregator: Hide GstAggregatorPad buffer and EOS fileds
Thibault Saunier [Mon, 26 Jan 2015 10:25:54 +0000 (11:25 +0100)]
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

9 years agoaudiomixer: Make flush start/stop test non-racy
Olivier Crête [Thu, 22 Jan 2015 00:09:13 +0000 (19:09 -0500)]
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

9 years agoaudiomixer: Replace racy timeout based tested with drain query
Olivier Crête [Thu, 22 Jan 2015 22:41:24 +0000 (17:41 -0500)]
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

9 years agoaggregator: Document locking of GstAggregatorPrivate members
Olivier Crête [Wed, 21 Jan 2015 23:41:43 +0000 (18:41 -0500)]
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

9 years agoaggregator: Document how the segment is protected
Olivier Crête [Wed, 21 Jan 2015 23:47:09 +0000 (18:47 -0500)]
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

9 years agoaggregator: Protect all latency related members with the object lock
Olivier Crête [Thu, 22 Jan 2015 00:44:57 +0000 (19:44 -0500)]
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

9 years agoaggregator: Document locking for gst_aggregator_get_latency_unlocked()
Olivier Crête [Thu, 22 Jan 2015 00:43:12 +0000 (19:43 -0500)]
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

9 years agoaggregator: Protect the srcpad caps negotiation with the stream lock
Olivier Crête [Thu, 22 Jan 2015 00:35:25 +0000 (19:35 -0500)]
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

9 years agoaggregator: Protect the tags with the object lock
Olivier Crête [Thu, 22 Jan 2015 00:33:18 +0000 (19:33 -0500)]
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

9 years agoaudiomixer: Avoid race in caps negotiation
Olivier Crête [Thu, 22 Jan 2015 00:32:34 +0000 (19:32 -0500)]
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

9 years agoaggregator: Consistenly lock the flow_return state
Olivier Crête [Wed, 21 Jan 2015 23:53:20 +0000 (18:53 -0500)]
aggregator: Consistenly lock the flow_return state

Use the object's lock to protect it.

https://bugzilla.gnome.org/show_bug.cgi?id=742684

9 years agoaudiomixer: Clear GstAudioInfo the the caps
Olivier Crête [Wed, 21 Jan 2015 23:47:40 +0000 (18:47 -0500)]
audiomixer: Clear GstAudioInfo the the caps

When clearing the caps, also clear the matching GstAudioInfo

https://bugzilla.gnome.org/show_bug.cgi?id=742684

9 years agoaggregator: Consistently lock some members
Olivier Crête [Wed, 21 Jan 2015 23:45:36 +0000 (18:45 -0500)]
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

9 years agoaudiomixer: Don't reset caps on flush
Olivier Crête [Wed, 21 Jan 2015 23:39:24 +0000 (18:39 -0500)]
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

9 years agovideoaggregator: Lock access to members of GstAggregatorPad
Olivier Crête [Wed, 14 Jan 2015 19:45:06 +0000 (14:45 -0500)]
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

9 years agoaggregator: Protect exported pad members with the pad's object lock
Olivier Crête [Wed, 14 Jan 2015 19:38:09 +0000 (14:38 -0500)]
aggregator: Protect exported pad members with the pad's object lock

https://bugzilla.gnome.org/show_bug.cgi?id=742684

9 years agoaggregator: Replace event lock with pad's object lock
Olivier Crête [Wed, 14 Jan 2015 19:35:15 +0000 (14:35 -0500)]
aggregator: Replace event lock with pad's object lock

Reduce the number of locks simplify code, what is protects
is exposed, but the lock was not.

Also means adding an _unlocked version of gst_aggregator_pad_steal_buffer().

https://bugzilla.gnome.org/show_bug.cgi?id=742684

9 years agoaggregator: Protect data with the same mutex as GCond
Olivier Crête [Sat, 10 Jan 2015 03:01:00 +0000 (22:01 -0500)]
aggregator: Protect data with the same mutex as GCond

Whenever a GCond is used, the safest paradigm is to protect
the variable which change is signalled by the GCond with the same
mutex that the GCond depends on.

https://bugzilla.gnome.org/show_bug.cgi?id=742684

9 years agovideoaggregator: If getting a timeout before having caps, just advance our position
Nirbheek Chauhan [Wed, 28 Jan 2015 20:58:38 +0000 (02:28 +0530)]
videoaggregator: If getting a timeout before having caps, just advance our position

This can happen if this is a live pipeline and no source produced any buffer
and sent no caps until an output buffer should've been produced according to the
latency.

This fix is similar in spirit to commit be7034d1 by Sebastian for audiomixer.

9 years agogl/calayer: add resize callback based on the bounds rectangle
Matthew Waters [Thu, 29 Jan 2015 06:31:09 +0000 (17:31 +1100)]
gl/calayer: add resize callback based on the bounds rectangle

9 years agogl/caopengllayer: draw asynchronously
Matthew Waters [Thu, 29 Jan 2015 04:26:21 +0000 (15:26 +1100)]
gl/caopengllayer: draw asynchronously

This essentially makes the CAOpenGLLayer draw every refresh cycle.

9 years agogl/cocoa: don't segfault if we have a NULL draw/resize/close callback
Matthew Waters [Wed, 28 Jan 2015 06:59:42 +0000 (17:59 +1100)]
gl/cocoa: don't segfault if we have a NULL draw/resize/close callback

9 years agocgl/calayer: use a callback instead of hardcoding the draw functionality
Matthew Waters [Wed, 28 Jan 2015 06:16:14 +0000 (17:16 +1100)]
cgl/calayer: use a callback instead of hardcoding the draw functionality

9 years agocgl: install the gl context and gl layer headers
Matthew Waters [Wed, 28 Jan 2015 06:13:05 +0000 (17:13 +1100)]
cgl: install the gl context and gl layer headers

9 years agocgl: add a header for the CAOpenGLLayer support
Matthew Waters [Wed, 28 Jan 2015 06:05:14 +0000 (17:05 +1100)]
cgl: add a header for the CAOpenGLLayer support

9 years agodecklinkvideosink: Always lock the mutex before starting the streams
Sebastian Dröge [Wed, 28 Jan 2015 16:02:59 +0000 (17:02 +0100)]
decklinkvideosink: Always lock the mutex before starting the streams

9 years agodecklinkvideosink: Fix deadlock
Sebastian Dröge [Wed, 28 Jan 2015 15:58:27 +0000 (16:58 +0100)]
decklinkvideosink: Fix deadlock

9 years agodecklink{audio,video}sink: Only start scheduled playback once both sources are ready...
Sebastian Dröge [Wed, 28 Jan 2015 14:48:26 +0000 (15:48 +0100)]
decklink{audio,video}sink: Only start scheduled playback once both sources are ready and we are in PLAYING

Otherwise we might start the scheduled playback before the audio or video streams are
actually enabled, and then error out later because they are enabled to late.

We enable the streams when getting the caps, which might be *after* we were
set to PLAYING state.

9 years agodecklink{audio,video}src: Only start the streams once both sources are ready and...
Sebastian Dröge [Wed, 28 Jan 2015 14:26:17 +0000 (15:26 +0100)]
decklink{audio,video}src: Only start the streams once both sources are ready and we are in PLAYING

Otherwise we might start the streams before the audio or video streams are
actually enabled, and then error out later because they are enabled to late.

We enable the streams when getting the caps, which might be *after* we were
set to PLAYING state.

9 years agodecklink: Make sure our clock never returns NONE, always advances and does not jump...
Sebastian Dröge [Wed, 28 Jan 2015 13:21:40 +0000 (14:21 +0100)]
decklink: Make sure our clock never returns NONE, always advances and does not jump when going from PAUSED to PLAYING

It basically behaves the same as the audio clocks.

9 years agodecklinkvideosink: Handle the clock returning GST_CLOCK_TIME_NONE properly
Sebastian Dröge [Wed, 28 Jan 2015 11:20:05 +0000 (12:20 +0100)]
decklinkvideosink: Handle the clock returning GST_CLOCK_TIME_NONE properly

9 years agodecklinkvideo{sink,src}: Make elements more similar to the audio elements by enabling...
Sebastian Dröge [Wed, 28 Jan 2015 10:41:17 +0000 (11:41 +0100)]
decklinkvideo{sink,src}: Make elements more similar to the audio elements by enabling the video input/output only when getting the actual caps

This will also make it easier later to support caps changes and support
selecting the mode based on the caps if that should ever be implemented.

9 years agodecklinkvideosrc: Properly report caps if mode!=auto and handle caps changes properly...
Sebastian Dröge [Mon, 26 Jan 2015 18:02:04 +0000 (19:02 +0100)]
decklinkvideosrc: Properly report caps if mode!=auto and handle caps changes properly for mode=auto

9 years agodecklinkaudiosrc: Don't release input device twice on errors in set_caps()
Sebastian Dröge [Mon, 26 Jan 2015 17:27:10 +0000 (18:27 +0100)]
decklinkaudiosrc: Don't release input device twice on errors in set_caps()

9 years agogl/dispmanx: fix build
Philippe Normand [Tue, 27 Jan 2015 10:25:53 +0000 (11:25 +0100)]
gl/dispmanx: fix build

Commit ab48bb6f0f55091662e595a001e178154ce60cdb changed the API of
GstGLWindow.

9 years agoglmemory: more compatibility defines for gles2 systems
Matthew Waters [Tue, 27 Jan 2015 03:52:47 +0000 (14:52 +1100)]
glmemory: more compatibility defines for gles2 systems

9 years agoglmemory: add some thread safety for gl operations
Matthew Waters [Tue, 27 Jan 2015 01:15:43 +0000 (12:15 +1100)]
glmemory: add some thread safety for gl operations

9 years agoglmemory: use pbo's for download
Matthew Waters [Tue, 27 Jan 2015 00:53:51 +0000 (11:53 +1100)]
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

9 years agoglprototypes: add some (un)map buffer variants for GL/GLES
Matthew Waters [Tue, 27 Jan 2015 00:04:07 +0000 (11:04 +1100)]
glprototypes: add some (un)map buffer variants for GL/GLES

9 years agodashdemux: use audio_%02u and video_%02u names for pads
Thiago Santos [Mon, 26 Jan 2015 20:51:22 +0000 (17:51 -0300)]
dashdemux: use audio_%02u and video_%02u names for pads

Instead of using the default ghostpad%u naming. The audio_/video_
names are more common in demuxers

9 years agodecklinkaudiosrc: Release the audio input on errors, not the video input
Sebastian Dröge [Mon, 26 Jan 2015 14:33:23 +0000 (15:33 +0100)]
decklinkaudiosrc: Release the audio input on errors, not the video input

9 years agoaiffparse: remove unnecessary variable
Luis de Bethencourt [Mon, 26 Jan 2015 13:46:44 +0000 (13:46 +0000)]
aiffparse: remove unnecessary variable

The bps variable is declared with value aiff->bps, read once and never written.
aiff->bps can be used directly instead.

9 years agoaiffparse: fix which stop variable is used in assignment
Luis de Bethencourt [Mon, 26 Jan 2015 12:49:45 +0000 (12:49 +0000)]
aiffparse: fix which stop variable is used in assignment

Assignment is done to variable segment.stop when the intention was to assign to
local variable stop. Instead of overwriting it, the value is now clamped and
segment.stop is set to it soon after.

CID #1265772

9 years agovideoaggregator: fix crash when receiving buffer without timestamps
Tim-Philipp Müller [Mon, 26 Jan 2015 09:22:23 +0000 (09:22 +0000)]
videoaggregator: fix crash when receiving buffer without timestamps

Unset out buffer in clip function when we unref the buffer to be
clipped, otherwise aggregator will continue to use the already-
freed buffer. Fixes crash when buffers without timestamps are
being fed to aggregator. Partly because aggregator ignores the
error flow return.

https://bugzilla.gnome.org/show_bug.cgi?id=743334

9 years agoRemove unported directdraw plugin
Tim-Philipp Müller [Sun, 18 Jan 2015 18:05:31 +0000 (18:05 +0000)]
Remove unported directdraw plugin

This API has been deprecated for eternities and microsoft
stopped shipping the headers in 2010 accoding to wikipedia,
so let's just remove it and focus on bringing the plugins
based on the newer APIs up to snuff.

9 years agoaiffmux: write padding byte at end of SSND chunk if needed
Matthieu Bouron [Wed, 26 Mar 2014 17:43:33 +0000 (17:43 +0000)]
aiffmux: write padding byte at end of SSND chunk if needed

AIFF chunks are supposed to be even aligned.

Aligning the SSND chunk will allow the aiff muxer to properly write
chunks (like the ID3 one) at the end of the file.

https://bugzilla.gnome.org/show_bug.cgi?id=727402