Matthieu Bouron
45dfceacdb
playbin: improve autoplug_query_caps return
...
Makes autoplug_query_caps return
downstream_caps + intersect_first(filter_caps, element_caps)
https://bugzilla.gnome.org/show_bug.cgi?id=724828
2014-02-27 21:23:12 +01:00
Sebastian Dröge
a5918b0ab5
playbin: Keep inputselector around until we release its pads
...
Otherwise there's an interesting race condition when we destroy
the inputselector (actually it will be destroyed later when its state
change message gets destroyed) and afterwards release its sinkpad.
This is the code path when the last channel is removed from the
input selector.
Gave this warning sometimes, for chained oggs or whenever else
we change decode groups:
GStreamer-CRITICAL **: Padname '':sink_0 does not belong to element inputselector0 when removing
2014-02-18 15:06:25 +01:00
Sebastian Dröge
a02678057e
playbin: First try to get the pad's current caps, then query caps
...
The caps query might give us ANY caps while the pad has fixed caps
configured currently.
2014-02-11 16:36:20 +01:00
Sebastian Dröge
57295753d5
playbin: Fix memory leak in autoplugging code
...
We should not leak element factories ideally.
2014-02-10 16:33:50 +01:00
Wonchul Lee
c2746d753e
playbin: Remove unnecessary assignment
...
Remove duplicated assignment
https://bugzilla.gnome.org/show_bug.cgi?id=722491
2014-01-18 13:33:57 +01:00
Sebastian Dröge
4f8f5918be
playbin: Insert decoders without GstAVElement information between the other decoders
...
Otherwise they would be preferred over all decoders independent
of their ranks.
https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-01-18 13:33:57 +01:00
Sebastian Dröge
6b46019abf
playbin: Only put parsers and sinks first, not all non-decoders
...
https://bugzilla.gnome.org/show_bug.cgi?id=722316
2014-01-18 13:33:57 +01:00
Matthieu Bouron
98e0dec715
playback: add ANY caps features to default audio/video raw caps
...
Allows elements using audio/video caps features to be used by playbin.
2013-12-30 11:25:49 +01:00
Tim-Philipp Müller
b1ff48c1a1
docs: remove old 0.10 Since markers
...
They're just confusing.
2013-11-16 16:10:07 +00:00
Thiago Santos
f8d8a56d7b
playbin: make sure elements are in null before disposing
...
If a pipeline fails to preroll, it might happen that the sinks are
put into READY state from playbin's sink activation, but they are never
set to playsink, so they aren't being managed by a GstBin and will keep
their READY state until they are unreffed, leading to a warning.
Prevent this by always forcing them to NULL when deactivating a group
https://bugzilla.gnome.org/show_bug.cgi?id=708789
2013-10-01 17:53:05 -03:00
Sebastian Dröge
cac572ec5d
playbin: Make sure to cache context types we did not store yet
...
https://bugzilla.gnome.org/show_bug.cgi?id=708668
2013-09-24 12:47:26 +02:00
Sebastian Dröge
78b0e16773
playbin: Implement context caching for sinks that are not in playsink yet
2013-09-18 22:39:25 +02:00
Sebastian Dröge
e21d3d214a
playbin: No need to set the GstContext on the sink before activating it
...
This is all handled by the GstBin code now.
2013-09-18 22:39:25 +02:00
Loïc Minier
8492b956cd
playback: fix docs of convert-sample action signal
...
convert-sample returns a GstSample, not a GstBuffer.
https://bugzilla.gnome.org/show_bug.cgi?id=707660
2013-09-07 14:58:46 +01:00
Arnaud Vrac
a8df760c96
playbin: check for tags on the right combiner instance
...
The get-tags actions are not working in all cases, because the track
number is used to resolve the stream combiner instead of the stream
type.
https://bugzilla.gnome.org/show_bug.cgi?id=705369
2013-08-03 17:17:10 +01:00
Sebastian Dröge
f92da706fd
playbin: Ensure that everything in a GstSourceGroup gets the same group-id
...
Including streams from external subtitle files. If not everything implements
the group-ids playbin invents its own.
2013-07-23 12:42:50 +02:00
Sebastian Dröge
432b092247
playbin: Don't prefer decoders for which we found a matching sink
...
It doesn't make much sense.
2013-07-16 12:21:44 +02:00
Sebastian Dröge
4cfda00120
playbin: Also consider possible converters for raw streams when selecting compatible sink/source combinations
...
https://bugzilla.gnome.org/show_bug.cgi?id=704285
2013-07-16 11:22:35 +02:00
Sebastian Dröge
5ee98c146e
playbin: Fix sorting for decoder factories for which we didn't find a compatible sink
...
They might just need some converters for raw audio/video.
https://bugzilla.gnome.org/show_bug.cgi?id=704285
2013-07-16 09:32:31 +02:00
Sebastian Dröge
10c91ea5b5
playbin: Don't print a warning when setting a sink to NULL
...
https://bugzilla.gnome.org/show_bug.cgi?id=704194
2013-07-15 09:10:30 +02:00
Sebastian Dröge
edecd7eec3
playbin: Properly destroy and set to NULL sinks that don't work
2013-07-12 12:05:37 +02:00
Alban Browaeys
f174c450c9
playbin: Fix logic to detect if a stream-change is currently pending
...
Fixes duration reporting in gapless playback between files.
https://bugzilla.gnome.org/show_bug.cgi?id=585969
2013-07-12 09:54:06 +02:00
Sebastian Dröge
9ab6ab4257
playbin: Only give sinks a new bus if they have no parent yet
...
Otherwise we will remove the bus that would proxy messages to playsink
and never set it again. If the sink is already in playsink, all failures
are fatal anyway as it's either a sink that worked before or one that
was set by the user.
https://bugzilla.gnome.org/show_bug.cgi?id=701997
2013-07-10 17:17:05 +02:00
Sebastian Dröge
d7f1d9954f
playbin: Store a/v/t sinks locally too, not just in playsink
2013-07-10 13:22:04 +02:00
Sebastian Dröge
f68b6c2626
playbin: Change sink ownership handling to be a bit more sane
...
playbin will now only activate the sinks in a single place and
will never change the states of any sinks that are owned by
playsink.
Also handle text-sinks the same way as audio/video sinks inside
playbin.
2013-07-09 14:57:05 +02:00
Sebastian Dröge
7c28c180ec
playbin: If we had a previous autoplugged sink, try to reuse it
...
https://bugzilla.gnome.org/show_bug.cgi?id=701997
2013-07-02 14:25:28 +02:00
Sebastian Dröge
841d738f7c
playbin: Don't change the state of sinks that we passed to playsink already
2013-07-02 14:02:57 +02:00
Sebastian Dröge
a0e61534ef
playbin: Improve debug output regarding sink selection
2013-07-02 12:27:03 +02:00
Brendan Long
d3acb2b01a
playbin: Post an error message if a stream combiner doesn't return a request pad.
2013-07-02 09:34:19 +02:00
Sebastian Dröge
f39d1dc3b4
playbin: Only intersect to check if a sink can handle raw caps
...
Doing a subset check requires fixed caps, which we might not have here.
https://bugs.webkit.org/show_bug.cgi?id=116042
2013-07-01 13:46:51 +02:00
Brendan Long
b5f7a621bb
playbin: Emit {audio,text,video}-changed signals when pads are removed
...
https://bugzilla.gnome.org/show_bug.cgi?id=702195
2013-06-14 14:23:11 +02:00
Sebastian Dröge
4465741222
playbin: When activating a fixed sink, proxy error messages too
...
If activating a fixed sink fails, everything will fail later anyway
and we can just error out early.
2013-06-08 23:51:13 +02:00
Sebastian Dröge
44352deadb
playbin: Improve autoplugging of decoder/sink combinations by trying to activate the sink
...
And if that fails don't bother autoplugging that sink. Also gives
us more accurate sink caps.
2013-06-08 23:34:53 +02:00
Sebastian Dröge
ff8839d97b
playbin: Proxy the playbin context to the sinks
2013-06-08 23:22:54 +02:00
Sebastian Dröge
77af24c493
playbin: Proxy sink messages if we activate a sink in playbin already
...
This makes sure the application gets any context related messages and
can do whatever is required to a) get the sink a context or b) share
the context with other elements in the pipeline.
The proxying is necessary because the sink is not a child element of
playbin, but instead will at a later point be a child of some bin
inside playsink.
https://bugzilla.gnome.org/show_bug.cgi?id=700967
2013-06-08 23:22:54 +02:00
Brendan Long
96aab6d8a5
playbin: Don't take an extra reference to the custom stream combiners
...
They are automatically reffed when added to the bin because they're
already not floating anymore.
2013-05-29 20:12:48 +02:00
Sebastian Dröge
0dee7777ff
playbin: Set custom stream-combiners to NULL and unref before finalizing
2013-05-29 10:35:11 +02:00
Brendan Long
53caa99a59
playbin: Rename select to combine and selector to combiner in playbin
2013-05-29 09:53:34 +02:00
Brendan Long
ba5f6cfe72
playbin: Add support for custom stream-combiners
...
This allows to chose something else than input-selector
for multiple audio/video/text streams, e.g. an adder could
be used for audio.
It is needed for example to implement some of the more
advanced HTML5 video features.
https://bugzilla.gnome.org/show_bug.cgi?id=698851
2013-05-29 09:52:32 +02:00
Sebastian Dröge
e482b5b8e6
playbin: In autoplug-queries, add the actual decoder/parser/etc template caps
...
Add the actual decoder/parser/etc caps at the very end to
make sure we don't cause empty caps to be returned, e.g.
if a parser asks us but a decoder is required after it
because no sink can handle the format directly.
2013-05-28 13:23:40 +02:00
Sebastian Dröge
a4ec6fe0b7
playbin: Forward CONTEXT queries to the corresponding sink if we have one
...
https://bugzilla.gnome.org/show_bug.cgi?id=700967
2013-05-28 13:14:15 +02:00
Sebastian Dröge
e5064ee723
playbin: Refactor autoplug-query handling
...
We now only check sinks and factories of the corresponding media
type. It doesn't make sense to pass audio/subtitle caps to a video
decoder.
2013-05-28 13:08:00 +02:00
Sebastian Dröge
9513b770f4
decodebin: Pass the element in the autoplug-query signal too
2013-05-28 12:10:33 +02:00
Sebastian Dröge
db8d53bc17
playbin: Refactor autoplug-query handling a bit
2013-05-28 11:05:21 +02:00
Sebastian Dröge
d802c7395a
playback: Only do a subset filtering for the factories if we have fixed caps
...
Otherwise we're plugging a parser/converter currently and have unfixed caps.
2013-05-15 17:15:18 +02:00
Sebastian Dröge
74a31a02fc
playbin: Fix deadlock caused by lock order inversion
...
First the source group lock, then the elements list lock.
2013-05-15 13:38:32 +02:00
Sebastian Dröge
450a47c0a5
playback: Use subset checks instead of intersection
...
https://bugzilla.gnome.org/show_bug.cgi?id=700272
2013-05-14 10:07:44 +02:00
Sebastian Dröge
b0ec886cb9
playbin2: Chose more balanced metric to compare ranks of decoder/sink combinations
2013-05-09 15:05:21 +02:00
Sebastian Dröge
b23f4e4ab9
playbin: Fix infinite loop in GSequence iteration code
2013-05-08 21:27:17 +02:00
Sebastian Dröge
7ff4f8f4d4
playbin: Use the GSequence more efficiently
...
This makes it possible to take advantage of the O(log n) lookups
of GSequence on the ~1000 element lists and only do iterations
on <10 element lists. Previously the code iterated over ~1000 element
lists multiple times.
2013-05-07 15:23:05 +02:00