Commit graph

941 commits

Author SHA1 Message Date
Wim Taymans
13f6829497 playbin2: improve screenshot code
Use appsrc and appsink in the screenshot code to make things nicer.
2010-06-05 12:27:12 +02:00
Wim Taymans
31ef191f01 playsink: add convert-frame action signal
Add a convert-frame action signal.

Fixes #620279
2010-06-05 11:09:41 +02:00
Wim Taymans
3cf75c34d3 playbin2: move marshaller to screenshot
Move the marshaller for the convert_frame signal to the screenshot file in
preparation for moving it to playsink.

See #620279
2010-06-05 11:09:41 +02:00
Wim Taymans
afcf3a3517 playbin2: move convert_frame to playsink
Move the convert_frame function to playsink and make it part of the API. This is
in preparation to add the convert_frame signal to playsink.

See #620279
2010-06-05 11:09:40 +02:00
Wim Taymans
823089cf68 playsink: add property to get the last frame
Add a property to get the last video frame.

See #620279
2010-06-05 11:09:40 +02:00
Edward Hervey
cbff745b49 decodebin2: Handle raw streams we don't want.
If a file contains raw streams (not requiring a decoder) that we do
not want (expose-all-streams == FALSE), we would previously consider
those of unknown-type (missing a decoder) ... whereas in fact it was just
because they don't need decoders.

This only applies if expose-all-streams is FALSE.
2010-06-04 19:30:14 +02:00
Alessandro Decina
a9c6c978b6 playbin2: fix a typo introduced by 9d753824.
video/x-raw-float => audio/x-raw-float. Fixes #619090.
2010-05-19 16:17:19 +02:00
Sebastian Dröge
9d7538247f playbin2: Don't put "raw" subtitle types in the raw caps for decodebin2
We handle them from the autoplug-continue signal, where the caps supported
by the subtitle sink or overlay are known already.
2010-05-18 08:45:52 +02:00
Sebastian Dröge
0c85f2c890 playsink: Don't fail if subtitles are used but only audio is available and no visualizations
Instead simply disable displaying of the subtitles for now, as was
intended by that part of code...

Fixes bug #610866.
2010-05-14 17:17:33 +02:00
Sebastian Dröge
e5304c3040 playsink: Fix deadlock caused from an additional lock instead of unlock
Also improve debug output for the playsink lock.
2010-05-14 17:13:17 +02:00
Edward Hervey
20d643ccda uridecodebin: add the 'expose-all-streams' property from decodebin2
API: expose-all-streams

https://bugzilla.gnome.org/show_bug.cgi?id=617868
2010-05-07 17:38:45 +02:00
Edward Hervey
ac4188bd54 decodebin2: Add a property to not expose/decode all streams
API : expose-all-streams

If disabled:
* only the streams that CAN be decoded and match the final caps will have a
  decoder plugged in and be exposed.
* the streams that COULD HAVE BEEN decoded but do not match the finals caps
  will not have a decoder plugged in and will not be exposed.

If no decoder is available to decode a certain stream, then the missing element
message will still be emitted regardless of the value of the property.

https://bugzilla.gnome.org/show_bug.cgi?id=617868
2010-05-07 17:38:38 +02:00
Edward Hervey
e84b203de2 decodebin2: rename are_raw_caps to are_final_caps, correct comment
https://bugzilla.gnome.org/show_bug.cgi?id=617868
2010-05-07 17:18:37 +02:00
Mark Nauwelaerts
85a8a09ce7 playsink: disconnect signals in some more cleanup cases 2010-05-06 15:41:52 +02:00
Stefan Kost
34f8ab5751 decodebin: use can_intersect to avoid a caps copy 2010-05-06 09:12:32 +03:00
Wim Taymans
f99cb8b9bd uridecodebin: add all qtdemux types to downloadable types
Add all the media types that qtdemux can handle to the list of downloadable
types.
2010-05-04 17:54:01 +02:00
Mark Nauwelaerts
db4ccd8610 playbin2: forward duration query duration during group switch if no cached duration
... such as during first group setup.

Fixes #616396.
2010-04-30 13:36:59 +02:00
Sebastian Dröge
eec0f7c876 playsink: Add support for deinterlacing
This is disabled by default and can be enabled with the
deinterlace flag.

Fixes bug #547603.
2010-04-29 18:21:21 +02:00
Sebastian Dröge
a6be04a73a playbin2: Add flag for enabling/disabling automatic deinterlacing 2010-04-29 18:21:21 +02:00
Sebastian Dröge
1a9c07e5ba playbin: Use g_once_init_{enter,leave} instead of GOnce for enum/flag registration 2010-04-29 18:21:21 +02:00
Sebastian Dröge
6c9ead7030 playsink: Correctly reconfigure the video chain when switching from a subtitle to a non-subtitle file
Fixes bug #616422.
2010-04-29 18:21:21 +02:00
Sebastian Dröge
cc8a5bdcd3 playbin2: If a text sink is provided, let subtitle parsing be done by decodebin2 if required
This way subtitle sinks only get buffers in the format that they
understand, i.e. raw parsed text in most cases.

Fixes bug #614942.
2010-04-29 18:21:21 +02:00
Sebastian Dröge
5cfd799076 playbin2: Set subtitle encoding on the decodebins again 2010-04-29 18:21:21 +02:00
Tim-Philipp Müller
62b1764552 playback, ogg: dist new gstplayback.h and gstogg.h 2010-04-09 09:26:08 +01:00
Thomas Green
57b64c001a playbin: Only unref the volume element on dispose and when a new audio sink is set
Unreffing it whenever the sinks are removed will make the volume
element unavailable after a playbin reuse because it is only
recreated if the audio sink has changed.

Fixes bug #614288.
2010-04-09 08:23:33 +02:00
Edward Hervey
8db7eb4037 gstplaysink: Remove unused variable.
The value of klass is never used
2010-04-01 13:55:15 +02:00
Edward Hervey
a58183459f decodebin2: Removing dead assignment.
The value of group is overwritten a few lines below before being used.
2010-04-01 13:53:37 +02:00
Robert Swain
6515b43e40 playsink: Fix aduio_raw_sink typo 2010-03-30 15:10:42 +02:00
Wim Taymans
133f804d2d uridecodebin: we can handle avi in download mode too
Add avi to the whitelisted types that can be used for download buffering.
2010-03-26 18:24:58 +01:00
Benjamin Otte
3bd4aa26ff Add -Wwrite-strings to configure
Fixes for the code included
2010-03-16 17:41:51 +01:00
Benjamin Otte
5e21fa5e0e gst_element_class_set_details => gst_element_class_set_details_simple
Also change my email from the old university one to the current one.
2010-03-16 17:41:50 +01:00
Sebastian Dröge
bd2277d214 playsink: Avoid g_object_set() on NULL if a text sink is used
Fixes bug #611702.
2010-03-15 14:26:28 +01:00
Benjamin Otte
3a7d632a59 Add -Wredundant-decls to warning flags
... and fix all the warnings that flag throws.
2010-03-11 15:38:18 +01:00
Benjamin Otte
43b1683421 Add -Wmissing-declarations -Wmissing-prototypes to warning flags
Includes all the fixes necessary to make stuff compile again.
2010-03-11 13:50:31 +01:00
Mark Nauwelaerts
0f6cf41947 playsink: provide correct error message if configured audio/video sink fails 2010-03-10 14:37:05 +01:00
Sebastian Dröge
71ca26fc7f playsink: Don't fail if there are subtitles and audio but no video
Change playbin2 to not error out if there are subtitles and audio
but no video. If visualizations are enabled the subtitles are rendered on top
of the visualization stream, otherwise the subtitles are not linked at all and
only the audio is played (and a warning message is posted).

If there are only subtitles but neither audio nor video an error message is
still posted.

Fixes bug #610866.
2010-03-09 21:01:38 +00:00
Josep Torra Valles
25fc69e6aa playsink: avoid g_object_set() on NULL pointers
There may not be an overlay element if a text-sink is set.

Fixes #611702.
2010-03-03 20:15:44 +00:00
Sebastian Dröge
ff21fe1d25 playbin2, playsink, subtitleoverlay: Set subtitle encoding properly
For this add subtitle encoding properties to playsink and subtitleoverlay
and update the values in the containing elements.

Also update the font description in textoverlay or the used renderer
element if it is changed during playback.

Fixes bug #610310.
2010-02-22 20:47:34 +01:00
Sebastian Dröge
9fa9834535 playsink: Ghost the video sinkpad if a text sinkpad is available
Only don't ghost it if no visualizations are need and if
no text is needed and no textchain was created yet.

Fixes bug #610379.
2010-02-19 17:44:18 +01:00
Tim-Philipp Müller
3be20d7a5e uridecodebin: use same message string for missing elements as in playbin
Use the same translated message string for missing core elements as
playbin uses, which is a bit nicer and also indicates that there is
something wrong with the user's GStreamer installation (which arguably
is the case if elements like typefind or queue2 are missing).
2010-02-16 10:09:54 +00:00
Sebastian Dröge
09f972bdba playbin2: Post a missing element message and an error message if no uridecodebin can be found 2010-02-15 08:48:58 +01:00
Sebastian Dröge
dbf632f3fb playsink: Post missing element messages if a core plugin is missing
And post a warning in cases where we can still continue to work
or an error when the missing element is fatal.
2010-02-15 08:46:26 +01:00
Sebastian Dröge
cdf53e5e86 decodebin2: First post a missing-plugin message, then emit the unkown-type signal
This makes sure that there *always* is a missing plugin message in the bus
before any errors or warning messages.
2010-02-15 08:26:05 +01:00
Sebastian Dröge
9677ca5037 uridecodebin: Missing decoder errors should be STREAM CODEC_NOT_FOUND
and not CORE MISSING_PLUGIN.
2010-02-15 08:20:41 +01:00
Sebastian Dröge
ecffd51751 playbin2: Free the subtitle URI 2010-02-15 08:18:06 +01:00
Sebastian Dröge
9716d51755 uridecodebin: Post missing plugin messages if a required element can't be created
Especially if no suitable URI source can be found.
2010-02-15 08:06:44 +01:00
Sebastian Dröge
b37de8a63b decodebin2: Set ghostpad targets to NULL when freeing a decode chain
Otherwise the ghostpad will still be linked to the peer and there
will still be a reference kept, leading to nothing being unlinked
and destroyed until decodebin2 is finalized.

This fixes reuse of decodebin2 if a raw stream is connected to
its sinkpad.
2010-02-15 01:21:14 +01:00
Josep Torra Valles
d58f4fcf48 playsink: Reset the sink's state to NULL before unreffing it unless it's the same instance again
This makes sure that we don't destroy the last reference before the
element gets back to NULL state. Fixes assertion failures if a playbin2
instance is reused but different sinks are automatically chosen because
of different caps.
2010-02-12 19:43:13 +01:00
Wim Taymans
3ae58733a5 uridecodebin: avoid some typecasts 2010-02-12 12:31:49 +01:00
Tim-Philipp Müller
729b6da76a Revert "playbin2: Only allow to set the URIs in states <= READY or from an about-to-finish signal handler"
This reverts commit 7335ce5d3e.

Support abusing the uri property to configure the next uri to play
outside of the about-to-finish handler for the time being after all.
We also shouldn't use thread private structures for this, since it
should be possible to block the thread that emitted about-to-finish
while the main thread sets the uri property. See #607226.
2010-02-04 18:32:48 +00:00
Wim Taymans
fd755182b1 uridecodebin: clean up decodebin properties
When reusing a decodebin2 element, clear the properties we might have changed,
to their default values or else we might end up with old configuration.

Fixes #608484
2010-02-01 15:00:18 +01:00
Tim-Philipp Müller
16601b09fe playbin2: when no uri is set, post an error message
When no uri is set, don't just return STATE_CHANGE_FAILURE from the
state change function, but actually post an error message.
2010-01-30 15:41:32 +00:00
Edward Hervey
c60f94da58 decodebin2: Don't skip an element when getting the topology
Fixes #608167
2010-01-26 17:29:21 +01:00
Julien Moutte
d6108b8fad subtitleoverlay: relax caps template on sink pads
Allow any caps on sink pad templates as we could do passthrough with non raw
video caps.
2010-01-25 18:57:52 +01:00
Sebastian Dröge
fcf2668b20 Revert "inputselector: Protect g_object_notify() with the object's mutex"
This reverts commit a37426c41c, it's
causing deadlocks with playbin2.
2010-01-25 12:22:17 +01:00
Kipp Cannon
a37426c41c inputselector: Protect g_object_notify() with the object's mutex
This works around the thread unsafety of g_object_notify()

Fixes bug #607513.
2010-01-24 20:55:26 +01:00
Wim Taymans
12af633942 uridecodebin: handle raw sources about-to-finish signals
When we are dealing with a source that produces raw audio/video, we don't use a
decodebin2 to decode the data and we thus don't have the drained/about-to-finish
signal emited. To fix this, we add a padprobe on the source pads and emit the
drained signal ourselves. This then makes playbin2 emit the about-to-finish
signal for raw sources such as cdda://

Fixes #607116
2010-01-22 16:36:46 +01:00
Tim-Philipp Müller
b0fe1867d4 playsink: re-use iterator callback to avoid code duplication 2010-01-18 10:10:27 +00:00
Tim-Philipp Müller
7216605ffa playsink: when looking for sink properties, make sure they have the right type
We don't want to end up setting values on elements where the property is of
a different type than we expect. Can't transform the value either, since we
can't really make assumptions about the scale and transform function.

Fixes crashes when using playbin2 with apexsink (#606949).
2010-01-18 10:10:27 +00:00
Sebastian Dröge
7335ce5d3e playbin2: Only allow to set the URIs in states <= READY or from an about-to-finish signal handler
Changing the URIs in a state > READY results in unexpected behaviour,
i.e. the new URIs are only used after the current track has finished.

Fixes bug #607226.
2010-01-18 09:32:42 +01:00
Mark Nauwelaerts
2482a536ac decodebin2: sprinkle some more locking
... to avoid races and ensure some data structure consistency.

See also #574289.
2010-01-16 18:48:00 +01:00
Mark Nauwelaerts
45447337ad decodebin2: mind blocked pads when shutting down
Fix regression in shutdown deadlock handling now that the
target of a ghostpad is blocked instead of ghostpad itself.

See also #574293.
2010-01-14 18:26:03 +01:00
Sebastian Dröge
3b842bc98b playsink: Fix disabling of subtitles if subtitles were used before
In this case the video still goes through the text chain and
subtitles are still going in there, in case subtitles are
enabled again. This makes sure that re-enabling subtitles
happens instantly.

Fixes hanging video when disabling subtitles, caused by an
unliked video pad.
2010-01-14 13:36:23 +01:00
Mark Nauwelaerts
36fee21834 playbin2: fix pad ref leak 2010-01-14 10:46:28 +01:00
Brijesh Singh
0fe6b6e8ab playsink: Fix handling of the native audio/video flags
Fixes bug #606687.
2010-01-13 09:39:54 +01:00
Wim Taymans
22939b074c Merge branch 'master' of ssh://git.freedesktop.org/git/gstreamer/gst-plugins-base 2010-01-05 10:38:41 +01:00
Wim Taymans
15216d23ac decodebin2: fix typo in debug message 2009-12-23 21:24:48 +01:00
Wim Taymans
99e836a340 decodebin2: avoid some type checks 2009-12-23 18:18:03 +01:00
Wim Taymans
3b0fc1e4fb playbin2: avoid leaking selector request pads 2009-12-23 17:08:27 +01:00
Wim Taymans
d4e1ff012d uridecodebin: avoid leaking queue and typefind
Don't leak the queue and typefind elements that we might link after the
source element.
2009-12-23 15:46:25 +01:00
Jonathan Matthew
138c851173 uridecodebin: don't name the queue
There is no reason to name the queue.

Fixes #605219
2009-12-23 15:43:52 +01:00
Wim Taymans
8266d201a0 decodebin2: add some debugging 2009-12-16 11:44:11 +01:00
Wim Taymans
26071d748f playsink: fix video when subtitles disabled
When we have a source with subtitles but they were disabled with the flags,
still ghostpad the video pad instead of leaving it unlinked.
2009-12-09 12:11:55 +01:00
Sebastian Dröge
7bf631e448 playbin2: Fix stream-changed message list iteration
When iterating the list and removing the current element, first
get the next element and then remove the current one and not
the other way around.
2009-12-08 13:41:28 +01:00
Sebastian Dröge
49fd39c3fd playsink: Some minor cleanup 2009-12-07 09:13:40 +01:00
Sebastian Dröge
930a57db20 playbin2: Reset stream segments on FLUSH_STOP and don't adjust QoS events for non-time segments 2009-12-06 18:06:05 +01:00
Stefan Kost
e6e9e3c589 build: fix build with debug logging disabled. 2009-12-03 23:38:54 +02:00
Stefan Kost
a6cf29fd3d playbin2: don't iterate the factory lists in non-debug mode
When debugging is disabled, we won't see anything printed anyway.
2009-12-03 18:08:49 +02:00
Sebastian Dröge
732f3055a3 subtitleoverlay: Fix some pad refcount issues
Fixes bug #603345.
2009-11-30 10:22:54 +01:00
Sebastian Dröge
1273909419 playbin2: Transform QoS events to be meaningful for upstream elements
This is necessary because the sinks don't notice the group switches
and the decoders/demuxers have a different running time than the
sinks.

Fixes bug #537050.
2009-11-23 08:06:02 +01:00
Thiago Santos
0d6195686b decodebin2: error when all streams have no buffers
In some cases (all buffers dropped by a parser) a decodebin2
chain might receive an EOS before it gets enough data to
expose a decoded pad. In the case that no streams can expose
a pad we should error out instead of hang.

Fixes #542758
2009-11-19 14:51:33 -03:00
Sebastian Dröge
7e5d6ed441 playbin2: Fix stupid bug introduced in last commit 2009-11-19 12:23:08 +01:00
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
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