Commit graph

539 commits

Author SHA1 Message Date
Wim Taymans
0b372dd371 playbin2: unify custom sink get/set functions
Use one function to set/get all of the different sink types.
cleanup up the subpicture chain too.
Allow setting a custom subpicture sink.
2009-05-12 10:36:25 +02:00
Wim Taymans
691a52975e playbin2: fix resume after pause
Don't ignore the state change of the children, they might be doing an ASYNC
state change.
2009-05-08 13:11:01 +02:00
Wim Taymans
52da312fa5 playsink: initialize variable too 2009-05-07 15:19:05 +02:00
Wim Taymans
c05541c195 playbin2: make playsink go ASYNC to PAUSED
Make playsink go async to the PAUSED state instead of relying on uridecodebin
for async behaviour in playbin. This solves some problems (mainly with DVD)
where the pipeline would go to PLAYING before preroll completed, failing to
select the audiosink clock.
Fixes #581727
2009-05-07 14:28:30 +02:00
Edward Hervey
71a372c847 decodebin2: Don't reduce max-size-time of exposed groups. Fixes #579912
The 2s limit is way too small for a lot of files (which have an interleave
in time of between 3 and 5s). Instead, leave it to the initial 5s value
and reduce the other limits (allowing us to stay memory-efficient).
2009-04-23 11:54:55 +02:00
Wim Taymans
8f8b638d31 playbin: only use raw_decoding_mode when it's true
First check the pad caps if they are raw before setting the raw_decoding_mode to
TRUE. Fixes playback of transport streams and other streams that require large
queues.
Fixes #579734
2009-04-21 20:57:34 +02:00
Wim Taymans
5eed96dc06 playbin2: clear the target
Clear the target of our ghostpads before we remove the pad from the element.
This to make sure that the internal pad is not left linked to whatever pad we
were ghosted to. This should only be a problem when we leak the ghostpads.

Also release our subpicture pads.

Fixes #577288.
2009-04-14 13:55:52 +02:00
Wim Taymans
4265511b70 decodebin2: fix up the debugs and warnings
Use _OBJECT variants because we can. Go over some log statements and put them in
the right category.
Fixes #567740.
2009-04-14 11:34:49 +02:00
Wim Taymans
1a557e60ea playbin2: fix refcounting of visualisations
See #577794.
2009-04-10 13:42:56 +02:00
Wim Taymans
33ef15fad6 playsink: fix refcounting of custom elements
Sink the custom sinks, let other elements we create be sunken by the bin we add
them to.
Fixes #577794.
2009-04-10 13:27:41 +02:00
Wim Taymans
f25e4e4743 playbin2: handle missing input-selector
Gracefully degrade and disable stream selection when input-selector is
missing.
2009-04-10 12:26:16 +02:00
Stefan Kost
509256dce5 playbin2: better error message on sink failure
If we could create the sinks, but the don't work, don't send the missing plugin
message and report that the state-changed failed.
2009-04-08 16:43:27 +03:00
Michael Smith
a0959afb01 playbin2: don't leak selector when getting current stream numbers. 2009-04-03 10:51:42 -07:00
Jan Schmidt
c2a56e3115 playbin: Add simple 'raw decoding mode'.
Raw decoding mode removes almost all buffering in video and audio queues
when a source providing already decoded video/audio is detected, on the
possibly bogus assumption that such a source should provide sufficient
internal queueing. Fixes playback on some DVDs, and improves it
on all.
2009-04-02 12:18:08 +01:00
Tim-Philipp Müller
ce51cad163 docs: add a blurb about redirect messages to playbin2 docs 2009-04-01 15:36:37 +01:00
Wim Taymans
5ec2d48f0a decodebin2: do some more cleanup
Free the groups when we go to READY.
Allow for NO_PREROLL elements.
2009-03-25 19:01:45 +01:00
Wim Taymans
9bf8277d13 playbin2: add more support for subpictures 2009-03-24 18:29:28 +01:00
Wim Taymans
e7b382c6a9 playbin2: first support for subpictures
Add beginnings of subpicture support.
2009-03-24 17:12:53 +01:00
Wim Taymans
786b0c248c playbin2: blacklist subpictures for now
Blacklist the subpictures until we add support for them.
Add some small debug info.
See #576408.
2009-03-24 12:23:24 +01:00
Wim Taymans
852ace9cce uridecodebin: expose more media types
Expose more media types from a raw source, such as the subpicture and various
text pads.
Small cleanups  and add some more debugging.
See #576408.
2009-03-24 12:19:30 +01:00
Wim Taymans
7cf4e3eb15 playbin2: rescan audio sinks for volume/mute
Rescan the audio sinks for the mute and volume properties.
fixes #576180.
2009-03-24 10:42:04 +01:00
Wim Taymans
14be3f41e2 playbin2: fix reuse of the video chains
When reusing playbin with visualisations, reset the async property on the video
sink because some sinks might dynamically recreate their sinks.
Fixes #576188
2009-03-23 19:40:18 +01:00
Wim Taymans
7628319688 playbin2: allow dynamic swtiching of subtitles
When we have the textpad configured, enable and disable the subtitles by setting
the silent flag on the overlay element instead of trying to remove elements.
See #576187
2009-03-23 17:38:46 +01:00
Wim Taymans
d8003bea06 playbin2: fix dynamic switching of visualisations
Fix the switching of visualisations by requesting and releasing the tee request
pads on demand.
See #576187.
2009-03-23 16:06:43 +01:00
Wim Taymans
7cc84f9205 playbin2: fix linking order
Link after doing the state change and unlink before shutting down. Makes the
window for causing races in toggling the visualisations smaller.
See #576187.
2009-03-23 15:27:27 +01:00
Wim Taymans
779d6f886d uridecodebin: reset counter
reset the number of pending dynamic operations back to 0 when we reuse
uridecodebin.
Fixes #576190
2009-03-23 12:28:18 +01:00
Wim Taymans
554b3aafe4 decodebin2: a pad starts out being not drained.
Mark a new pad as not drained until we get EOS on it.
2009-03-20 15:47:47 +01:00
LRN
23e603f054 win32: fix seeking in large files
Fix Seeking in large files by using the 64-bit seek functions.
Fixes #576019
2009-03-20 14:17:19 +01:00
Wim Taymans
600a810236 decodebin2: recover from failing to add a pad
When we cannot add a pad to the decodebin2 for some reason, print a warning but
continue adding the remaining pads.
2009-03-19 20:31:01 +01:00
Wim Taymans
20468a22c9 decodebin2: more cleanups and docs.
Add some more comments and use g_list_prepend().
2009-03-19 19:35:15 +01:00
Wim Taymans
17e7948325 decodebin2: refactoring and race fixes
Refactor some code so that we can take the right locks and in the right order.
Fixes quite a bit of races already.
2009-03-19 19:19:38 +01:00
Wim Taymans
2f39597919 playbin2: remove the group cond + cleanups
Remove the group GCond that we used for waiting for groups to finish because we
use pad blocking on the selectors and counters instead for waiting for the
groups to complete.

remove the obsolete about_to_finish variable set while emiting the
about-to-finish signal and fix some old comments.

We don't need to take the playbin lock when querying the uridecodebin.
2009-03-19 19:03:25 +01:00
Wim Taymans
563db0fdca decodebin2: add extra dynamic ref for demuxers
When we make a group connected to a demuxer, keep an extra dynamic refcount for
the group which is only decremented when no_more_pads or a multiqueue overrun is
detected. This way we avoid a race between exposing the group while more dynamic
refs are added from new pads.

Fixes #575588.
2009-03-17 19:09:02 +01:00
Wim Taymans
da6a544bdf playbin2: sync state of the sink correctly
Sync the state of the newly added chains to the state of the parent sink element
to avoid lost async-start messages. Fixes cdda:// async-done message storm.
2009-03-17 15:39:23 +01:00
Wim Taymans
a8579ffea0 playbin2: return NOT_LINKED for unselected streams
When streams are not selected in the selector, return NOT_LINKED so that
upstream elements can skip decoding. Only do this for audio and video pads
because for text streams the overhead is smaller and they could come from
external files.
2009-03-17 11:54:40 +01:00
Wim Taymans
5021c930ba playbin: set custom text sink properties
Set the custom sink async=FALSE to not make it participate in preroll because we
are dealing with sparse streams.
Try to set sync=TRUE on the custom text sink.
2009-03-17 11:51:58 +01:00
Wim Taymans
48f7f6b7c2 playbin2: don't try to set invalid stream numbers
Fix a problem with setting the stream numbers because we check for the wrong
range.
See #575239.
2009-03-16 16:42:18 +01:00
Wim Taymans
ba6d3b5aca playbin2: release the shutdown lock
Release the shutdown lock when we wait for other groups to complete or else we
have a deadlock when the other group completes and tries to grab the shutdown
lock.
Fixes #575550.
2009-03-16 16:16:30 +01:00
Wim Taymans
777f8ab1bf playbin2: fix raw elements like cdda://
Fix a fixme with a one liner and make cd playback work again.
2009-03-12 18:27:25 +01:00
Wim Taymans
7849db42b8 playbin2: improve subtitle handling
Add property to playbin2 to configure a custom sink that receives the raw
subtitle buffers instead of using a textoverlay.
Improve the property finding code to make it more usable.
Use property find code to find async properties in custom sinks that are bins.
Improve text overlay code to gracefully handle missing elements.
2009-03-12 17:51:39 +01:00
Wim Taymans
72533ecccc decodebin2: only remove pads that were added
Flag pads that were added so that we can see if we need to remove them later or
not.
2009-03-09 15:46:21 +01:00
Mark Nauwelaerts
b7ea2a9105 Unblock blocked ghostpads when shutting down. Fixes #574293. 2009-03-09 13:32:21 +01:00
Michael Smith
e9e9d82fbe decodebin2: don't stay connected to notify::caps after negotiation
Disconnect the notify::caps signal in our callback (it'll be re-added
if we're not, in fact, finished getting complete caps). Ensures that
caps changes mid-stream (e.g. from an mp3 that changes from
stereo->mono mid-file) don't cause us to try to add a new pad.
2009-03-05 15:44:17 -08:00
Stefan Kost
5e6447c0ac docs: fix random text after since: tag. Also fix class name to make the docs actual appear. 2009-02-26 10:10:00 +02:00
Stefan Kost
a6ea8280a2 docs: playbin2 has no stream-info 2009-02-26 10:09:59 +02:00
Wim Taymans
f5a3387bdb playbin: use flushing pads instead of fakesink
Use the flushing pads on playsink to terminate on shutdown instead of plugging
fakesinks. this should be a little cheaper.
2009-02-25 12:48:53 +01:00
Wim Taymans
747841e97c playsink: Add FLUSHING pad type
Make it possible to request a flushing pad from the playsink. We can eventually
use these flushing pads to quickly terminate the dataflow when we are shutting
down.
2009-02-25 12:48:53 +01:00
Wim Taymans
dbfc80cd6c Release the group lock when setting states
Release the group lock while we perform the state changes on the uridecodebins
because that might trigger callbacks that we need to handle with the group lock
taken. Avoids a possible deadly embrace in some id3/flac files.
Fixes #567396.
2009-02-25 10:08:29 +01:00
Wim Taymans
0b2238b70b Combine finding and creating groups
Combine the search for the current group and optionally creating one into one
function so that we can avoid taking the lock multiple times.
2009-02-25 10:05:38 +01:00
Edward Hervey
2968cc8710 Playbin2: Don't leave unused parameters in debug statements.
Fixes build on macosx
2009-02-25 08:22:00 +01:00