Sebastian Dröge
c5d26b23c7
playbin2: Handle external subtitles better
...
First of all, make sure that suburidecodebin never
errors out because of not-linked in case external subtitles
are used but then subtitles are disabled.
And then make sure that external subtitles always start from
the correct position and are not racing until EOS if they
get unselected and selected again.
2009-11-12 13:20:41 +01:00
Sebastian Dröge
16073d1eb7
playbin2: Flush the subtitles before switching to a new subtitle stream
...
This makes sure that all currently shown subtitles disappear
and new ones can be shown as soon as possible.
2009-11-12 13:20:40 +01:00
Sebastian Dröge
e91458f13c
playbin2: Set subtitle caps as raw caps for the uridecodebins
...
This will make sure that no subparse is ever plugged and subtitleoverlay,
that subpicture streams are handled the same was as subtitles and that
subtitle renderers are used if available.
Fixes bugs #595123 , #570753 , #591662 , #591706 .
2009-11-12 13:20:40 +01:00
Sebastian Dröge
ced1b8f897
playbin2/playsink: Remove everything related to subpicture streams
...
These will soon be handled the same way as subtitle streams.
2009-11-12 13:20:40 +01:00
Sebastian Dröge
dcc109bd9a
playsink: Add a queue before subtitleoverlay
...
This will improve playback, and the same thing is done
for subpicture streams too.
2009-11-12 13:20:40 +01:00
Sebastian Dröge
c0828e55b6
playsink: Use subtitleoverlay for subtitles
2009-11-12 13:20:40 +01:00
Sebastian Dröge
92ccb87850
subtitleoverlay: Add new element for generic subtitle overlaying
...
This autopluggs the required elements for parsing and rendering
different subtitle formats on a video stream.
Fixes bug #600370 .
2009-11-12 13:20:40 +01:00
Sebastian Dröge
1da5a3f7d3
playback: Update factories list on every access if the registry has changed
...
This makes application's simpler because the element doesn't need to
go to NULL first to make use of newly installed plugins.
Fixes bug #601480 .
2009-11-11 14:00:26 +01:00
Sebastian Dröge
ab96265c57
playback: When going from NULL->READY check if the registry has new features
...
This makes it possible to use newly installed plugins after going back
to NULL instead of requiring a new instance.
Fixes bug #599266 .
2009-11-10 18:30:46 +01:00
Tim-Philipp Müller
23f92ed8cd
playsink: assign chain->mute before using it
...
Fixes GObject warnings when starting totem.
2009-11-10 01:06:17 +00:00
Edward Hervey
e34abf228d
playback: Fix the order in strcmp that I broke in previous commit.
2009-11-09 19:58:20 +01:00
Edward Hervey
b9053c5ae8
playback: Avoid expensive API calls in tight loop.
...
We know we're dealing with GstPluginFeature.
2009-11-09 19:18:07 +01:00
Sebastian Dröge
dfd51aa82a
inputselector: Remove useless variables and fix a uninitialized variable compiler warnings
2009-11-08 11:27:57 +01:00
Sebastian Dröge
6c15d9e8d4
decodebin2: Add property to disable/enable posting of stream-topology messages
...
Most people don't need this messages and generating them is quite
expensive.
2009-11-06 17:01:04 +01:00
Sebastian Dröge
5798b543df
decodebin2: Protect subtitle elements and subtitle encoding by a new mutex
...
Using the object lock here can and will lead to deadlocks because
of deep-notifies of property changes: the deep-notify handler will
get the parent of objects, which will take the object lock again.
Fixes bug #600479 .
2009-11-06 15:15:06 +01:00
Sebastian Dröge
f365385458
inputselector: Make sure that running_time->timestamp calculation never becomes negative
2009-11-06 13:14:14 +01:00
Sebastian Dröge
97519751ad
uridecodebin: Improve all-raw-caps detection for pads
2009-11-06 12:37:03 +01:00
Sebastian Dröge
27034be461
inputselector: Use the start time (i.e. timestamp) as the last stop
...
Using the end time makes it impossible to replace buffers, which is
a big problem for subtitles that could have very long durations.
2009-11-06 12:11:21 +01:00
Wim Taymans
8b93746b78
inputselector: use _get_caps_reffed()
2009-11-05 13:12:19 +01:00
Stefan Kost
a78c8bf3ed
pad: rename new api from _refed to _reffed.
...
Due to popular demand rename the new api as we still can.
2009-11-05 13:00:27 +02:00
Wim Taymans
fcb283b78b
playbin2: avoid copying caps
...
Use get_caps_refed() when we can.
2009-11-04 18:57:07 +01:00
Wim Taymans
89f02fb269
decodebin2: use new getcaps function to avoid copies
...
Use the gst_pad_get_caps_refed() to avoid some caps copy functions.
2009-11-04 18:31:09 +01:00
Wim Taymans
eb92aa282f
uridecodebin: use faster element_link_pads
...
Use the faster gst_element_link_pads because we know for sure the sinkpad name
and we don't need to have the function search for a suitable pad anymore.
2009-11-04 17:50:11 +01:00
Sebastian Dröge
0672457604
playbin2: Return NOT_LINKED for unselected text pads from a demuxer
...
We want to return NOT_LINKED for unselected pads but only for pads
from the normal uridecodebin. This makes sure that subtitle streams
are not raced past audio/video from decodebin2's multiqueue.
For pads from suburidecodebin OK should always be returned, otherwise
it will most likely stop with an error.
2009-11-04 10:53:27 +01:00
Stefan Kost
f71ed36694
inputselector: also add inline to the proto to fix the build
...
Merged from gst-plugins-bad, e1e9be6dbe
.
2009-11-04 08:20:59 +01:00
Sebastian Dröge
dd55311f3b
uridecodebin: Initialize caps property with the default raw caps
2009-11-03 13:03:26 +01:00
Sebastian Dröge
0285d77d96
decodebin2: Use static caps for the default raw caps and put them into a separate header
...
This way we can use the same default raw caps everywhere.
2009-11-03 13:03:23 +01:00
Josep Torra Valles
e9d1819fe3
playbin: Make sure to keep a reference on the volume element
...
Fixes null pointer dereferences under certain circumstances.
Fixes bug #595401 .
2009-11-02 07:30:54 +01:00
Sebastian Dröge
e72c3029c0
playsink: Reset {mute,volume}-changed flags after setting the volume
...
These flags are there to make sure that the volume is set, if there
is no volume element yet.
2009-10-30 09:24:30 +01:00
Sebastian Dröge
598c937634
playsink: If notify::{volume,mute} is triggered by the volume element, update our internal state
2009-10-30 09:24:03 +01:00
Sebastian Dröge
d85dadc122
playsink: Proxy notify::volume and notify::mute from the volume/mute elements (or sinks)
...
Fixes bug #600027 .
2009-10-29 14:30:31 +01:00
Sebastian Dröge
de1db5ccbd
playbin2: Proxy notify::volume and notify::mute from the playsink to playbin2
2009-10-29 14:19:09 +01:00
Sebastian Dröge
75d36a0b1e
queue2: Remove from gst-plugins-base
...
This is now in coreplugins.
2009-10-29 11:29:46 +01:00
Tim-Philipp Müller
6f4c1ac583
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 sixteenth of a polar bear.
2009-10-28 00:59:35 +00:00
Wim Taymans
7065c7a02d
queue2: add custom acceptcaps function
2009-10-27 15:23:00 +01:00
Wim Taymans
0b00e25b54
decodebin2: implement low/high watermark property
2009-10-27 15:22:22 +01:00
Wim Taymans
7ab778199e
uridecodebin: don't use 2 buffering elements
...
Only use the multiqueue buffering when we don't have a stream (and thus are
using queue2 to do the buffering already).
2009-10-24 16:10:00 -04:00
Wim Taymans
660fc111d1
playbin2: add flag to enable decodebin buffering
...
Add a flag that enables buffering in decodebin.
2009-10-24 16:10:00 -04:00
Wim Taymans
f998858192
decodebin2: buffering is implemented now
2009-10-24 16:09:59 -04:00
Wim Taymans
26290f44d6
uridecodebin: buffering is implemented now
2009-10-24 16:09:59 -04:00
Wim Taymans
3d2b3dd268
decodebin2: configure use-buffering on multiqueue
2009-10-24 16:09:59 -04:00
Wim Taymans
d5add83976
uridecodebin: use 0 for max buffer size
2009-10-24 16:09:59 -04:00
Wim Taymans
1fa7f049f1
uridecodebin: set some reasonable defaults
2009-10-24 16:09:59 -04:00
Wim Taymans
3883fac8d8
uridecodebin: set buffering properties on decodebin2
...
Propagate the buffering properties on decodebin2 but only if we are not already
doing download buffering.
2009-10-24 16:09:59 -04:00
Wim Taymans
adba87539f
uridecodebin: add use-buffering property
...
Add a use-buffering property that will perform buffering on the parsed or
demuxed media.
2009-10-24 16:07:36 -04:00
Wim Taymans
baecd335b2
decodebin2: refactor queue size configuration.
...
Refactor the queue size configuration into a new method.
Use the same queue values for buffering as for preroll.
2009-10-24 16:07:36 -04:00
Wim Taymans
cffe4d7bd3
decodebin2: move error path down
2009-10-24 16:07:36 -04:00
Wim Taymans
1c982d0dbe
decodebin2: implement max queue size properties
2009-10-24 16:07:36 -04:00
Wim Taymans
3fffb0e2dd
decodebin2: add properties for buffering
...
Add properties that can be used to configure the multiqueue buffers and
buffering methods
2009-10-24 16:07:36 -04:00
Sebastian Dröge
4de2ab48ea
playbin2: Don't destroy the suburidecodebin on errors
...
It can still be reused
2009-10-24 13:08:07 +02:00
Sebastian Dröge
497d0a4793
playbin2: If setting the state of the suburidecodebin fails just warn, don't error out
2009-10-24 13:07:45 +02:00
Sebastian Dröge
cd5475aa6f
playbin2: Don't set uridecodebin states to NULL before reusing them
...
This makes sure that the internal decodebin2 and everything else can
be reused without reinstantiation.
2009-10-24 12:54:11 +02:00
Edward Hervey
80b37c614a
uridecodebin: Store unused decodebin2 instances for further usage.
...
This allows faster re-use of uridecodebin.
https://bugzilla.gnome.org/show_bug.cgi?id=599471
2009-10-24 11:48:33 +02:00
Wim Taymans
bdfb4b46d7
inputselector: set output caps before pushing
...
Set the output caps on the srcpad before pushing the buffer because else core
will do a rather expensive check to see if we can actually accept those caps on
the srcpad.
2009-10-21 16:24:29 -04:00
Wim Taymans
5b72f2adf9
inputselector: install an acceptcaps function
...
Install a custom acceptcaps function instead of using the default expensive
check. We accept whatever downstream accepts so we pass along the acceptcaps
call to the downstream peer.
2009-10-21 15:58:11 -04:00
Wim Taymans
c489fb01ca
decodebin2: avoid type checks
2009-10-20 17:14:40 -04:00
Edward Hervey
891c54f6f8
gst/decodebin2: Ensure we get fixed caps for topology message
...
There are some corner cases (like with dvdemux amongst others) where
the caps won't be negotiated, but the pad has fixed caps.
2009-10-20 10:15:57 +02:00
Edward Hervey
64c8b1d5d9
gst/decodebin2: Don't expose chains if we're shutting down.
...
This avoids adding flushing pads to ourself
2009-10-20 10:15:48 +02:00
Stefan Kost
f1c32d0fbb
build: fix previous commit to fully accomodate the glib-gen.mak changes
...
I also renamed glib_enum_prefix to glib_gen_prefix as we also use that for the
marshallers. Also rename the rtsp-marshal.list to work with the unified prefix.
2009-10-16 10:56:56 +03:00
Stefan Kost
a89c1de0ea
build: use gst-glib-gen.mak to fix the glib build rules. Fixes #598114
...
The build rules in glib-gen.mak were using pattern rules in a non save way.
2009-10-16 10:23:09 +03:00
Sebastian Dröge
efcca84bac
decodebin2: Post a element message on the bus with the stream topology
...
Fixes bug #598533 .
2009-10-15 13:35:29 +02:00
Sebastian Dröge
50fdbcd9ea
decodebin2: Store the "endcaps" of a chain
...
This are the caps that either resulted in a deadend if
no plugin for them could be found or raw caps.
2009-10-15 13:35:29 +02:00
Sebastian Dröge
366aaae825
decodebin2: Store for every chain, which pad resulted in its creation
2009-10-15 13:35:28 +02:00
Sebastian Dröge
2b3741403e
playbin2: Use gst_object_has_ancestor() instead of our own implementation of it
2009-10-14 08:36:54 +02:00
Sebastian Dröge
a4bc39ef48
playbin2: Don't stop completely on initialization errors from subtitle elements
...
Instead disable the subtitles and play the other parts of the stream.
Fixes bug #587704 .
2009-10-13 16:53:50 +02:00
Sebastian Dröge
d40246ff7d
decodebin2: Ignore no-more-pads from non-demuxer elements
...
instead of printing an error that no corresponding group could
be found. no-more-pads from non-demuxer elements doesn't give
any additional information because there can only be a single srcpad.
Fixes bug #598288 .
2009-10-13 16:52:43 +02:00
Jan Schmidt
592b8ecb09
decodebin2: Fix type-punning warning
2009-10-08 00:17:21 +01:00
Sebastian Dröge
9bd6fe41cb
decodebin2: Chains with an exposed endpad are complete too
...
This allows partial group changes, i.e. demuxer2 in the example below
goes EOS but has a next group and audio2 stays the same.
/-- >demuxer2---->video
demuxer--- \--->audio1
\--->audio2
2009-10-07 17:46:30 +02:00
Sebastian Dröge
bf7cd0ed81
decodebin2: Use the iterate internal links function instead of string magic to get multiqueue srcpads
2009-10-07 17:46:29 +02:00
Sebastian Dröge
674e2309ac
uridecodebin: Don't post missing plugin messages twice
...
decodebin2 already posts them after emitting the unknown-type signal,
there's no need to post another one.
2009-10-07 17:46:29 +02:00
Sebastian Dröge
cf9c6a2271
decodebin2: Rewrite autoplugging and how groups of pads are exposed
...
This now keeps track of everything that is going on, creates
a tree of chains and groups to allow "demuxer after demuxer" scenarios
and allows chained Oggs with multiple streams (needs oggdemux or playbin2 fixes).
Also document everything in detail and give a general overview of what
decodebin2 is doing at the top of the sources.
Fixes bug #596183 , #563828 and #591677 .
2009-10-07 17:46:28 +02:00
Sebastian Dröge
24b7d2500c
factorylist: Use gst_caps_can_intersect() instead of _intersect()
...
This is faster and results in less allocations.
2009-10-07 07:23:20 +02:00
Sebastian Dröge
999483b454
decodebin2: Don't set the external ghostpads blocked but only their targets
...
Pad blocks should never be done on external pads as outside elements
might want to use their own pad blocks on them and this will lead to
conflicts and deadlocks.
2009-10-07 07:23:20 +02:00
Sebastian Dröge
0dcc0857aa
decodebin2: Only use the object lock for protecting the subtitle elements
...
Using the decodebin lock will result in deadlocks if the subtitle encoding
is accessed from a pad-added handler.
2009-10-07 07:23:19 +02:00
Sebastian Dröge
9be848d04f
playbin2: Improve debugging of pad blocks
2009-10-07 07:21:38 +02:00
Sebastian Dröge
a4f454dc24
playbin2/playsink: Use gst_object_ref_sink() instead of calling both separately
2009-10-07 07:21:37 +02:00
Wim Taymans
a8d7e6a490
playsink: make the lock recursive for now
...
Fixes #583255
2009-10-01 09:35:54 +02:00
Wim Taymans
f18ed7abf9
playsink: fix the vis property getter
2009-10-01 09:35:54 +02:00
Edward Hervey
b565a3088c
playsink: Expose mute,volume,vis-plugin and font-desc properties
...
https://bugzilla.gnome.org/show_bug.cgi?id=594623
2009-09-14 12:26:05 +02:00
Edward Hervey
377e781ad5
GstPlaySink: Expose 'reconfigure' as an action signal.
2009-09-14 10:40:00 +02:00
Edward Hervey
bafe9082fd
GstPlaySink: Expose flags as a gobject property.
2009-09-14 10:40:00 +02:00
Edward Hervey
02c50388c4
playback: Register playsink as an element.
...
This allows using playsink from outside the playback plugin.
Add code to be able to request the sink pads using standard GStreamer API.
TODO : expose GObject properties/signals.
2009-09-14 10:39:59 +02:00
Sebastian Dröge
91c3a23963
playbin2: Implement GstStreamVolume interface
2009-09-11 16:37:35 +02:00
Sebastian Dröge
6e23ea172f
interfaces: API: Add GstStreamVolume interface
...
Fixes bug #567660 .
2009-09-11 16:37:34 +02:00
Sebastian Dröge
662a31983f
playbin(2): Document that the volume property uses a linear scale
...
Fixes bug #571610 .
2009-09-10 16:56:14 +02:00
Stefan Kost
7a3797f332
docs: tell a biit more about uri-decodebin and buffering
2009-09-10 10:30:23 +03:00
Wim Taymans
2a5cd16eb1
fix whitespace
2009-09-08 13:02:46 +02:00
Wim Taymans
9e83339cf6
uridecodebin: do buffering for more uris
...
Add ssh://, ftp://, sftp://, myth:// to the list of uris that require
buffering.
Fixes #594020
2009-09-04 11:33:04 +02:00
Sebastian Dröge
2194166e05
decodebin2: Post missing plugin messages before any error messages
2009-08-31 11:10:55 +02:00
Sebastian Dröge
460dc94d23
playbin: The internally linked pad of the selector might be NULL in some cases
2009-08-26 16:56:19 +02:00
Sebastian Dröge
67a0ef9b3a
playbin: Fix iterate internal linked pads functions for the stream selectors
...
This now used the new gst_iterator_new_single() function and as a side effect
fixes bug #592864 .
2009-08-26 16:45:49 +02:00
David Schleef
0e9bc5125a
Remove Ronald Bultje from Authors field
...
Replaced with "GStreamer maintainers
<gstreamer-devel@lists.sourceforge.net>" or just removed,
depending on the number of other authors.
2009-08-24 11:37:01 -07:00
Wim Taymans
c3ebeec5a5
playbin2: fix refcounting of _get_sink()
...
g_value_set_object() increases the refcount of the sink, which is not needed
because the object should already be refcounted. Make sure this is always the
case and use g_value_take_object().
Fixes : #592884
2009-08-24 15:08:36 +02:00
Sebastian Dröge
0c1fa2e8ab
streamselector/inputselector: Use iterate internal links instead of deprecated get internal links
2009-08-19 17:23:21 +02:00
Sebastian Dröge
b7fa34a279
playsink: Also send SEEK events directly to a subpicture sink
2009-08-18 11:15:41 +02:00
Sebastian Dröge
b5f84c0637
playsink: If a custom text sink is used, send events to it too
...
Before, SEEK events would be sent to the video sink, which wouldn't
be linked in any way to the subtitle part of the pipeline and
subparse would never see the SEEK event. This would then seek
the audio/video but the subtitles would continue from the old
position instead.
Fixes bug #591664 .
2009-08-18 08:39:02 +02:00
Sebastian Dröge
6aa731cb48
uridecodebin: Make missing plugins emit a warning message, not an error message
...
The problem with an error message is, that it will stop playback completely
while it could be that only a audio decoder plugin is missing and the video
could be played with the available plugins.
See bug #591677 .
2009-08-18 08:20:28 +02:00
Sebastian Dröge
a6b1e0b645
uridecodebin: Post a correct error message for unknown types
...
Before we had STREAM/WRONG_TYPE but it's really CORE/MISSING_PLUGIN
because a plugin is missing and nothing else is wrong.
Also make it an error instead of a warning.
Really fixes bug #591677 .
2009-08-13 17:42:07 +02:00
Sebastian Dröge
504f8dc9c7
uridecodebin: Post a missing plugin message additional to the error message on unknown types
...
Fixes bug #591677 .
2009-08-13 15:55:25 +02:00
Tim-Philipp Müller
4871cd9254
playbin2: fix error message string
...
Fixes #591577 .
2009-08-13 10:59:35 +01:00