Commit graph

11491 commits

Author SHA1 Message Date
Stefan Kost
89e574ce0d outputselector: do the pad_alloc for the pad that is pending and have a fallback
We should do the pad_alloc for the pending pad if any, as we will switch to that
pad on next _chain() call. Also do a fallback alloc, if there is no output yet to
not fail state transitions in dynamic pipelines.
2010-12-31 00:53:50 +00:00
Lasse Laukkanen
8d45bdf144 output-selector: serialize setting and actual changing of new active pad 2010-12-31 00:53:49 +00:00
Lasse Laukkanen
03d8251067 output-selector: unref latest buffer also when resending has been disabled 2010-12-31 00:53:49 +00:00
Lasse Laukkanen
c63ecb2b89 output-selector: keep ref to buffer for resending only if explicitly requested 2010-12-31 00:53:49 +00:00
Wim Taymans
bccc960734 inputselector: don't leak pads in iterator 2010-12-31 00:53:49 +00:00
Sebastian Dröge
e40d20c845 inputselector: Notify when the tags property of the selector sinkpads changes
First part of bug #584686.
2010-12-31 00:53:49 +00:00
Stefan Kost
03d458b212 selector: remove not needed instance var (previous commit). 2010-12-31 00:53:49 +00:00
Stefan Kost
8e8adcd4c8 outputselector: implement pad_alloc on active pad. 2010-12-31 00:53:49 +00:00
Jan Schmidt
33ad3b9fad input-selector: Forward segment events for the active pad immediately.
When a segment event is received on the active pad, forward it downstream
immediately instead of deferring it until the next data buffer arrives. This
fixes problems with segment updates never being sent downstream, like those
needed for sparse streams, or for closing previously opened segments.

This fixes playback of DVD menus with a still video frame and an audio track,
for example.

Fixes: #577843
2010-12-31 00:53:49 +00:00
Wim Taymans
5a63373aa5 outputselector: reset state when going to READY
Reset the last-buffer, the pending pad and the segment when going to the READY
state.
Fixes #576712.
2010-12-31 00:53:49 +00:00
Wim Taymans
983ed52e92 selector: merge the tags
Merge the tags received on the input-selector sinkpads instead of only keeping
the last one we saw.
2010-12-31 00:53:49 +00:00
Stefan Kost
6b4f792065 docs: various doc fixes
No short-desc as we have them in the element details.
Also keep things (Makefile.am and sections.txt) sorted.
Reword ambigous returns. No text after since please.
2010-12-31 00:53:49 +00:00
Sebastian Dröge
ab025f08e7 inputselector: Fix compilation, activate_sinkpad() has no notify parameter 2010-12-31 00:53:49 +00:00
Michael Smith
55637934d1 input-selector: Activate and notify pad before processing events.
Events should trigger pad selection if we don't already have an
explicitly selected pad, so that events prior to first buffer don't get
lost.
2010-12-31 00:53:49 +00:00
Michael Smith
09424e4b3a Unref event if we don't forward it, unref pads when done with them. 2010-12-31 00:53:48 +00:00
Michael Smith
981d08088c plugins/elements/gstinputselector.c: Ensure we emit notify::active-pad when auto-selecting a pad due to it having activit...
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
Ensure we emit notify::active-pad when auto-selecting a pad
due to it having activity and us not having an existing active
pad. Fixes #563147
2010-12-31 00:53:48 +00:00
Edward Hervey
acafa09a74 plugins/elements/gstinputselector.c: Gracefully handle the cases when we dont' have otherpad.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_input_selector_event),
(gst_input_selector_query):
Gracefully handle the cases when we dont' have otherpad.
Fixes #556430
2010-12-31 00:53:47 +00:00
Stefan Kost
832f2f46e7 plugins/elements/gstoutputselector.c: Choose right pad for sending events. Fixes #555244
Original commit message from CVS:
* plugins/elements/gstoutputselector.c:
Choose right pad for sending events. Fixes #555244
2010-12-31 00:53:46 +00:00
Wim Taymans
9020592e1c plugins/elements/gstinputselector.c: Reset the selector state when going to READY.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_reset),
(gst_input_selector_reset), (gst_input_selector_change_state):
Reset the selector state when going to READY.
2010-12-31 00:53:46 +00:00
Wim Taymans
f7dad96f47 plugins/elements/gstinputselector.c: Reuse the get_linked_pads for both source and sinkpads because they are the same.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_input_selector_init),
(gst_input_selector_event), (gst_input_selector_query):
Reuse the get_linked_pads for both source and sinkpads because they are
the same.
Implement a custum event handler and get the internally linked pad
directly instead of relying on the default (slower) implementation.
2010-12-31 00:53:45 +00:00
Wim Taymans
a7cd6eeb61 plugins/elements/gstinputselector.c: Implement the LATENCY query in a better way by taking the latency of all sinkpads an...
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_input_selector_init),
(gst_input_selector_query):
Implement the LATENCY query in a better way by taking the latency of all
sinkpads and taking the min/max instead of just taking a random pad.
2010-12-31 00:53:44 +00:00
Wim Taymans
81a4e467f8 plugins/elements/gstinputselector.c: Move the select-all logic into the activation of the currently selected pad. We want...
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_bufferalloc),
(gst_selector_pad_chain), (gst_input_selector_getcaps),
(gst_input_selector_activate_sinkpad):
Move the select-all logic into the activation of the currently selected
pad. We want to remember the last pad with activity in select-all mode.
Fix the getcaps function, we can produce the union of the upstream caps
in select-all mode, not the intersection like proxy_getcaps() does.
2010-12-31 00:53:43 +00:00
Stefan Kost
dea247966e output-selector: Use BOILERPLATE macro and update test to the latest api changes.
Original commit message from CVS:
* plugins/elements/gstoutputselector.c:
* tests/icles/output-selector-test.c:
Use BOILERPLATE macro and update test to the latest api changes.
2010-12-31 00:53:34 +00:00
Stefan Kost
7408736455 Do not use short_description in section docs for elements. We extract them from element details and there will be war...
Original commit message from CVS:
* ext/dc1394/gstdc1394.c:
* ext/ivorbis/vorbisdec.c:
* ext/jack/gstjackaudiosink.c:
* ext/metadata/gstmetadatademux.c:
* ext/mythtv/gstmythtvsrc.c:
* ext/theora/theoradec.c:
* gst-libs/gst/app/gstappsink.c:
* gst/bayer/gstbayer2rgb.c:
* gst/deinterlace/gstdeinterlace.c:
* gst/rawparse/gstaudioparse.c:
* gst/rawparse/gstvideoparse.c:
* gst/rtpmanager/gstrtpbin.c:
* gst/rtpmanager/gstrtpclient.c:
* gst/rtpmanager/gstrtpjitterbuffer.c:
* gst/rtpmanager/gstrtpptdemux.c:
* gst/rtpmanager/gstrtpsession.c:
* gst/rtpmanager/gstrtpssrcdemux.c:
* plugins/elements/gstinputselector.c:
* plugins/elements/gstoutputselector.c:
* gst/videosignal/gstvideoanalyse.c:
* gst/videosignal/gstvideodetect.c:
* gst/videosignal/gstvideomark.c:
* sys/oss4/oss4-mixer.c:
* sys/oss4/oss4-sink.c:
* sys/oss4/oss4-source.c:
Do not use short_description in section docs for elements. We extract
them from element details and there will be warnings if they differ.
Also fixing up the ChangeLog order.
2010-12-31 00:53:20 +00:00
Wim Taymans
62ba72b862 plugins/elements/gstinputselector.c: Do g_object_notify() only when not holding the lock to get the property because othe...
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
(gst_input_selector_set_active_pad), (gst_input_selector_switch):
Do g_object_notify() only when not holding the lock to get the property
because otherwise we run into a deadlock with the deep-notify handlers
that are possibly installed.
2010-12-31 00:53:19 +00:00
Wim Taymans
a64e95d347 plugins/elements/gstinputselector.c: Release the selector lock when pad alloc happens on a non selected pad.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_class_init),
(gst_selector_pad_event), (gst_selector_pad_bufferalloc),
(gst_selector_pad_chain), (gst_input_selector_set_active_pad):
Release the selector lock when pad alloc happens on a non selected pad.
2010-12-31 00:53:18 +00:00
Wim Taymans
c9de8f457a plugins/elements/gstinputselector.c: Add pad property to configure behaviour of the unselected pad, it can return OK or N...
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_class_init),
(gst_selector_pad_init), (gst_selector_pad_set_property),
(gst_selector_pad_get_property), (gst_selector_pad_event),
(gst_selector_pad_bufferalloc), (gst_selector_pad_chain),
(gst_input_selector_set_active_pad):
Add pad property to configure behaviour of the unselected pad, it can
return OK or NOT_LINKED, based on the use case.
2010-12-31 00:53:17 +00:00
Wim Taymans
a7c7574dcf plugins/elements/gstinputselector.*: Figure out the locking a bit more.
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
(gst_selector_pad_get_running_time), (gst_selector_pad_reset),
(gst_selector_pad_event), (gst_selector_pad_bufferalloc),
(gst_input_selector_wait), (gst_selector_pad_chain),
(gst_input_selector_class_init), (gst_input_selector_init),
(gst_input_selector_dispose), (gst_segment_set_start),
(gst_input_selector_set_active_pad),
(gst_input_selector_set_property),
(gst_input_selector_get_property),
(gst_input_selector_get_linked_pad),
(gst_input_selector_is_active_sinkpad),
(gst_input_selector_activate_sinkpad),
(gst_input_selector_request_new_pad),
(gst_input_selector_release_pad),
(gst_input_selector_change_state), (gst_input_selector_block),
(gst_input_selector_switch):
* plugins/elements/gstinputselector.h:
Figure out the locking a bit more.
Mark buffers with discont after switching.
Fix initial segment forwarding, make sure to only forward one segment
regardless of what the sequence of buffers/segments is. See #522203.
Improve flushing when blocked.
Return NOT_LINKED when a stream is not selected.
Not API change for the switch signal in the docs.
Fix start/time/accum values of the new segment.
Correctly unlock and flush a blocking selector when going to READY.
2010-12-31 00:53:16 +00:00
Wim Taymans
6e03b710e8 plugins/elements/gstinputselector.c: Add lots of debugging.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_event),
(gst_selector_pad_bufferalloc), (gst_selector_pad_chain),
(gst_input_selector_class_init),
(gst_input_selector_set_active_pad),
(gst_input_selector_set_property),
(gst_input_selector_push_pending_stop):
Add lots of debugging.
Fix time member in the newsegment event.
2010-12-31 00:53:15 +00:00
Wim Taymans
3fcc406815 plugins/elements/gstinputselector.*: Various cleanups.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_class_init),
(gst_selector_pad_finalize), (gst_selector_pad_get_property),
(gst_selector_pad_event), (gst_input_selector_class_init),
(gst_input_selector_init), (gst_input_selector_set_active_pad),
(gst_input_selector_set_property),
(gst_input_selector_get_property),
(gst_input_selector_request_new_pad),
(gst_input_selector_release_pad),
(gst_input_selector_push_pending_stop),
(gst_input_selector_switch):
* plugins/elements/gstinputselector.h:
Various cleanups.
Added tags to the pads.
Select active pad based on the pad object instead of its name.
Fix refcount in set_active_pad.
Add property to get the number of pads.
* plugins/elements/gstoutputselector.c:
(gst_output_selector_class_init),
(gst_output_selector_set_property),
(gst_output_selector_get_property):
Various cleanups.
Select the active pad based on the pad object instead of its name.
Fix locking when setting the active pad.
* plugins/elements/gstselector-marshal.list:
* tests/check/elements/selector.c: (cleanup_pad),
(selector_set_active_pad), (run_input_selector_buffer_count):
Fixes for pad instead of padname for pad selection.
2010-12-31 00:53:14 +00:00
Stefan Kost
eaff78cc08 plugins/elements/gstoutputselector.c: Fix changing to same pad twice before a chain call.
Original commit message from CVS:
* plugins/elements/gstoutputselector.c:
Fix changing to same pad twice before a chain call.
2010-12-31 00:53:10 +00:00
Stefan Kost
7b742d1cf4 plugins/elements/gstinputselector.*: Added "select-all" property to make it work like aggregator in 0.8.
Original commit message from CVS:
* plugins/elements/gstinputselector.c:
* plugins/elements/gstinputselector.h:
Added "select-all" property to make it work like aggregator in 0.8.
* plugins/elements/gstoutputselector.c:
Fix resend-latest behavoiur.
* tests/check/Makefile.am:
* tests/check/elements/.cvsignore:
* tests/check/elements/selector.c:
Add unit tests for selector.
2010-12-31 00:52:48 +00:00
Stefan Kost
dec9d95edb gst/multifile/gstmultifilesink.c: Add a fixme comment.
Original commit message from CVS:
* gst/multifile/gstmultifilesink.c:
Add a fixme comment.
* plugins/elements/gstoutputselector.c:
Fix same leak as in input-selector.
* tests/icles/output-selector-test.c:
Improve the test.
2010-12-31 00:51:13 +00:00
Wim Taymans
2495420116 plugins/elements/gstinputselector.c: Don't leak event on pads that are not linked. Fixes #512826.
Original commit message from CVS:
* plugins/elements/gstinputselector.c: (gst_selector_pad_event):
Don't leak event on pads that are not linked. Fixes #512826.
2010-12-31 00:51:12 +00:00
Stefan Kost
c9f97beda7 Replace the switch plugin with the selector plugin. Add output- selector as the opposite of input-selectoo (was switc...
Original commit message from CVS:
* configure.ac:
* docs/plugins/Makefile.am:
* docs/plugins/gst-plugins-bad-plugins-docs.sgml:
* docs/plugins/gst-plugins-bad-plugins-sections.txt:
* docs/plugins/gst-plugins-bad-plugins.args:
* docs/plugins/gst-plugins-bad-plugins.hierarchy:
* docs/plugins/gst-plugins-bad-plugins.interfaces:
* docs/plugins/gst-plugins-bad-plugins.signals:
* docs/plugins/inspect/plugin-metadata.xml:
* docs/plugins/inspect/plugin-selector.xml:
* docs/plugins/inspect/plugin-soundtouch.xml:
* docs/plugins/inspect/plugin-switch.xml:
* plugins/elements/.cvsignore:
* plugins/elements/Makefile.am:
* plugins/elements/gstinputselector.c:
* plugins/elements/gstinputselector.h:
* plugins/elements/gstoutputselector.c:
* plugins/elements/gstoutputselector.h:
* plugins/elements/gstselector-marshal.list:
* plugins/elements/gstselector.c:
* plugins/elements/selector.vcproj:
* gst/switch/.cvsignore:
* gst/switch/Makefile.am:
* gst/switch/gstswitch-marshal.list:
* gst/switch/gstswitch.c:
* gst/switch/gstswitch.h:
* gst/switch/switch.vcproj:
* tests/icles/.cvsignore:
* tests/icles/Makefile.am:
* tests/icles/output-selector-test.c:
Replace the switch plugin with the selector plugin. Add output-
selector as the opposite of input-selectoo (was switch). Add a test
for output-selector. Add docs for the elements. The vcproj needs
update. Fixes #500142.
2010-12-31 00:51:12 +00:00
Tim-Philipp Müller
77aca24d0f docs: add valve element to documentation 2010-12-31 00:51:12 +00:00
Tim-Philipp Müller
9c34e289b8 valve: some minor clean-ups 2010-12-31 00:51:12 +00:00
Tim-Philipp Müller
ec6336f1a9 valve: fix typo in property description
And rephrase while at it, to make it more concise.
2010-12-31 00:51:12 +00:00
Tim-Philipp Müller
736daba993 tests: enable valve unit test 2010-12-31 00:51:12 +00:00
Tim-Philipp Müller
8bdcb84abd elements: add new valve element to build
Moved from gst-plugins-bad

https://bugzilla.gnome.org/show_bug.cgi?id=630808
2010-12-31 00:51:12 +00:00
Tim-Philipp Müller
ad628d0bc5 tests: fix valve unit test
gst_buffer_pad_alloc() needs simple caps or NULL caps,
ANY caps are not allowed.
2010-12-31 00:51:12 +00:00
Stefan Kost
ecc9106b9b valve: no need to ref the object in _chain
Don't ref the pad in chain, like elsewhere
2010-12-31 00:51:12 +00:00
Olivier Crête
284b9f0e84 tests: Fix caps leak in the valve test 2010-12-31 00:51:12 +00:00
Olivier Crête
17e0b91890 valve: Add unit tests
Add a unit test for the valve element.
2010-12-31 00:51:12 +00:00
Olivier Crête
11eb6ef836 valve: Make the drop variable into an atomic.
Using an atomic allows us to avoid locking the whole object all time time.
As suggested by Stefan Kost.
2010-12-31 00:51:11 +00:00
Olivier Crête
473be88d5d valve: Correctly set the DISCONT flag after dropping buffers 2010-12-31 00:51:11 +00:00
Olivier Crête
37e02eb7c7 valve: Remove superflous checking casts 2010-12-31 00:51:11 +00:00
Olivier Crête
80a766b39b valve: Fix style, improve comments
Minor improvements to the comments and break a few overly long lines
2010-12-31 00:51:11 +00:00
Stefan Kost
f90bddfa39 valve: move default: parst in the switch statement to the end
Now sure if it matters, but the previous form looks weired.
2010-12-31 00:51:11 +00:00
Stefan Kost
65f13f70f6 valve: move debug-category registration to type init 2010-12-31 00:51:11 +00:00