Sebastian Dröge
d6dd987ffb
playbin2: Aggregate the stream-changed message by looking at the seqnum
...
Just counting how many messages were sent and how many were received
is not good enough because they might've been duplicated (e.g. by the
visualization audio tee). Comparing the sequence numbers should give
better results in that case.
2009-11-19 12:12:57 +01:00
Sebastian Dröge
ea40d8e36a
playbin2: Ignore async state changes of the uridecodebins
...
Otherwise the async state change from READY->PAUSED of the
uridecodebins will take playbin2 from PLAYING->PAUSED again
during gapless group switches.
Fixes bug #602000 .
2009-11-19 12:12:57 +01:00
Thiago Santos
e3e7ba0d1a
decodebin2: set to buffer less on no-more-pads
...
When a decodebin2 receives no-more-pads of a group it
can set that group's multiqueue buffering thresholds to
'playing' buffering method, avoiding that it buffers
too long and cause problems when using with queue2.
See the associated bug for details.
Fixes #600787
2009-11-18 15:16:18 -03:00
Sebastian Dröge
af34d2c1f8
playbin2: Don't handle DURATION queries during group switches
...
During a group switch return the cached duration of the old group
because the old group still didn't finish playback. If we have no
cached duration return FALSE.
Fixes bug #585969 .
2009-11-18 16:40:32 +01:00
Sebastian Dröge
7e674d8605
playbin2: Post a stream-changed message after activating a group
...
This is useful to detect when playbin2 has really switched to the next
group after about-to-finish for example.
Fixes bug #584987 .
2009-11-18 16:40:32 +01:00
Wim Taymans
c4d7dbce1a
playsink: make sure we always go to PAUSED async
...
Set the need_async_start flag before going to PAUSED so that we always post the
ASYNC_START message, even after reusing playsink.
2009-11-17 16:39:09 +01:00
Wim Taymans
65773b58dd
playsink: make sure we remain a sink
...
When we remove our elements, we could lose our sink flag. Make sure we remain a
sink by setting the flag again after removing elements.
2009-11-17 16:37:57 +01:00
Sebastian Dröge
3b4fd71270
playbin2: Make subtitle error handling more robust and ignore late errors too
...
Make sure, to only "simulate" subtitle no-more-pads if it was still
pending and also handle errors in the subtitle pipeline as warnings
after the subtitles prerolled.
Don't set the suburidecodebin to READY after errors, handle_message
will usually be called from the streaming thread and doing that
from there is obviously not a good idea.
2009-11-14 14:08:40 +01:00
Sebastian Dröge
cdc5fc2c66
subtitleoverlay: Handle errors from subtitle elements as warning and go into passthrough mode
2009-11-14 14:08:40 +01:00
Sebastian Dröge
16dec615cb
playbin2: Don't leak the GError and debug string when parsing error messages
2009-11-14 14:08:40 +01:00
Sebastian Dröge
18f5fad785
playbin2: Improve subtitle passthrough in uridecodebin
...
Now the caps property isn't set anymore for the subtitle caps
but instead in the autoplug-continue signal it is detected
if the caps belong to a supported subtitle stream.
This makes automatic use of newly installed plugins.
2009-11-12 13:20:42 +01:00
Sebastian Dröge
7827660dcd
subtitleoverlay: Only recreate factory caps if necessary and cache them
2009-11-12 13:20:42 +01:00
Sebastian Dröge
068aecc389
subtitleoverlay: Only update the factory list when the registry has changed
...
Also don't free the list every time we go to NULL.
2009-11-12 13:20:42 +01:00
Sebastian Dröge
6980503927
subtitleoverlay: Use gst_pad_get_caps_reffed()
2009-11-12 13:20:41 +01:00
Sebastian Dröge
b02d9837f7
playbin2/playsink: Use new "silent" property instead of unlinking
...
This makes sure that subtitleoverlay still gets segment updates and
everything to pass on downstream. Without this segment problems happen.
2009-11-12 13:20:41 +01:00
Sebastian Dröge
af3d16dbb1
subtitleoverlay: Update segments after pushing the events downstream
...
This makes sure that we don't apply segments twice downstream. Also
always send our newsegment events downstream.
2009-11-12 13:20:41 +01:00
Sebastian Dröge
e869b57296
subtitleoverlay: Add silent property to disable subtitles
...
This tries to disable subtitles in the overlay or renderer
and if that's not possible it goes into passthrough mode.
2009-11-12 13:20:41 +01:00
Sebastian Dröge
eb2d207811
subtitleoverlay: Set the video framerate on parsers if possible
...
Fixes bug #599649 .
2009-11-12 13:20:41 +01:00
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