Sebastian Dröge
e472d9d261
multiqueue: Don't do serialized queries when we're flushing
...
Just immediately fail the query, otherwise we would wait forever
for the query to be answered.
2013-05-27 16:22:00 +02:00
Sebastian Dröge
b6fac17502
queue/queue2/multiqueue: When flushing, make sure to not lose any sticky events
...
https://bugzilla.gnome.org/show_bug.cgi?id=688824
2013-05-27 13:01:43 +02:00
Sebastian Dröge
a79d3a0220
multiqueue: Initialize all GstMultiQueueItem fields in both code paths
2013-05-24 18:42:55 +02:00
Sebastian Dröge
1c6341e6a4
multiqueue: Don't access the query after signalling the waiting thread
...
It might've free'd the query already.
2013-05-24 18:38:40 +02:00
Sebastian Dröge
3b44a44a01
multiqueue: Make sure to always signal any possible pending serialized queries
...
And don't unref them when flushing the queue, they're owned by the caller!
https://bugzilla.gnome.org/show_bug.cgi?id=700342
2013-05-24 18:30:44 +02:00
Wim Taymans
fa371dad6d
multiqueue: ignore empty not-linked queues
...
We need to ignore the not-linked queues in the underrun and overrun callbacks
because they are expected to be empty.
2013-04-05 10:15:37 +02:00
Wim Taymans
bda406c42f
multiqueue: start pushing again on RECONFIGURE
...
When we got NOT_LINKED before and we receive a RECONFIGURE event, start pushing
again on the source pad.
See https://bugzilla.gnome.org/show_bug.cgi?id=676304
2013-04-04 19:16:23 +02:00
Branko Subasic
17bff49262
multiqueue: correct overrun handling
...
The control of wheteher a SingleQueue is full is not correct.
Rewrote single_queue_overrun_cb() so it checks the correct variables
when checking if the queue has reached the hard limits, and to
increase the max buffer limit once for each call.
https://bugzilla.gnome.org/show_bug.cgi?id=690557
2012-12-20 15:34:01 +01:00
Tim-Philipp Müller
666c8c11c6
Fix FSF address
...
https://bugzilla.gnome.org/show_bug.cgi?id=687520
2012-11-03 20:44:48 +00:00
Jan Schmidt
698324d48b
multiqueue: Add EOS status to debug output about filled/unfilled
2012-10-30 10:04:14 +11:00
Sebastian Dröge
09982c3c13
dataqueue/queuearray: Make public API again
...
These are actually used outside of coreelements nowadays.
Also hide lots of internals and add padding and documentation.
2012-10-25 14:03:01 +02:00
Josep Torra Valles
111fcc6e31
Make intel compiler happier
...
https://bugzilla.gnome.org/show_bug.cgi?id=552657
2012-09-25 00:56:26 +01:00
Edward Hervey
d3ffa82639
Remove 0.10-related documentation and "Since" markers
2012-07-10 12:03:27 +02:00
Wim Taymans
76e8b2ecda
task: add GDestroyNotify to _new
...
Add a GDestroyNotify to the user_data we pass to gst_task_new()
Change gst_pad_start_task() to also take the notify
2012-06-20 10:31:49 +02:00
Matej Knopp
c4b71c2574
multiqueue: gst_single_queue_flush unlocks the queue twice
...
https://bugzilla.gnome.org/show_bug.cgi?id=674044
2012-04-13 23:57:35 +01:00
Sebastian Dröge
1a61f3ec19
Merge remote-tracking branch 'origin/0.10'
2012-04-09 16:42:30 +02:00
Sebastian Dröge
829eafad0e
multiqueue: Don't use buffer after pushing it downstream
2012-04-09 16:40:47 +02:00
Tim-Philipp Müller
a63829b4ff
plugins: use new gst_element_class_set_static_metadata()
2012-04-09 13:05:07 +01:00
Sebastian Dröge
4b6c3c7fea
Merge remote-tracking branch 'origin/0.10'
...
Conflicts:
plugins/elements/gstmultiqueue.c
2012-03-29 14:54:53 +02:00
Sebastian Dröge
9441e711df
multiqueue: Wake up all not-linked streams when a stream switches from linked to not-linked
...
We reset all the waiting streams, let them push another buffer to
see if they're now active again. This allows faster switching
between streams and prevents deadlocks if downstream does any
waiting too.
Also improve locking a bit, srcresult must be protected by the
multiqueue lock too because it's used/set from random threads.
2012-03-29 14:49:53 +02:00
Sebastian Dröge
17e691421f
multiqueue: Recompute high-time too when flushing, not only high-id
2012-03-29 14:47:57 +02:00
Wim Taymans
d540a5fc68
multiqueue: handle serialized queries
2012-03-19 11:45:27 +01:00
Wim Taymans
9e2ef19dc2
queues: warn when receiving a serialized event
...
.. until we implement it.
2012-03-14 16:00:48 +01:00
Wim Taymans
7ab1d62c24
GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING
2012-02-08 16:18:04 +01:00
Tim-Philipp Müller
13d91d1f6c
Use recent GLib API unconditionally now that we depend on the latest GLib
2012-01-22 01:25:22 +00:00
Wim Taymans
252327f87a
Update for new gthread API
2012-01-19 09:27:04 +01:00
Tim-Philipp Müller
a1daf846f3
Merge remote-tracking branch 'origin/master' into 0.11
...
Conflicts:
gst/gstobject.h
libs/gst/check/gstcheck.h
libs/gst/controller/gstcontroller.c
plugins/elements/gstidentity.c
tools/gst-xmlinspect.c
2011-12-04 15:38:09 +00:00
Tim-Philipp Müller
2666450864
Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
...
GStaticRecMutex is part of our API/ABI, not much we can do here in 0.10.
2011-12-04 14:38:26 +00:00
Sebastian Dröge
1fa356a23c
Merge branch 'master' into 0.11
...
Conflicts:
gst/gstpad.c
libs/gst/base/gstbaseparse.c
2011-11-24 11:23:07 +01:00
Vincent Penquerc'h
611ac6ea85
multiqueue: check filled state of queues even if another one is empty
...
This will avoid a case where overrun is never signalled if some
stream never produces any data, causing playbin2 to not end preroll.
https://bugzilla.gnome.org/show_bug.cgi?id=660778
2011-11-24 10:38:34 +01:00
Wim Taymans
2f1ed65339
pad: Merge pad mode activation functions
...
Add the pad mode to the activate function so that we can reuse the same function
for all activation modes. This makes the core logic smaller and allows for some
elements to make their activation code easier. It would allow us to add more
scheduling modes later without having to add more activate functions.
2011-11-21 13:29:05 +01:00
Wim Taymans
39a5e26ea9
pad: add parent to activate functions
2011-11-18 13:54:29 +01:00
Wim Taymans
612b1fbb14
pad: add parent to other functions
...
Add parent to chain, chain_list, getrange and event functions.
2011-11-17 12:40:45 +01:00
Wim Taymans
361a7ae44d
add parent to internal links
2011-11-16 17:49:46 +01:00
Wim Taymans
09a8294d36
pad: add parent to the query function
2011-11-16 17:22:56 +01:00
Wim Taymans
54e1174060
GstPadFlags: rename flags GST_PAD_* -> GST_PAD_FLAG_*
2011-11-16 12:36:51 +01:00
Wim Taymans
06d4828df3
plugins: remove obsolete parent checks
2011-11-16 12:11:12 +01:00
Wim Taymans
b5c3e254b1
pad: remove getcaps and use caps query
...
Remove the getcaps function on the pad and use the CAPS query for
the same effect.
Add PROXY_CAPS to the pad flags. This instructs the default caps event and query
handlers to pass on the CAPS related queries and events. This simplifies a lot
of elements that passtrough caps negotiation.
Make two utility functions to proxy caps queries and aggregate the result. Needs
to use the pad forward function instead later.
Make the _query_peer_ utility functions use the gst_pad_peer_query() function to
make sure the probes are emited properly.
2011-11-15 11:20:48 +01:00
Wim Taymans
b7966c0c7d
pad: make an ACCEPT_CAPS query
...
Replace the acceptcaps function with a query.
2011-11-09 17:36:00 +01:00
Wim Taymans
ac9e5533b5
pad: add more queries
...
Add more query functions to prepare for doing more with queries
2011-11-09 11:22:36 +01:00
Wim Taymans
9c0d8ca718
Merge branch 'master' into 0.11
...
Conflicts:
gst/gstelement.h
gst/gstghostpad.c
gst/gstminiobject.c
2011-11-08 12:54:15 +01:00
Tim-Philipp Müller
16dcd5e958
docs: fix Since: markers for API added after 0.10.35
2011-11-08 00:32:36 +00:00
Wim Taymans
d169fa8728
fix request pad
...
Make all request pads take _%u in the template.
Fix up unit tests.
2011-11-03 17:49:45 +01:00
Wim Taymans
88e12228cf
bufferlist: clean up API
...
gst_buffer_list_len() -> gst_buffer_list_length()
gst_buffer_list_sized_new() -> gst_buffer_list_new_sized()
2011-11-02 08:59:43 +01:00
Wim Taymans
ea012d3dd7
pad: GST_FLOW_UNEXPECTED -> GST_FLOW_EOS
2011-10-10 11:33:51 +02:00
Sebastian Dröge
43538e2e75
Merge branch 'master' into 0.11
...
Conflicts:
docs/design/draft-buffer2.txt
docs/design/part-TODO.txt
docs/design/part-block.txt
docs/design/part-bufferlist.txt
docs/design/part-caps.txt
docs/design/part-element-transform.txt
docs/design/part-events.txt
docs/design/part-negotiation.txt
gst/gstcaps.c
gst/gstevent.h
gst/gstghostpad.c
gst/gstinterface.c
gst/gstpad.c
gst/gstpad.h
gst/gstutils.c
libs/gst/base/gstbasesink.c
libs/gst/base/gstbasesrc.c
libs/gst/base/gstbasetransform.c
libs/gst/base/gsttypefindhelper.c
plugins/elements/gstcapsfilter.c
plugins/elements/gsttee.c
tests/check/generic/sinks.c
tools/gst-launch.1.in
2011-09-08 14:28:23 +02:00
Piotr Fusik
14f5518f3d
docs, gst: typo fixes
...
https://bugzilla.gnome.org/show_bug.cgi?id=658449
2011-09-07 18:03:17 +01:00
Tim-Philipp Müller
5a8273e527
Merge branch 'master' into 0.11
2011-06-05 15:48:51 +01:00
David Schleef
f3eac7de22
Work around changes in g_atomic API
...
See #651514 for details. It's apparently impossible to write code
that avoids both type punning warnings with old g_atomic headers and
assertions in the new. Thus, macros and a version check.
2011-06-04 00:36:26 -07:00
Sebastian Dröge
a46c9c2a62
event: Make SEGMENT event parsing API more consistent with the others
2011-05-18 16:56:43 +02:00
Sebastian Dröge
3d2127f865
Revert "query: allow _make_writable on query handlers"
...
This reverts commit cf4fbc005c
.
This change did not improve the situation for bindings because
queries are usually created, then directly passed to a function
and not stored elsewhere, and the writability problem with
miniobjects usually happens with buffers or caps instead.
2011-05-17 11:21:41 +02:00
Sebastian Dröge
b935a814d9
Merge branch 'master' into 0.11
...
Conflicts:
configure.ac
docs/gst/gstreamer-sections.txt
gst/gstbin.c
gst/gstelement.c
gst/gstelement.h
gst/gstghostpad.c
gst/gstminiobject.c
gst/gstminiobject.h
libs/gst/base/gstbasesrc.c
libs/gst/base/gstbasetransform.c
plugins/elements/gstinputselector.c
tests/check/gst/gstminiobject.c
2011-05-16 16:53:04 +02:00
Sebastian Dröge
43e165c93c
elements: Update for negotiation related API changes
...
The filter caps are only forwarded and returned instead
of ANY caps in the core elements because they don't do
anything caps specific.
2011-05-16 15:33:11 +02:00
Wim Taymans
bdbc069348
Rework GstSegment handling
...
Improve GstSegment, rename some fields. The idea is to have the GstSegment
structure represent the timing structure of the buffers as they are generated by
the source or demuxer element.
gst_segment_set_seek() -> gst_segment_do_seek()
Rename the NEWSEGMENT event to SEGMENT.
Make parsing of the SEGMENT event into a GstSegment structure.
Pass a GstSegment structure when making a new SEGMENT event. This allows us to
pass the timing info directly to the next element. No accumulation is needed in
the receiving element, all the info is inside the element.
Remove gst_segment_set_newsegment(): This function as used to accumulate
segments received from upstream, which is now not needed anymore because the
segment event contains the complete timing information.
2011-05-16 11:37:52 +02:00
Tim-Philipp Müller
76ccd2a1e9
docs: fix up some Since markers and update for new multiqueue args
2011-05-14 14:05:52 +01:00
Sebastian Dröge
9f83109706
multiqueue: Add mode to synchronize deactivated/not-linked streams by the running time
...
Fixes bug #645107 , #600648 .
2011-05-14 11:39:35 +02:00
Mark Nauwelaerts
24888ecc70
multiqueue: ensure thread safety when adding a pad
...
This seems to be a regression, and was causing crashes.
https://bugzilla.gnome.org/show_bug.cgi?id=649878
2011-05-10 18:07:01 +01:00
Wim Taymans
cf4fbc005c
query: allow _make_writable on query handlers
...
Pass a GstQuery ** to the query handlers so that they can make the query
writable before using a setter on it.
Port code to new API.
2011-05-10 18:36:33 +02:00
Wim Taymans
84a1f4ba7f
element: use request_new_pad_full as the default
...
Add GstCaps to request_new_pad so that request_new_pad_full can be removed.
Fix elements.
2011-05-10 16:41:36 +02:00
Wim Taymans
c07b57fc05
segment: remove _full version
...
Rename the _full versions of the functions to the normal function names.
2011-05-09 17:51:07 +02:00
Wim Taymans
02e5feb2bf
pad: avoid using the old GST_PAD_CAPS
...
Don't use GST_PAD_CAPS but instead use the new gst_pad_get_current_caps()
method.
Avoid setting caps on buffers.
2011-05-06 19:04:54 +02:00
Sebastian Dröge
caa16f2fa9
elements: Update everything for the new GstIterator API
2011-05-05 15:36:04 +02:00
Wim Taymans
c4751ec8c1
Revert "context: use context on buffers instead of caps"
...
This reverts commit 9ef1346b1f
.
Way to much for one commit and I'm not sure we want to get rid of the pad caps
just like that. It's nice to have the buffer and its type in onw nice bundle
without having to drag the complete context with it.
2011-05-05 13:17:08 +02:00
Wim Taymans
9ef1346b1f
context: use context on buffers instead of caps
...
Put the srcpad context on buffers instead of caps. This allows us to associate
all the relevant info contained in events with a buffer.
2011-05-04 18:59:47 +02:00
Wim Taymans
6ab7e6c15d
Remove pad_alloc, this can now be done better
...
Remove pad_alloc and all references. This can now be done more efficiently and
more flexible with the ALLOCATION query and the bufferpool objects. There is no
reverse negotiation yet but that will be done with an event later.
2011-04-29 13:26:19 +02:00
Sebastian Dröge
5020738a6d
elements: Use G_DEFINE_TYPE instead of GST_BOILERPLATE
2011-04-19 11:45:36 +02:00
Sebastian Dröge
f51a23a83c
Merge branch 'master' into 0.11
2011-04-16 08:59:58 +02:00
Sebastian Dröge
ea36e12bbc
multiqueue: Don't leak the sinkpad name
2011-04-14 09:07:48 +02:00
Wim Taymans
6be4dbdb5a
Merge branch 'master' into 0.11
...
Conflicts:
android/base.mk
android/controller.mk
android/dataprotocol.mk
android/elements.mk
android/gst-inspect.mk
android/gst-launch.mk
android/gst-plugin-scanner.mk
android/gst.mk
android/indexers.mk
android/net.mk
win32/common/libgstbase.def
2011-04-11 10:26:54 +02:00
Sebastian Dröge
6d97652903
multiqueue: Add another check for the flushing flag after taking the lock
...
This prevents another potential deadlock when flushing the pad
at exactly the right time.
2011-04-08 09:15:56 +02:00
Wim Taymans
7a62d32a07
Merge branch 'master' into 0.11-fdo
...
Conflicts:
docs/plugins/gstreamer-plugins.hierarchy
gst/gstelement.c
2011-03-30 19:58:52 +02:00
Sebastian Dröge
8db570f48c
multiqueue: Make assignment of queue IDs and pad names threadsafe
...
Also add a test for naming pads by the caller and return NULL
when requesting an already existing pad.
2011-03-30 10:52:36 +02:00
Andreas Frisch
5368406a57
multiqueue: Set the single queue ID to the ID of the requested pad if one was given by the caller
2011-03-30 10:18:54 +02:00
Fraxinas
86bbc85ab1
multiqueue: Fix arbitrary sink + source pad naming
...
Use the string provided by the caller for the sinkpad name
if possible. Note that all sanity checking for this name
is already done in GstElement.
Fixes Bug #645931
2011-03-29 11:31:03 +02:00
Wim Taymans
a12ede3fb1
Merge branch 'master' into 0.11-fdo
...
Conflicts:
gst/gst.c
libs/gst/base/gstcollectpads.c
2011-03-28 20:11:20 +02:00
Wim Taymans
d82c8bd2af
memory: port code to new buffer data API
2011-03-28 20:08:45 +02:00
Sebastian Dröge
489b94444e
multiqueue: Don't leak objects when flushing after dequeueing and before pushing the object
2011-03-22 11:04:20 +01:00
Sebastian Dröge
383cac91b1
multiqueue: Increment unique item counter with atomic operations
...
Before it was only protected by the stream lock but every pad
has its own stream lock, making the protection rather useless.
2011-03-21 17:52:59 +01:00
Sebastian Dröge
9e36a51bac
multiqueue: Unblock all waiting pads when shutting down
2011-03-21 17:17:22 +01:00
Sebastian Dröge
5b48fd5b24
multiqueue: Remove unused variable
2011-03-21 16:34:19 +01:00
Sebastian Dröge
14eb517849
multiqueue: Exit loop function if the pad is flushing
...
Fixes possible deadlocks when flushing an unlinked pad that waits
for other pads to advance.
2011-03-21 16:29:40 +01:00
Mark Nauwelaerts
e0f15e666a
multiqueue: return upon input when already eos
...
... rather than hanging incoming thread (as considered full in eos).
2010-12-03 13:35:49 +01:00
Jan Schmidt
691807d634
multiqueue: Fix tracking of unlinked streams.
...
33082eb9e4
introduced a bug
preventing sparse unlinked streams from advancing properly,
leading to the queue blocking.
Fixes : #633176
2010-10-27 18:12:36 +02:00
Edward Hervey
518364e7ac
multiqueue: Remove unused variable and simplify code
...
oldid was only used when we were doing multiple pops per loop.
2010-10-08 13:26:37 +02:00
Sebastian Dröge
33082eb9e4
multiqueue: Don't do an infinite loop in the loop function
...
Instead return after every iteration, which makes sure that the
stream lock is released for a short time after every iteration,
task state changes are checked, etc and this allows the task
to be stopped properly.
2010-08-27 16:59:09 +02:00
Sebastian Dröge
8035f13bbf
multiqueue: Flush the data queue if downstream return WRONG_STATE too
2010-08-27 16:59:09 +02:00
Sebastian Dröge
2e6f80bf81
elements: Stop using GST_FLOW_IS_FATAL()
2010-08-27 16:59:09 +02:00
Wim Taymans
808298833a
multiqueue: implement acceptcaps function
...
Our acceptcaps function can simply forward the query.
2010-06-29 09:57:41 +02:00
Edward Hervey
4e0b2dc832
multiqueue: Don't stop threads on UNEXPECTED and forward flow returns.
...
When a downstream element returns GST_FLOW_UNEXPECTED we want to:
* let the dataqueue task running
* forward the flow return upstream.
This allows upstream elements to push EOS, and have that EOS event come
downstream.
Fixes #609274
2010-02-09 16:15:18 +01:00
Edward Hervey
9cc47f8cba
Revert "multiqueue: handle UNEXPECTED flowreturn better"
...
This reverts commit fbdf4dceda
.
Partly fixes #609274
2010-02-09 15:58:36 +01:00
Wim Taymans
fbdf4dceda
multiqueue: handle UNEXPECTED flowreturn better
...
When we receive an UNEXPECTED flowreturn from downstream, we must not shutdown
the pushing thread because upstream will at some point push an EOS that we still
need to push further downstream.
To achieve this, convert the UNEXPECTED return value to OK. Add a fixme so that
we implement the right logic to propagate the flowreturn upstream at some point.
Also clean up the unit test a little.
Fixes #608136
2010-01-26 17:07:31 +01:00
Tim-Philipp Müller
745b35e7d4
docs: minor gtk-doc markup fixes
2010-01-20 01:48:56 +00:00
Mark Nauwelaerts
7b2c5f5168
multiqueue: set iterate_interal_links function on source pad
2009-12-30 22:59:29 +01:00
Tim-Philipp Müller
daecaf0e8a
Remove GST_DEBUG_FUNCPTR where they're pointless
...
There's not much point in using GST_DEBUG_FUNCPTR with GObject
virtual functions such as get_property, set_propery, finalize and
dispose, since they'll never be used by anyone anyway. Saves a
few bytes and possibly a tenth of a polar bear.
2009-10-28 00:44:24 +00:00
Wim Taymans
03baa04059
multiqueue: buffering is implemented now
2009-10-27 14:40:19 +01:00
Wim Taymans
b852da60d4
multiqueue: make sure percent increases
...
Keep track of the last posted percent message and make sure the next percent
messages are strictly increasing.
2009-10-27 14:40:17 +01:00
Wim Taymans
30fc865162
multiqueue: refactor buffering code
...
Move the buffering update code to a separate function so that we can call it
when the buffering state changes due to EOS.
Avoid dividing by 0.
2009-10-27 14:40:15 +01:00
Wim Taymans
99dd9830a9
multiqueue: add buffering support
...
Add support for buffering mode where we post BUFFERING messages based on the
level of the queues. It currently operates on the first queue that goes over or
under the high/low thresholds.
2009-10-27 14:40:12 +01:00
Wim Taymans
07991ae4ab
multiqueue: don't check visible items in buffering
...
In buffering mode we want to ignore the max visible items to decide when the
queue is filled. Instead, we only look at the number of bytes and/or time in the
queue.
2009-10-27 14:40:09 +01:00
Wim Taymans
6ac9191527
multiqueue: hook up low/high percent
...
Hook up the low/high percent properties for the buffering mode.
2009-10-27 14:40:07 +01:00