Sebastian Dröge
c8cfaff1ff
inputselector: Keep previous active sinkpad around until we're done with it
...
Otherwise we'll send a new segment event downstream for each buffer.
2013-07-10 14:30:31 +02:00
Brendan Long
f0a3d8bb09
input-selector: send notify::active signal for input-selector pads.
...
https://bugzilla.gnome.org/show_bug.cgi?id=701319
2013-06-06 17:16:47 +02:00
Brendan Long
76f0e18f92
input-selector: return FALSE for "active" property if selector is NULL
...
https://bugzilla.gnome.org/show_bug.cgi?id=701323
2013-06-04 17:46:25 +02:00
Sebastian Dröge
1d40478014
inputselector: Forward all sticky events, including stream-start
2013-05-09 12:15:48 +02:00
Sebastian Dröge
a257cb6f5b
inputselector: Try to not push read-only buffers
...
We should only increase the refcount before pushing if we're
really going to use the buffer afterwards.
2013-04-25 16:39:52 +02:00
Arnaud Vrac
b4a91de1be
inputselector: fix clock leak in wait_running_time
...
https://bugzilla.gnome.org/show_bug.cgi?id=688477
2012-11-17 10:17:58 +00: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
8d8608c23b
ghostpad: Make some debugging more verbose
...
Also, remove an unnecessary #include in input-selector
2012-08-31 06:25:37 -07:00
Arnaud Vrac
dc86e65265
inputselector: fix clock leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=682997
2012-08-30 19:47:57 +01:00
Edward Hervey
0eb13f146f
inputselector: Wait for other streams to advance on unselected pads
...
Otherwise we end up dropping a lot of data in the case where data starts
arriving on the non-selected pad, resulting in big gaps in stream switching
2012-08-14 18:44:38 +02:00
Edward Hervey
6b447acc3c
inputselector: More debug statements
2012-08-14 18:43:54 +02:00
Edward Hervey
c33d2f7aba
inputselector: Don't forward stream-start sticky events
...
Only one STREAM_START event should be let through, else it will
confuse downstream elements that think a new stream is starting
whereas in fact we are just switching to a different input.
In the future we might want to let them through but with the same
sequence number.
2012-08-14 18:42:31 +02:00
Edward Hervey
ea761a24b4
inputselector: Use the first created pad by default
...
This guarantees a bit more consistency in which input stream will
be selected by default. It would previously be the first pad on which
an event/buffer/query was received ... which was racy and non-predictable.
2012-08-06 11:36:29 +02:00
Tim-Philipp Müller
a9d1c529f6
input-selector: use generic marshaller for "block" action signal
2012-08-05 16:48:27 +01:00
Edward Hervey
d3ffa82639
Remove 0.10-related documentation and "Since" markers
2012-07-10 12:03:27 +02:00
Tim-Philipp Müller
31976c426e
inputselector: remove some dead code for old GLib versions
2012-06-26 17:30:19 +01:00
Thiago Santos
42fab9db45
inputselector: avoid notify-tags holding lock
...
unlock before issuing this notification to prevent
deadlocks when other elements reacts to new tags.
Fixes #678220
2012-06-21 11:15:07 -03:00
Sebastian Dröge
7b966e4577
inputselector: Only proxy the allocation query for the active pad and send reconfigure events to the old/new pad when switching pads
2012-06-19 10:32:10 +01:00
Andre Moreira Magalhaes (andrunko)
83559a5970
inputselector: Correctly get current running time when syncing to the segment information
...
Fixes bug #677263 .
2012-06-01 16:37:50 +02:00
Andre Moreira Magalhaes (andrunko)
0dca0dac71
inputselector: Don't try to sync on the segment if it has no TIME format
...
...and wait until it is actually configured and has a format before
trying to sync.
2012-05-31 17:46:23 +02:00
Sebastian Dröge
7aff9dba0e
inputselector: No need to broadcast the signal in flush-stop
...
Everything stopped at this point already.
Conflicts:
plugins/elements/gstinputselector.c
2012-05-31 17:05:08 +02:00
Andre Moreira Magalhaes (andrunko)
2f6dadaa7c
inputselector: Properly sync when changing streams
...
This adds properties to use the clock time for deciding when
to drop buffers for inactive pads and a property to buffer all
not rendered buffers for the active pad to allow pad switching
without losing any buffers at all.
Conflicts:
plugins/elements/gstinputselector.c
2012-05-31 12:38:20 +02:00
Tim-Philipp Müller
cd3875857e
gst_tag_list_free() -> gst_tag_list_unref()
2012-05-28 00:08:18 +01:00
Sebastian Dröge
014d10391c
inputselector: Set sequence number on segment events
2012-04-16 10:27:29 +02:00
Sebastian Dröge
3146282d48
inputselector: Forward all sticky events when switching pads
2012-04-16 10:22:53 +02:00
Sebastian Dröge
655bfbf776
inputselector: Send reconfigure event on the new active pad when pads are switched
2012-04-16 09:46:49 +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
d03e3d7772
inputselector: Only wait until the active pad's running time is reached if the active pad already saw data
...
Otherwise we might block forever because upstream (e.g. multiqueue) is waiting
for the previously active stream to return forever (which is waiting here
in inputselector) before pushing something on the newly selected stream.
2012-03-29 14:47:57 +02:00
Tim-Philipp Müller
654b074477
input-selector: default to sync-streams=true
...
I think this is the expected behaviour, and we couldn't do this
in 0.10 for backwards-compatibility reasons, so change it now.
2012-02-21 21:07:49 +00:00
Wim Taymans
7ab1d62c24
GST_FLOW_WRONG_STATE -> GST_FLOW_FLUSHING
2012-02-08 16:18:04 +01:00
Wim Taymans
87b805a639
plugins: proxy allocation query
2012-02-02 12:32:07 +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
Sebastian Dröge
148bf27ce3
Merge branch 'master' into 0.11
2012-01-10 13:00:07 +01:00
Idar Tollefsen
b9b3795c3c
plugins: explicitly cast initialization values to the correct type
...
https://bugzilla.gnome.org/show_bug.cgi?id=667288
2012-01-04 23:59:57 +00:00
Tim-Philipp Müller
eaa2d81474
Merge remote-tracking branch 'origin/master' into 0.11
...
Conflicts:
gst/gstindexfactory.c
libs/gst/base/gstbasetransform.c
plugins/elements/gstfakesink.c
plugins/elements/gstfakesrc.c
plugins/elements/gstidentity.c
plugins/elements/gstinputselector.c
plugins/elements/gstoutputselector.c
Note: did not merge any of the basetransform changes from 0.10.
2011-12-08 00:39:10 +00:00
Sebastian Dröge
47de97df84
inputselector: Don't send a NEWSEGMENT event if a buffer arrived before the segment was configured
2011-12-07 11:01:49 +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
5889260d5a
Work around deprecated thread API in glib master
...
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We can't change most of
these in 0.10 because they're part of our API and ABI.
2011-12-04 13:35:38 +00: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
Mark Nauwelaerts
7a0e401133
inputselector: avoid iterating over a single NULL pad
2011-06-28 19:01:57 +02:00
Sebastian Dröge
97f8397ccf
inputselector: Always send a SEGMENT event when the active pad changes
2011-05-20 12:19:10 +02:00
Sebastian Dröge
bc0855f213
inputselector: Fix copy&paste mistake in the srcpad event function
2011-05-20 12:19:10 +02:00
Sebastian Dröge
67cd7fd0a2
inputselector: Send upstream events to all sinkpads, not only the selected one
...
This makes sure that SEEK events are sent to all upstream elements, which is
required if different streams are completely distinct pipeline parts. Also this
allows QoS to be done on deselected streams, flushes to be handled correctly,
etc.
2011-05-20 12:00:11 +02:00
Sebastian Dröge
9c4ce4ae16
inputselector: Port to the new segment API
...
The switch action signal with the stop and start running times
is not necessary anymore. Closing of segments is not necessary
and adjusting the start running time of a segment can later be
done with new GstPad API.
2011-05-19 12:17:30 +02: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
Wim Taymans
f6178ee53e
inputselector: handle more formats
...
Use the segment format instead of a hardcoded _TIME.
2011-05-16 17:09:06 +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
5229a26a76
inputselector: Add sync mode that syncs inactive pads to the running time of the active pad
...
Fixes bug #645017 .
2011-05-14 11:39:35 +02: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
d63829fc9a
segment: remove abs_rate from segment structure
...
Remove the abs_rate field from the segment structure, we can trivially compute
it when needed.
2011-05-09 16:39:13 +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
Ole André Vadla Ravnås
037efe8738
elements: Fix pad callbacks so they handle when parent goes away
...
1) We need to lock and get a strong ref to the parent, if still there.
2) If it has gone away, we need to handle that gracefully.
This is necessary in order to safely modify a running pipeline. Has been
observed when a streaming thread is doing a buffer_alloc() while an
application thread sends an event on a pad further downstream, and from
within a pad probe (holding STREAM_LOCK) carries out the pipeline plumbing
while the streaming thread has its buffer_alloc() in progress.
2011-04-13 17:41:17 +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
ba6054b862
inputselector: Fix getcaps and event function from last commit
...
Return ANY caps if the parent disappeared, i.e. the template caps
and don't leak events if the parent disappeared.
2011-04-08 14:50:10 +02:00
Havard Graff
297407438a
inputselector: Protect against pad-parent disappearing
2011-04-08 14:48:16 +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
38ffe30745
memory: more work on implementing buffer memory
2011-03-28 20:08:46 +02:00
Sebastian Dröge
69e81448c1
inputselector: Stop waiting for a pad switch when the pad is flushing
2011-03-19 08:57:06 +01:00
Sebastian Dröge
d41fe48ce3
inputselector: Move locking and signalling macros from the header to the source file
2011-03-19 08:57:06 +01:00
Sebastian Dröge
c8ecd6e9eb
inputselector: Hold the selector lock while reading properties of the active pad
2011-03-17 14:21:17 +01:00
Sebastian Dröge
5e60a80268
inputselector: Make sure that EOS is always sent downstream for the active pad
...
It can happen that the currently active pad got the EOS event
before it was activated and the previously active pad got the
EOS event after it was deactivated. In that case we have to
send the EOS event from an inactive pad downstream.
2011-03-17 14:10:49 +01:00
Sebastian Dröge
f19bb850ac
inputselector: Return GST_FLOW_OK until the selected pad pushed something downstream
...
This makes sure that during switches at no point in time all pads
have returned not-linked, which can happen when playing an audio-only
file with playbin2 and switching between the streams for example.
Fixes bug #644935 .
2011-03-17 12:06:39 +01:00
Tim-Philipp Müller
c8ffd4e395
docs: mention extra input-selector pad properties
...
https://bugzilla.gnome.org/show_bug.cgi?id=638381
2011-01-06 18:18:29 +00:00
Tim-Philipp Müller
c57934d7bf
inputselector: remove "select-all" property
...
select-all mode is a bit broken (e.g. newsegment event
handling), so remove that for now. The funnel element
in farsight provides similar functionality.
https://bugzilla.gnome.org/show_bug.cgi?id=539042
https://bugzilla.gnome.org/show_bug.cgi?id=638381
2011-01-05 15:53:28 +00:00
Tim-Philipp Müller
7f7721511c
inputselector: make pad's get_type function thread-safe
2010-12-31 12:08:19 +00:00
Sebastian Dröge
3f89954c27
inputselector: Protected g_object_notify() calls for the active-pad with a recursive mutex
...
This works around a thread safety problem in GLib < 2.26.0 and should
be removed when we depend on 2.26.0.
Fixes bug #607513 .
2010-12-31 12:27:45 +01:00
Tim-Philipp Müller
d692735f49
coreelements: GST_BOILERPLATE already sets parent_class
2010-12-31 00:56:11 +00:00
Tim-Philipp Müller
fdd65e382d
input-selector, output-selector: minor clean-ups
2010-12-31 00:56:11 +00:00
Tim-Philipp Müller
52617c91f3
coreelements: move input-selector and output-selector to core
...
Moved to core from gst-plugins-bad.
https://bugzilla.gnome.org/show_bug.cgi?id=614306
2010-12-31 00:55:19 +00:00
Stefan Kost
246bb32dc5
inputselector: log times in human readable form
2010-12-31 00:54:05 +00:00
Stefan Kost
64beb26a56
inputselector: move reoccuring logs to LOG and remove a double info
...
Less debug spew in DEBUG category. No need to log pad again if we use
GST_LOG_OBJECT(pad,...).
2010-12-31 00:54:05 +00:00
Stefan Kost
d86c6f1956
various (gst): add missing G_PARAM_STATIC_STRINGS flags
...
Canonicalize property names as needed.
2010-12-31 00:54:05 +00:00
Stefan Kost
04c4e4fb9e
inputselector: sync with copy in -base
...
Use _get_caps_reffed to avoid copies.
2010-12-31 00:54:05 +00:00
Stefan Kost
0da59d0795
inputselector: use GST_BOILERPLATE macro
2010-12-31 00:54:04 +00:00
Benjamin Otte
0b37d8bf36
gst_element_class_set_details => gst_element_class_set_details_simple
2010-12-31 00:54:04 +00:00
Sebastian Dröge
9d21103d42
Revert "inputselector: Protect g_object_notify() with the object's mutex"
...
This reverts commit 7e067615ff
, it's causing
deadlocks with playbin2.
2010-12-31 00:54:04 +00:00