Thiago Santos [Thu, 12 Feb 2015 14:15:31 +0000 (11:15 -0300)]
dashdemux: set proper stream type to streams
strncmp returns 0 when it compares equal and not a
boolean
Tim-Philipp Müller [Thu, 12 Feb 2015 11:26:44 +0000 (11:26 +0000)]
audiomixer: calculate stream_time used to sync pad values correctly
Use pad (input) segment to calculate the stream time from the
input timestamp, not the aggregator (output) segment.
Sebastian Dröge [Thu, 12 Feb 2015 09:11:19 +0000 (11:11 +0200)]
avfvideosrc: Only use the duration of the sample if it is valid
Mathieu Duponchelle [Tue, 27 Jan 2015 12:48:42 +0000 (13:48 +0100)]
adaptivedemux: track per-fragment bitrates.
And use the average to go up in resolution, and the last fragment
bitrate to go down.
This allows the demuxer to react rapidly to bitrate loss, and
be conservative for bitrate improvements.
+ Add a construct only property to define the number of fragments
to consider when calculating the average moving bitrate.
https://bugzilla.gnome.org/show_bug.cgi?id=742979
Sebastian Dröge [Wed, 11 Feb 2015 13:44:16 +0000 (14:44 +0100)]
x265enc: Add support for 10bit 4:2:0 and 4:4:4 formats
Sebastian Dröge [Wed, 11 Feb 2015 13:16:21 +0000 (14:16 +0100)]
Improve and fix LATENCY query handling
This now follows the design docs everywhere, especially the maximum latency
handling.
https://bugzilla.gnome.org/show_bug.cgi?id=744106
Song Bing [Tue, 10 Feb 2015 07:55:50 +0000 (15:55 +0800)]
camerabin examples: memory leak in camerabin examples code
should unref caps after set to profile. profile will ref it.
https://bugzilla.gnome.org/show_bug.cgi?id=744219
Song Bing [Tue, 10 Feb 2015 07:53:21 +0000 (15:53 +0800)]
camerabin examples: memory leak in camerabin examples code
should unref after set object. The object will be refed when set
property.
https://bugzilla.gnome.org/show_bug.cgi?id=744219
Sebastian Dröge [Tue, 10 Feb 2015 15:18:34 +0000 (16:18 +0100)]
openslesringbuffer: Only allocate at most half the number of internal buffers as external audioringbuffer ones
Otherwise we might end up reading too much from the audioringbuffer, which
would result in reading silence.
Sebastian Dröge [Tue, 10 Feb 2015 15:01:19 +0000 (16:01 +0100)]
decklinkvideosrc: Apply the diff between element and pipeline "base" time in all cases
Even if both clocks have the same rate, we need to apply this diff. Only when
it's the same clock we don't, as it's our clock then.
Sebastian Dröge [Tue, 10 Feb 2015 14:30:44 +0000 (15:30 +0100)]
decklinkvideosrc: Add the diff between the pipeline base time and when we start to play
Add the diff between the external time when we went to playing and
the external time when the pipeline went to playing. Otherwise we
will always start outputting from 0 instead of the current running
time.
Sebastian Dröge [Tue, 10 Feb 2015 13:53:55 +0000 (14:53 +0100)]
decklinkvideosink: Actually include the change mentioned in the last commit
Sebastian Dröge [Tue, 10 Feb 2015 13:48:09 +0000 (14:48 +0100)]
decklinkvideo{src,sink}: Sample the internal clock immediately after starting the device
Otherwise we might stay at 0.0s for too long because we will take the first
timestamp we ever see as 0.0... which will be after we started the device.
Sebastian Dröge [Tue, 10 Feb 2015 09:56:37 +0000 (10:56 +0100)]
videoaggregator: When receiving timeout before caps, make sure to also advance our frame counter
Otherwise we will directly go EOS on the next non-timeout.
Sebastian Dröge [Tue, 10 Feb 2015 09:49:16 +0000 (10:49 +0100)]
aggregator: Pause srcpad task on flow errors
Otherwise we will call the task function over and over again until
upstream finally handled the flow return and shuts us down.
Matthew Waters [Sun, 8 Feb 2015 13:59:30 +0000 (00:59 +1100)]
videoaggregator: fix buffer selection when duration=-1
If the src framerate and videoaggreator's output framerate were
different, then we were taking every single buffer that had duration=-1
as it came in regardless of the buffer's start time. This caused the src
to possibly run at a different speed to the output frames.
https://bugzilla.gnome.org/show_bug.cgi?id=744096
Sebastian Dröge [Mon, 9 Feb 2015 20:04:17 +0000 (21:04 +0100)]
decklink: Fix compiler warning with gcc
gstdecklink.cpp: In member function 'virtual HRESULT GStreamerDecklinkInputCallback::VideoInputFrameArrived(IDeckLinkVideoInputFrame*, IDeckLinkAudioInputPacket*)':
gstdecklink.cpp:498:22: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
if (capture_time > m_input->clock_start_time)
^
gstdecklink.cpp:503:22: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
if (capture_time > m_input->clock_offset)
^
Sebastian Dröge [Mon, 9 Feb 2015 16:17:37 +0000 (17:17 +0100)]
decklink{audio,video}src: Implement clock slaving if the pipeline clock is not the decklink clock
Sebastian Dröge [Mon, 9 Feb 2015 16:15:21 +0000 (17:15 +0100)]
decklinkaudio{src,sink}: Only start streams / scheduled playback if there is a videosrc at this point
Sebastian Dröge [Mon, 9 Feb 2015 16:04:27 +0000 (17:04 +0100)]
decklinkaudiosrc: Don't provide a clock
The audio source only works together with the video source, and the video
source is already providing a clock.
Sebastian Dröge [Mon, 9 Feb 2015 15:18:03 +0000 (16:18 +0100)]
decklinkaudiosink: Throttle reading from the ringbuffer
The driver has an internal buffer of unspecified and unconfigurable size, and
it will pull data from our ring buffer as fast as it can until that is full.
Unfortunately that means that we pull silence from the ringbuffer unless its
size is by conincidence larger than the driver's internal ringbuffer.
The good news is that it's not required to completely fill the buffer for
proper playback. So we now throttle reading from the ringbuffer whenever
the driver has buffered more than half of our ringbuffer size by waiting
on the clock for the amount of time until it has buffered less than that
again.
Sebastian Dröge [Mon, 9 Feb 2015 14:19:11 +0000 (15:19 +0100)]
decklinkaudiosink: Start scheduled playback when going to PLAYING
The ringbuffer's acquire() is too early, and ringbuffer's start() will only be
called after the clock has advanced a bit... which it won't unless we start
scheduled playback.
Alessandro Decina [Mon, 9 Feb 2015 10:18:24 +0000 (21:18 +1100)]
vtdec: fix texture sharing on iOS
Move GLES calls to the context thread. Fix
CVOpenGLESTextureCacheCreateTextureFromImage usage on iOS.
Alessandro Decina [Mon, 9 Feb 2015 09:44:50 +0000 (20:44 +1100)]
libgstgl: set user data and GDestroyNotify for wrapped textures
Sebastian Dröge [Sun, 8 Feb 2015 20:53:58 +0000 (21:53 +0100)]
decklink{audio,video}src: Take the capture times from the pipeline clock
Not from the decklink clock. Both will return exactly the same time once the
decklink clock got slaved to the pipeline clock and received the first
observation, but until then it will return bogus values. But as both return
exactly the same values, we can as well use the pipeline clock directly.
Tim-Philipp Müller [Sun, 8 Feb 2015 14:32:22 +0000 (14:32 +0000)]
videoaggregator: don't set element factory details
This is an abstract base class, not an element.
Rob Clark [Sat, 7 Feb 2015 14:19:42 +0000 (01:19 +1100)]
dvdspu: some optimizations
Detect invisible pixels, and skip gstspu_vobsub_blend_comp_buffers()
when there are only invisible pixels. This significantly reduces the
CPU load in cases of DVDs which don't use the clip_rect to exclude
processing for parts of the screen where the video is visible.
https://bugzilla.gnome.org/show_bug.cgi?id=667221
Jan Schmidt [Sat, 7 Feb 2015 18:06:48 +0000 (05:06 +1100)]
dvdspu: Avoid warning if the video for a still frame arrives after the SPU
When we don't have a segment on the video pad yet during a still frame
don't freak out.
Jan Schmidt [Sat, 7 Feb 2015 17:51:13 +0000 (04:51 +1100)]
resindvd: Don't send meaningless segment position downstream
Don't place a meaningless value in the position field in
outgoing segments - values have to be in the range start->stop.
https://bugzilla.gnome.org/show_bug.cgi?id=740558
Luis de Bethencourt [Fri, 6 Feb 2015 16:22:26 +0000 (16:22 +0000)]
Revert "aiffparse: make sure we have data before handling sink event"
This reverts commit
a4baabb48d252214d3833b502c7903d9f15f3502.
Luis de Bethencourt [Fri, 6 Feb 2015 15:10:55 +0000 (15:10 +0000)]
aiffparse: make sure we have data before handling sink event
Check AIFF_PARSE_DATA is True before handling sink event, if not goto exit.
Tim-Philipp Müller [Thu, 5 Feb 2015 15:57:59 +0000 (15:57 +0000)]
audiomixer: remove now-unused base_time field in object structure
Sebastian Dröge [Fri, 6 Feb 2015 09:59:27 +0000 (10:59 +0100)]
aggregator: Streamline latency calculations
Min latency can never be invalid, latency property can never be invalid
either. So no need to check for all these things in various places.
Sebastian Dröge [Fri, 6 Feb 2015 09:36:28 +0000 (10:36 +0100)]
aggregator: If upstream has no max latency but the subclass has, take the subclass max latency
Sebastian Dröge [Fri, 6 Feb 2015 09:33:59 +0000 (10:33 +0100)]
aggregator: Fix min>max latency error check
We have to include the upstream latency, our own latency and the subclass
latency in the calculations.
FIXME: This is still not entirely correct
Sebastian Dröge [Fri, 6 Feb 2015 09:30:59 +0000 (10:30 +0100)]
aggregator: Don't add the latency property to the max latency
It has no meaning for the max latency and is only used to increase the min
latency.
Matthew Waters [Fri, 6 Feb 2015 01:53:15 +0000 (12:53 +1100)]
glproto/vao: only supported in core for ES 3.0+
Was causing horizontally flipped video for frame 2 onward on android
Thiago Santos [Thu, 5 Feb 2015 16:31:18 +0000 (13:31 -0300)]
faac: relace parsed with framed in aac caps
For AAC it should always be 'framed' and not 'parsed'
Thiago Santos [Thu, 5 Feb 2015 14:39:55 +0000 (11:39 -0300)]
faac: fix output caps to negotiate with some muxers
Add parsed/framed=true to allow negotiation with some
muxers that required parsed input. Encoders already provide
parsed/framed output so it should say so in caps.
Tim-Philipp Müller [Thu, 5 Feb 2015 15:48:41 +0000 (15:48 +0000)]
tests: compositor: add unit test for proper segment.base handling
As adjusted by gst_pad_set_offset(), or when doing segment seeks
or looping for example.
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.
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.
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.
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.
Sebastian Dröge [Thu, 5 Feb 2015 11:21:55 +0000 (12:21 +0100)]
openslessink/src: Lower default buffer time to 200ms like alsasink
Matthew Waters [Thu, 5 Feb 2015 05:46:32 +0000 (16:46 +1100)]
glfilter: ensure that the input upload/colorconvert are always available
Matthew Waters [Thu, 5 Feb 2015 00:06:10 +0000 (11:06 +1100)]
glimagesink: log the converted caps
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.
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
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
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
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.
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
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
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
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
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
Sebastian Dröge [Tue, 3 Feb 2015 16:32:03 +0000 (17:32 +0100)]
corevideotexturecache: Add some assertions instead of just dereferencing NULL
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.
Tim-Philipp Müller [Tue, 3 Feb 2015 14:55:32 +0000 (14:55 +0000)]
Undo accidental common module rewind
in commit
7d463576
Sebastian Dröge [Tue, 3 Feb 2015 14:38:40 +0000 (15:38 +0100)]
vtdec: Don't dereference NULL frames when draining/flushing
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.
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
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.
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
Matthew Waters [Mon, 2 Feb 2015 13:15:30 +0000 (00:15 +1100)]
glupload: allow NULL buffer for accept vfunc
Matthew Waters [Mon, 2 Feb 2015 13:13:07 +0000 (00:13 +1100)]
glupload: remove unsed convert field in private struct
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.
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.
Matthew Waters [Mon, 2 Feb 2015 12:40:16 +0000 (23:40 +1100)]
gstglcaopengllayer: use the correct rectangle type for iOS and OS X
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.
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.
Matthew Waters [Fri, 30 Jan 2015 07:51:17 +0000 (18:51 +1100)]
gl: update unit test for glmemory api change
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
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.
Alessandro Decina [Fri, 30 Jan 2015 01:22:25 +0000 (12:22 +1100)]
libgstgl: gstglcaopengllayer: set the layer as opaque
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
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.
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.
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.
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
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.
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
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.
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
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.
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
Matthew Waters [Thu, 29 Jan 2015 12:45:15 +0000 (23:45 +1100)]
gl/win32: fixup compilation
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.
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
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
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
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
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
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
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
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
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
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
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