Commit graph

15670 commits

Author SHA1 Message Date
Tim-Philipp Müller 902a5e6bdc queue: fix race when flush-stop event comes in whilst shutting down
Don't re-start the queue push task on the source pad when a
flush-stop event comes in and we're in the process of shutting
down, otherwise that task will never be stopped again.

When the element is set to READY state, the pads get de-activated.
The source pad gets deactivated before the queue's own activate_mode
function on the source pads gets called (which will stop the thread),
so checking whether the pad is active before re-starting the task on
receiving flush-stop should be fine. The problem would happen when the
flush-stop handler was called just after the queue's activate mode
function had stopped the task.

Spotted and debugged by Linus Svensson <linux.svensson@axis.com>

https://bugzilla.gnome.org/show_bug.cgi?id=734688
2014-08-23 12:40:35 +01:00
Thiago Santos ffa14610ca inputselector: always proxy caps query
Otherwise it would only be proxied for the active pad which can lead
upstream to use an incompatible caps for the downstream element.

Even if a reconfigure event is sent upstream when the pad is activated, this
will save the caps reconfiguration if it is already using an acceptable caps.
2014-08-23 12:40:25 +01:00
Tim-Philipp Müller 63e1f9c8da base: and fix build with new g-i again 2014-08-14 14:40:24 +01:00
Tim-Philipp Müller 277b471239 base: remove g-i annotation that makes older g-ir-scanner crash
Just remove one skip annotation that causes this:

  ** (g-ir-compiler:12458): ERROR **: Caught NULL node, parent=empty

with older g-i versions such as 1.32.1.
2014-08-14 14:35:50 +01:00
Sebastian Dröge c99a4db917 multiqueue: Only handle flow returns < EOS as errors, not e.g. flushing 2014-08-13 14:34:02 +03:00
Sebastian Dröge 870a65c670 bin: Use allow-none instead of nullable until we depend on a new enough GI version 2014-08-13 14:34:02 +03:00
Sebastian Dröge afc394d221 bin: gst_bin_new() can accept NULL as name 2014-08-13 14:34:02 +03:00
Sebastian Dröge 5b015250ba element: Clarify docs about gst_element_get_request_pad() and remove deprecation part
This function is not really pad or slow for the common case of requesting a
pad with the name of the template. It is only slower if you to name your pads
directly instead of letting the element handle it.

Also there's no reason to deprecate it in favor of a more complicated function
for the common case.
2014-08-13 14:34:02 +03:00
Sebastian Dröge c69b12bf95 queue2: Post errors if we receive EOS after downstream reported an error
There will be no further data flow that would allow us to propagate the
error upstream, causing nobody at all to post an error message.
2014-08-13 14:34:02 +03:00
Sebastian Dröge 38c0114fb7 queue: Post errors when receiving EOS after downstream returned an error
There might be no further data flow that would allow us to propagate the
error upstream, causing nobody to post an error at all.
2014-08-13 14:34:02 +03:00
Sebastian Dröge 7c797f024c multiqueue: Post errors ourselves if they are received after EOS
After EOS there will be no further buffer which could propagate the
error upstream, so nothing is going to post an error message and
the pipeline just idles around.
2014-08-13 14:34:02 +03:00
Руслан Ижбулатов 067604b2d3 poll: Prevent false-negative from WAKE_EVENT() on W32
SetEvent() seems to not call SetLastError(0) internally, so checking last
error after calling SetEvent() may return the error from an earlier W32 API
call. Fix this by calling SetlastError(0) explicitly.

Currently WAKE_EVENT() code is cramped into a macro and doesn't look to be
entirely correct. Particularly, it does not check the return value of
SetEvent(), only the thread-local W32 error value. It is likely that SetEvent()
actually just returns non-zero value, but the code mistakenly thinks that the
call has failed, because GetLastError() seems to indicate so.

https://bugzilla.gnome.org/show_bug.cgi?id=733805
2014-08-11 08:42:06 +02:00
Mohammed Sameer 57e3797e88 bufferpool: Add missing error checking to default_alloc_buffer()
default_alloc_buffer() calls gst_buffer_new_allocate() but does not check for
failed allocation.

This patch makes default_alloc_buffer() return an error (GST_FLOW_ERROR) if
buffer allocation fails.

https://bugzilla.gnome.org/show_bug.cgi?id=733974
2014-07-30 09:51:08 -04:00
Thiago Santos e5ac798c7b multiqueue: avoid using infinite buffers limit if finite is requested
If the current max-buffers limit it infinite and a finite value is
requested, switch to the MAX (requested, current-value) to set some
limit but not below what we know that we've needed so far.

https://bugzilla.gnome.org/show_bug.cgi?id=733837
2014-07-29 21:08:38 -03:00
Sebastian Rasmussen 9fe3365f94 parse: Unref reference to enclosing bins
Previously all reference to enclosing bins of an element were leaked
when doing delaying setting a property.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733697
2014-07-28 09:18:02 -03:00
Tim-Philipp Müller 9ceb8f3a90 gst: include atomicqueue.h again in gst.h
It's a public header of gstreamer core, so #include <gst/gst.h>
should make the API available.
2014-07-27 15:14:33 +01:00
Srimanta Panda 2202c249e8 funnel: Fix for racy EOS event handling
When eos events are forwarded simultaneouly from two sinkpads on
funnel, it doesnot forward the eos to sourcepad. The reason is
sticky events are stored after the event callbacks are returned.
Therefore while one is about to store the sticky events on the its
sinkpad, other sinkpad starts checking for the eos events on all other
sinkpads and assumes eos is not present yet.

https://bugzilla.gnome.org/show_bug.cgi?id=732851
2014-07-22 14:31:46 +02:00
Sebastian Dröge 98a5de66b9 Release 1.4.0 2014-07-19 16:46:41 +02:00
Sebastian Dröge fcf25b1d94 Update .po files 2014-07-19 16:21:20 +02:00
Sebastian Dröge c64e7a343f po: Update translations 2014-07-19 12:16:58 +02:00
Thibault Saunier 4c38895f4b baseparse: Return FLOW_FLUSHING when pushing a frame on a pad that has been flushed
When going to READY, it is possible that we are still pusing a frame but that
our srcpad has already been set to flushing. In that case we should not
post any error on the bus but instead cleanly return FLOW_FLUSHING.

https://bugzilla.gnome.org/show_bug.cgi?id=733320
2014-07-17 17:46:16 +02:00
Edward Hervey f1abac1109 typefindelement: Propagate input buffer PTS and DTS
The initial buffers (that were used for timestamping) might have PTS
and DTS set. In order to forward those properly, get the initial
PTS/DTS from the adapter and set them on the reconstructed output
buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=733291
2014-07-17 09:45:54 +02:00
Sebastian Rasmussen 4dca9a79a2 debugutils: Unref pad template after use
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=733121
2014-07-16 16:44:11 +02:00
Thiago Santos c7aa4e6a5f gst: init taglist gtype to use it in gstvalue
Otherwise it will have a 0 value and GstTagList won't be found
for GstValue functions (serialization/deserialization)

https://bugzilla.gnome.org/show_bug.cgi?id=733131
2014-07-14 18:45:11 -03:00
Sebastian Dröge ed39f8b5b7 Release 1.3.91 2014-07-11 10:46:01 +02:00
Sebastian Dröge 25e8e0076c Update .po files 2014-07-11 10:41:20 +02:00
Sebastian Dröge 685bd937fe po: Update translations 2014-07-11 08:51:08 +02:00
Sebastian Rasmussen 863ba1a598 docs: Fix documentation typos and inconsistencies
* GstGlobalDeviceMonitor was renamed to GstDeviceMonitor
 * Expand GST_MESSAGE_DEVICE to the full enum value names
 * Correct the incorrect references to the GstDeviceProvider interfaces
 * Describe caps arguments for gstcheck interface
 * Add missing docs for GstNetAddressMeta and its add function
 * Add docs for toc helper macros
 * Avoid refering to GstValueList type as done elsewhere

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
2014-07-09 09:22:11 +02:00
Sebastian Rasmussen 05cd4f89d3 docs: Cleanup interface references in docs
* Delete references to removed interfaces
 * Add missing documentation sections
 * Fix duplicate interface references for GstDevice

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732786
2014-07-09 09:21:32 +02:00
Sebastian Dröge 7f9c0d06dd docs: There is no decodebin2 anymore, don't pretend otherwise 2014-07-08 11:18:05 +02:00
Thiago Santos 7446cea73d fdsrc: fix error setting when uri is invalid
Elements should always set the GError
2014-07-07 16:14:55 -03:00
Tim-Philipp Müller ba31faf261 libs: gstcheck: check that mutex is locked before g_cond_wait*() is called
Sanity check to catch problems in unit test.
2014-07-06 12:13:04 +01:00
Tim-Philipp Müller b2bbd1edfa libs: gstcheck: init and clear global mutex and cond variables 2014-07-06 12:12:20 +01:00
Tim-Philipp Müller e10d54b8e2 tests: fix locking in gstpoll unit test
The mutex needs to be locked when g_cond_wait*() is
called.
2014-07-06 12:10:09 +01:00
Matthieu Bouron b722d41d44 gst-uninstalled: add video and base library paths from -bad
https://bugzilla.gnome.org/show_bug.cgi?id=732770
2014-07-06 00:18:40 +01:00
Tim-Philipp Müller 721a1c7553 tools: suppress GLib warnings when gst-inspecting deprecated properties
GLib in git will spew a g_warning() when a property marked as
deprecated via param spec flags is accessed. Suppress this by
setting the appropriate environment variable.
2014-07-04 19:40:28 +01:00
Sebastian Dröge 125ae3acb1 message: Work around g-i/pygobject/gjs bug with ~0 in enums
GST_MESSAGE_ANY was considered a long by pygobject and gjs, and thus
couldn't be used in gst_bus_poll() and similar APIs as they expect an
int-typed enum.

Just use 0xffffffff instead for now.

https://bugzilla.gnome.org/show_bug.cgi?id=732633
2014-07-03 10:13:28 +02:00
Tim-Philipp Müller 14ae3cf56c tests: don't use post-GLib 2.32 API in bufferlist test
g_ptr_array_insert() is GLib >= 2.40
2014-07-02 08:41:44 +01:00
Göran Jönsson d0a808cdc8 pad: Don't unlock while iterating over all sticky events for removal
Otherwise we might end up getting the event removed from elsewhere
at the same time while we're unlocked for g_object_notify().

https://bugzilla.gnome.org/show_bug.cgi?id=732556
2014-07-01 19:26:18 +02:00
Sebastian Dröge b5936efc98 identity: Proxy the accept-caps query
We always work in passthrough mode so there's no point in doing
something more clever in basetransform. Also the basetransform
code leads to problems with incomplete caps and downstream
elements that use GST_PAD_FLAG_ACCEPT_INTERSECT.

https://bugzilla.gnome.org/show_bug.cgi?id=732559
2014-07-01 19:19:43 +02:00
Vincent Penquerc'h 2dc8839234 basesink: reset QoS on segment event
This avoids spurious warnings about slow machine when upstream
sends new segments without flushing.
2014-07-01 16:30:23 +01:00
Evan Nemerson 5abc82e9f3 introspection: Assorted minor introspection and documentation fixes
https://bugzilla.gnome.org/show_bug.cgi?id=732534
2014-07-01 09:03:41 +02:00
Guillaume Desmottes 688108431a devicemonitor: Stop using g_clear_pointer()
We dont't want to depend on GLib 2.34 for now.
2014-06-30 11:17:44 +02:00
Sebastian Dröge 434bb14995 sparsefile: Initialize memory in unit test to make valgrind happy
We were writing unitialized stack memory to the file.
2014-06-29 19:16:05 +02:00
Sebastian Dröge 417fac010b Release 1.3.90 2014-06-28 11:13:13 +02:00
Sebastian Dröge 98bf407b98 Update .po files 2014-06-28 10:41:48 +02:00
Tim-Philipp Müller 0e0e78e8af devicemonitor: don't fail when started without any filters
Just show all devices then.
2014-06-27 10:47:50 +01:00
Tim-Philipp Müller 9b07b935a4 deviceproviderfactory: handle NULL classes argument and match any 2014-06-27 10:44:01 +01:00
Olivier Crête fc87c5df5e device: Add unit tests 2014-06-26 21:01:38 -04:00
Olivier Crête 67440ce084 devicemonitor: Improve documentation 2014-06-26 21:01:38 -04:00