Commit graph

2127 commits

Author SHA1 Message Date
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
Sebastian Dröge 6723bf429f audioresample: Update speex resampler to latest GIT 2009-11-10 12:22:27 +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 c661bfaa99 typefind: Reduce number of calls to gst_type_find_peek.
Shaves off a couple percents off typefinding
2009-11-09 19:18:07 +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
Olivier Crête b5620e1241 gdpdepay: Clear adapter on flush and state change
Fixes #600469
2009-11-05 15:42:09 +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
Thiago Santos e55bf9bdd8 audiorate: move debug calculation into debug macro
Remove in_duration and move its calculation to
GST_LOG_OBJECT macro. This way it will only be calculated
if we have debug enabled.
2009-10-22 09:14:30 -03:00
Thiago Santos d95b607e23 audiorate: Removing unused variable
The in_stop variable was never read. Removing it.
2009-10-22 09:14:30 -03:00
Thiago Santos 44d6ebc48f audiorate: be more accurate on offset math
Replace gst_util_uint64_scale_int for its rounding version
to improve accuracy and avoid inserting samples where
they aren't needed.

Fixes #499181
2009-10-22 09:14:29 -03:00
Iago Toral f63643bd54 subparse: Add support for DKS subtitle format
Fixes bug #598936.
2009-10-22 10:02:11 +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
Tim-Philipp Müller 37f8957181 typefind: fix typo in previous mxf typefinder change 2009-10-21 20:36:23 +01:00
Edward Hervey d48d47e683 typefind: speed up mxf_type_find over 300 times for worst case scenarios
* memcmp is expensive and was being abused, reduce calling it by checking
  the first byte.
* iterating one byte at at time over 64 kbites introduces a certain overhead,
  therefore we now do it in chunks of 1024 bytes

And I do mean over 300 times. The average instruction call per mxf_type_find
was previously 785685 and it's now down to 2458 :)
2009-10-21 21:04:45 +02: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
Stefan Kost 319baefeba audioconvert: track active conversion in perf log 2009-10-12 21:43:42 +03:00
Josep Torra 7bba1217a5 audioconvert: fixes warning: format not a string literal and no format arguments
redo of valid part of my previous revert.
2009-10-09 15:29:15 +02:00
Josep Torra 7b77138667 Revert "audioconvert: fixes warning: format not a string literal and no format arguments"
Revert this commit as unintentionally I've changed common.

This reverts commit 49ea013822.
2009-10-09 15:19:42 +02:00
Josep Torra 9c335ec185 videorate: fix warning in macosx 2009-10-09 14:23:36 +02:00
Josep Torra 99db7845c7 audiorate: fix warning in macosx 2009-10-09 14:20:47 +02:00
Josep Torra 49ea013822 audioconvert: fixes warning: format not a string literal and no format arguments 2009-10-09 14:14:15 +02:00
Stefan Kost e81303b733 ffmpegcolorspace: chwck formats just once per _chain() 2009-10-08 18:10:08 +03:00
Stefan Kost f2d1c9b0b7 ffmpegcolorspace: add perf-log-category and log suboptimal operation
Log if we use an intermediate colorspace for conversion.
2009-10-08 18:09:52 +03: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
Stefan Kost ccf5d6551a build: sprintf, sscanf need stdio.h 2009-10-07 11:56:35 +03:00
Benjamin Otte 6621dd3d3e [videotestsrc] Make checkers-8 pattern create 8x8 instead of 16x16 tiles 2009-10-07 09:54:08 +02:00
Benjamin Otte 9d6eb19453 [ffmpegcolorspace] Fix NV12 and NV21 with odd width and height 2009-10-07 09:54:08 +02:00
Benjamin Otte a0a66e8ceb [videotestsrc] Fix Y41B
Chroma components should be aligned on 4byte boundaries.

https://bugzilla.gnome.org/show_bug.cgi?id=595849
2009-10-07 09:54:07 +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
David Schleef 205ada8454 videotestsrc: add pattern with out-of-gamut colors
Adds a pattern with out-of-gamut colors in a checkerboard
pattern with in-gamut neighbors.  Useful for checking YCbCr->RGB
color matrixing.  Correct matrixing and clamping will cause the
checkerboard pattern to be invisible.
2009-10-06 19:47:01 -07:00
Robert Swain fc56adc2e3 audioresample: fix printf variable type
Change printf variable type from %lu to %" G_GUINT64_FORMAT " as it
should be for guint64.

Fixes #596981
2009-10-06 22:37:00 +02:00
Jan Schmidt f58a2b71b5 ffmpegcolorspace: Use the ffmpegcolorspace debug category
Move gstffmpegcodecmap debug to the ffmpegcolorspace category
2009-10-06 20:37:42 +01:00
Jan Schmidt 850c95178d gdppay: Don't repeat tags buffers for every new segment
Only send a tag buffer when one is received, not after every new segment
event/update.
2009-10-06 20:37:42 +01:00
David Schleef 1871a6025d typefind: detect 'ftypqt ' as video/quicktime 2009-10-06 12:19:12 -07: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