platform/upstream/gstreamer.git
12 years agoRevert "alsasrc: style fix"
Stefan Sauer [Mon, 28 Nov 2011 09:55:39 +0000 (10:55 +0100)]
Revert "alsasrc: style fix"

This reverts commit f70ca6d4cbfd2b672dcc7215814bf6b39ce2c3f8.

12 years agoplaysinkconvertbin: Don't send undefined NEWSEGMENT events to the internal elements
Sebastian Dröge [Wed, 30 Nov 2011 13:25:11 +0000 (14:25 +0100)]
playsinkconvertbin: Don't send undefined NEWSEGMENT events to the internal elements

This happens when the internal elements are added before any NEWSEGMENT
event arrived and in that case we shouldn't send a NEWSEGMENT event
to the internal elements at all. They will get the NEWSEGMENT event
from upstream later.

12 years agoplaybin2: Fix decoder-sink compatibility check for raw audio/video formats
Sebastian Dröge [Tue, 29 Nov 2011 13:15:45 +0000 (14:15 +0100)]
playbin2: Fix decoder-sink compatibility check for raw audio/video formats

If the sink supports raw audio/video, we first check
if the decoder could output any raw audio/video format
and assume it is compatible with the sink then. We don't
do a complete compatibility check here if converters
are plugged between the decoder and the sink because
the converters will convert between raw formats and
even if the decoder format is not supported by the decoder
a converter will convert it.

We assume here that the converters can convert between
any raw format.

Fixes bug #665120.

12 years agooggdemux: fix compiler warning
Alessandro Decina [Tue, 29 Nov 2011 08:11:21 +0000 (09:11 +0100)]
oggdemux: fix compiler warning

12 years agolibgstvideo: minor fixes to key unit events
Alessandro Decina [Tue, 29 Nov 2011 07:49:53 +0000 (08:49 +0100)]
libgstvideo: minor fixes to key unit events

Make out args to gst_video_event_parse_{downstream|upstream}_force_key_unit
optional, update libgstvideo.def and fix docs a bit.

API: gst_video_event_new_upstream_force_key_unit
API: gst_video_event_new_downstream_force_key_unit
API: gst_video_event_is_force_key_unit
API: gst_video_event_parse_upstream_force_key_unit
API: gst_video_event_parse_downstream_force_key_unit

https://bugzilla.gnome.org/show_bug.cgi?id=607742

12 years agolibgstvideo: Add force key unit events
Andoni Morales Alastruey [Sat, 4 Jun 2011 23:49:38 +0000 (01:49 +0200)]
libgstvideo: Add force key unit events

12 years agofft: Bracket public headers
Philippe Normand [Mon, 28 Nov 2011 19:11:09 +0000 (20:11 +0100)]
fft: Bracket public headers

This is especially needed if the gstfftw library is used from C++
code.

Fixes #665074

12 years agotypefindfunctions: Fix compiler warning
Philippe Normand [Mon, 28 Nov 2011 19:10:18 +0000 (20:10 +0100)]
typefindfunctions: Fix compiler warning

12 years agotypefind: fix build error
Alexey Fisher [Mon, 28 Nov 2011 18:03:50 +0000 (19:03 +0100)]
typefind: fix build error

fix build errors:
gsttypefindfunctions.c:248:25: error: 'low' may be used uninitialized in this function [-Werror=uninitialized]
gsttypefindfunctions.c:239:24: error: 'high' may be used uninitialized in this function [-Werror=uninitialized]

Signed-off-by: Alexey Fisher <bug-track@fisher-privat.net>
12 years agoplaysinkconvertbin: Fix stupid mistake in last commit
Sebastian Dröge [Mon, 28 Nov 2011 18:06:57 +0000 (19:06 +0100)]
playsinkconvertbin: Fix stupid mistake in last commit

12 years agoplaysinkconvertbin: Only return the converter caps if we actually have raw caps
Sebastian Dröge [Mon, 28 Nov 2011 18:03:54 +0000 (19:03 +0100)]
playsinkconvertbin: Only return the converter caps if we actually have raw caps

Fixes bug #664818 (hopefully).

12 years agoaudioresample: Don't emit DISCONT buffers if no discontinuity happened
Kipp Cannon [Mon, 28 Nov 2011 16:59:32 +0000 (17:59 +0100)]
audioresample: Don't emit DISCONT buffers if no discontinuity happened

audioresample is derived from GstBaseTransform, and one of
GstBaseTransform's traits is that if the derived element does not
produce an output buffer from some input buffer then the first output
buffer after that gets flaged as a discontinuity, whether or not the
buffer actually is discontinuous from the output buffer that preceded
it. When downsampling, the audioresample element requires more than
one input sample for each output sample, and if the ratio of input to
output sample rates is high enough and the input buffers short enough
it can come to pass that the resampler does not receive enough samples
on its input to produce any output.  Currently the resampler returns
GST_BASE_TRANSFORM_FLOW_DROPPED from the transform() method in this case,
causing the next buffer to be flagged as a discontinuity. If subsequent
elements in the pipeline reset themselves on disconts, this can cause
clicks and other undesireable behaviour.

Fixes bug #665004.

12 years agotypefind: typefind UTF-16 and UTF-32
Vincent Penquerc'h [Fri, 30 Sep 2011 19:00:50 +0000 (20:00 +0100)]
typefind: typefind UTF-16 and UTF-32

This avoids the MP3 typefinder from getting the highest score
every time it thinks there's something it might possibly be
able to parse.

https://bugzilla.gnome.org/show_bug.cgi?id=607619

12 years agoRevert "theoradec: move the QoS logic to libgstvideo"
Vincent Penquerc'h [Mon, 28 Nov 2011 13:27:29 +0000 (13:27 +0000)]
Revert "theoradec: move the QoS logic to libgstvideo"

This reverts commit 149a4ce390a78e21309b210f7daba9db5d42afe6.

*grumble* I managed to merge something I did not mean to.

12 years agoRevert "libgstvideo: add a new API to handle QoS events and dropping logic"
Vincent Penquerc'h [Mon, 28 Nov 2011 13:26:53 +0000 (13:26 +0000)]
Revert "libgstvideo: add a new API to handle QoS events and dropping logic"

This reverts commit eb03323fb683e06ed8e7f557037f13252f150c25.

*grumble* I managed to merge something I did not mean to.

12 years agovarious: fix pad template leaks
Vincent Penquerc'h [Mon, 28 Nov 2011 12:51:22 +0000 (12:51 +0000)]
various: fix pad template leaks

https://bugzilla.gnome.org/show_bug.cgi?id=662664

12 years agotheoradec: move the QoS logic to libgstvideo
Vincent Penquerc'h [Wed, 7 Sep 2011 15:04:14 +0000 (16:04 +0100)]
theoradec: move the QoS logic to libgstvideo

https://bugzilla.gnome.org/show_bug.cgi?id=658241

12 years agolibgstvideo: add a new API to handle QoS events and dropping logic
Vincent Penquerc'h [Mon, 5 Sep 2011 12:56:05 +0000 (13:56 +0100)]
libgstvideo: add a new API to handle QoS events and dropping logic

https://bugzilla.gnome.org/show_bug.cgi?id=658241

12 years agoaudioencoder: elaborate some documentation
Mark Nauwelaerts [Mon, 28 Nov 2011 10:30:18 +0000 (11:30 +0100)]
audioencoder: elaborate some documentation

12 years agoaudiodecoder: add some documentation
Mark Nauwelaerts [Mon, 28 Nov 2011 10:28:06 +0000 (11:28 +0100)]
audiodecoder: add some documentation

12 years agoaudiodecoder: really discard NULL decoded frame altogether
Mark Nauwelaerts [Mon, 21 Nov 2011 13:26:54 +0000 (14:26 +0100)]
audiodecoder: really discard NULL decoded frame altogether

... including any timestamp, rather than having that one influence base_ts.

12 years agoalsasrc: style fix
Stefan Sauer [Mon, 28 Nov 2011 09:55:39 +0000 (10:55 +0100)]
alsasrc: style fix

Use timestamp==0 instead of mixing it with !timestamp style checks.

12 years agoalsasrc: handle the case where the drivers don't supply timestamps
Stefan Sauer [Mon, 28 Nov 2011 08:12:37 +0000 (09:12 +0100)]
alsasrc: handle the case where the drivers don't supply timestamps

If highres-timestamp is 0, try lowres and if that fails fallback to system clock
timestamps.

12 years agooggmux: set collectpads2 not to wait on sparse streams
Vincent Penquerc'h [Tue, 1 Nov 2011 15:21:54 +0000 (15:21 +0000)]
oggmux: set collectpads2 not to wait on sparse streams

https://bugzilla.gnome.org/show_bug.cgi?id=663174

12 years agoplaysinkconvertbin: make identiy silent
Josep Torra [Fri, 25 Nov 2011 14:35:39 +0000 (15:35 +0100)]
playsinkconvertbin: make identiy silent

12 years agoaudio: remove unstable API guards from the audio decoder and encoder base classes
Tim-Philipp Müller [Fri, 25 Nov 2011 13:11:54 +0000 (13:11 +0000)]
audio: remove unstable API guards from the audio decoder and encoder base classes

12 years agodocs: mention explicitly that playbin2 signals are emitted from a streaming thread
Tim-Philipp Müller [Fri, 25 Nov 2011 12:58:22 +0000 (12:58 +0000)]
docs: mention explicitly that playbin2 signals are emitted from a streaming thread

12 years agodecodebin2: Set the multiqueue limits to the playing limits after overrun too
Sebastian Dröge [Fri, 25 Nov 2011 10:11:12 +0000 (11:11 +0100)]
decodebin2: Set the multiqueue limits to the playing limits after overrun too

We don't expect any new pads anymore and prerolling is finished now.

12 years agodecodebin2: Cache the upstream seekability for demuxer decode chains and use it for...
Sebastian Dröge [Fri, 25 Nov 2011 10:08:58 +0000 (11:08 +0100)]
decodebin2: Cache the upstream seekability for demuxer decode chains and use it for the non-preroll multiqueue limits

After preroll the multiqueue limits are still set to the preroll
limits if use-buffering is set to TRUE. In that case we only want
time limits on the multiqueue if upstream is seekable.

12 years agodecodebin2: fix prerolling for low bitrate streams from hlsdemux
Vincent Penquerc'h [Tue, 8 Nov 2011 13:55:58 +0000 (13:55 +0000)]
decodebin2: fix prerolling for low bitrate streams from hlsdemux

Such streams were detected as seekable, as the query on the typefind
element was testing the m3u8 file listing the actual streams, and
not going through the demuxer(s).

We now check for seekability for each multiqueue following a demuxer,
so the query will flow through the elements which might prevent seeking.

https://bugzilla.gnome.org/show_bug.cgi?id=647769

12 years agooggdemux: minor cleanup
Vincent Penquerc'h [Mon, 24 Oct 2011 10:46:05 +0000 (11:46 +0100)]
oggdemux: minor cleanup

12 years agolibgstriff: add a couple tags that need skipping
Vincent Penquerc'h [Tue, 27 Sep 2011 15:45:26 +0000 (16:45 +0100)]
libgstriff: add a couple tags that need skipping

Found in a sample in the wild, appears to be ID3 tag.

https://bugzilla.gnome.org/show_bug.cgi?id=660249

12 years agovideorate: Rename ARG_ enums to PROP_
Sebastian Dröge [Thu, 24 Nov 2011 13:41:13 +0000 (14:41 +0100)]
videorate: Rename ARG_ enums to PROP_

This is more consistent with other code and these are
properties anyway, not arguments

12 years agovideorate: Add property to force an output framerate
Sebastian Dröge [Thu, 24 Nov 2011 13:29:49 +0000 (14:29 +0100)]
videorate: Add property to force an output framerate

API: GstVideoRate:force-fps

Changing the framerate during playback is not possible
with a capsfilter downstream if upstream is not using
gst_pad_alloc_buffer(). In that case there's no way in
0.10 to signal to videorate that the preferred framerate
has changed.

This new property will force the output framerate to
a specific value and can be changed during playback.

12 years agoplaysinkconvertbin: Reconfigure if we switch from raw to incompatible raw caps
Sebastian Dröge [Thu, 24 Nov 2011 11:38:54 +0000 (12:38 +0100)]
playsinkconvertbin: Reconfigure if we switch from raw to incompatible raw caps

We might need to add converters and worked in passthrough mode before.

12 years agoplaysinkconvertbin: Override acceptcaps function for the two ghostpads
Sebastian Dröge [Thu, 24 Nov 2011 11:37:58 +0000 (12:37 +0100)]
playsinkconvertbin: Override acceptcaps function for the two ghostpads

The ghostpad acceptcaps functions are not valid in this case because
we don't only accept the caps accepted by the target but could also
insert converters. Fixes bug #663892.

12 years agoplaysinkaudioconvert: use-volume and use-converters are no construct-only properties...
Sebastian Dröge [Thu, 24 Nov 2011 10:34:12 +0000 (11:34 +0100)]
playsinkaudioconvert: use-volume and use-converters are no construct-only properties anymore

Fixes bug #663893.

12 years agooggdemux: skip the second bisection when possible
Vincent Penquerc'h [Sat, 22 Oct 2011 19:29:26 +0000 (20:29 +0100)]
oggdemux: skip the second bisection when possible

If we already saw the keyframes that we need to find,
we do not need to bisect to find them.

This will always be the case for streams with audio only,
where each frame acts as a keyframe, but will occasionally
also happen for streams with video.

https://bugzilla.gnome.org/show_bug.cgi?id=662475

12 years agooggdemux: improve push time seeking
Vincent Penquerc'h [Sat, 22 Oct 2011 19:20:38 +0000 (20:20 +0100)]
oggdemux: improve push time seeking

Various tweaks to improve convergence, in particular for
the worst case, which is now cut in about half.

https://bugzilla.gnome.org/show_bug.cgi?id=662475

12 years agooggdemux: gather some more stats about bisection
Vincent Penquerc'h [Fri, 21 Oct 2011 18:38:19 +0000 (19:38 +0100)]
oggdemux: gather some more stats about bisection

https://bugzilla.gnome.org/show_bug.cgi?id=662475

12 years agovorbisenc: do not accept 256 channels, 255 is the max vorbis supports
Vincent Penquerc'h [Wed, 23 Nov 2011 16:09:13 +0000 (16:09 +0000)]
vorbisenc: do not accept 256 channels, 255 is the max vorbis supports

12 years agooggstream: extract opus comments if available
Vincent Penquerc'h [Tue, 22 Nov 2011 13:29:10 +0000 (13:29 +0000)]
oggstream: extract opus comments if available

12 years agooggstream: recognize opus headers from data, not packet count
Vincent Penquerc'h [Tue, 22 Nov 2011 13:15:33 +0000 (13:15 +0000)]
oggstream: recognize opus headers from data, not packet count

Opus streams outside of Ogg may not have headers, and oggstream
may be used by oggmux to mux an Opus stream which does not come
from Ogg - thus without headers.
Determining headerness by packet count would strip the first two
packets from such an Opus stream, leading to a very small amount
of audio being clipped at the beginning of the stream.

12 years agooggdemux: add some more debug info when determining start time
Vincent Penquerc'h [Tue, 22 Nov 2011 13:01:35 +0000 (13:01 +0000)]
oggdemux: add some more debug info when determining start time

12 years agooggstream: fix opus duration calculation
Vincent Penquerc'h [Tue, 22 Nov 2011 12:55:56 +0000 (12:55 +0000)]
oggstream: fix opus duration calculation

12 years agooggstream: early out on headers when determining packet duration
Vincent Penquerc'h [Tue, 22 Nov 2011 12:00:58 +0000 (12:00 +0000)]
oggstream: early out on headers when determining packet duration

12 years agooggstream: account for opus pre-skip in granpos/time mapping
Vincent Penquerc'h [Mon, 21 Nov 2011 17:03:21 +0000 (17:03 +0000)]
oggstream: account for opus pre-skip in granpos/time mapping

12 years agoplaysinkconvertbin: avoid removing children from bin twice
René Stadler [Tue, 22 Nov 2011 09:04:12 +0000 (10:04 +0100)]
playsinkconvertbin: avoid removing children from bin twice

GstBin base class removes children in dispose, so we need to do the same.

12 years agoogg: add opus support
Vincent Penquerc'h [Sat, 19 Nov 2011 16:06:09 +0000 (16:06 +0000)]
ogg: add opus support

12 years agovorbisenc: reset tag setter interface when appropriate
Mark Nauwelaerts [Wed, 16 Nov 2011 18:00:44 +0000 (19:00 +0100)]
vorbisenc: reset tag setter interface when appropriate

12 years agoaudioencoder: invalidate format info when setup negotiation failed
Mark Nauwelaerts [Wed, 16 Nov 2011 18:00:30 +0000 (19:00 +0100)]
audioencoder: invalidate format info when setup negotiation failed

... which ensures nothing subsequently tries to slip past _chain
and into a possibly improperly setup subclass.

12 years agoaudiodecoder: accept dropped buffers before we know the format
Vincent Penquerc'h [Tue, 15 Nov 2011 13:29:31 +0000 (13:29 +0000)]
audiodecoder: accept dropped buffers before we know the format

This allows flacdec to not emit audio for headers, while allowing
the base audio decoder to keep its timestamps in sync.

12 years agoaudio: Remove some unused variables
Robert Swain [Mon, 14 Nov 2011 11:45:31 +0000 (12:45 +0100)]
audio: Remove some unused variables

12 years agortcpbuffer: Add feedback message types from RFC 5104
Olivier Crête [Tue, 30 Aug 2011 22:27:09 +0000 (18:27 -0400)]
rtcpbuffer: Add feedback message types from RFC 5104

These are Codec Control messages (CCM)

https://bugzilla.gnome.org/show_bug.cgi?id=658419

12 years agoaudiodecoder: improve reverse playback
Mark Nauwelaerts [Wed, 19 Oct 2011 14:30:27 +0000 (16:30 +0200)]
audiodecoder: improve reverse playback

... by doing some more (reverse) timestamp interpolating and
refactoring downstream pushing.

Fixes #661983.

12 years agoaudio: add GST_AUDIO_INFO_IS_VALID macro and use in audio decoder base class
Tim-Philipp Müller [Sun, 13 Nov 2011 13:18:16 +0000 (13:18 +0000)]
audio: add GST_AUDIO_INFO_IS_VALID macro and use in audio decoder base class

API: GST_AUDIO_INFO_IS_VALID

12 years agotests: require Gtk+ 3.0 for examples and Gtk-based test apps
Tim-Philipp Müller [Sat, 12 Nov 2011 15:51:52 +0000 (15:51 +0000)]
tests: require Gtk+ 3.0 for examples and Gtk-based test apps

The Gtk+ dependency is entirely optional, we're just not
supporting Gtk+ 2.x any longer.

12 years agoaudio: fix order in LIBADD
Tim-Philipp Müller [Mon, 7 Nov 2011 17:36:44 +0000 (17:36 +0000)]
audio: fix order in LIBADD

Local libs must come first.

12 years agoplaysinkconvertbin: fix visualisations again
Tim-Philipp Müller [Fri, 11 Nov 2011 13:32:23 +0000 (13:32 +0000)]
playsinkconvertbin: fix visualisations again

Make caps writable before merging other caps into them.

12 years agobaseaudiosink: make unsigned properties unsigned, not signed
Vincent Penquerc'h [Thu, 10 Nov 2011 15:55:31 +0000 (15:55 +0000)]
baseaudiosink: make unsigned properties unsigned, not signed

12 years agoconfigure: suppress warnings about unused variables if debugging system is disabled...
Tim-Philipp Müller [Wed, 9 Nov 2011 00:36:51 +0000 (00:36 +0000)]
configure: suppress warnings about unused variables if debugging system is disabled in core

https://bugzilla.gnome.org/show_bug.cgi?id=662952

12 years agotextoverlay: continue processing text when silent
Vincent Penquerc'h [Thu, 27 Oct 2011 13:48:52 +0000 (14:48 +0100)]
textoverlay: continue processing text when silent

This prevents playback wegding when text buffers are
left to pile up.

https://bugzilla.gnome.org/show_bug.cgi?id=662829

12 years agowin32: update .def file for new audiosink API
Tim-Philipp Müller [Tue, 8 Nov 2011 00:16:56 +0000 (00:16 +0000)]
win32: update .def file for new audiosink API

API: gst_base_audio_sink_get_alignment_threshold()
API: gst_base_audio_sink_set_alignment_threshold()
API: gst_base_audio_sink_get_discont_wait()
API: gst_base_audio_sink_set_discont_wait()

12 years agoexamples: sprinkle GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS in seek test utility
Tim-Philipp Müller [Mon, 7 Nov 2011 23:41:33 +0000 (23:41 +0000)]
examples: sprinkle GST_DEBUG_BIN_TO_DOT_FILE_WITH_TS in seek test utility

https://bugzilla.gnome.org/show_bug.cgi?id=630497

12 years agodocs: fix up some Since: markers
Tim-Philipp Müller [Mon, 7 Nov 2011 23:05:44 +0000 (23:05 +0000)]
docs: fix up some Since: markers

12 years agotheoraenc: fix speed level failure test
Vincent Penquerc'h [Fri, 4 Nov 2011 10:34:27 +0000 (10:34 +0000)]
theoraenc: fix speed level failure test

It was testing the opposite of what it thought it was.

https://bugzilla.gnome.org/show_bug.cgi?id=663390

12 years agotheoraenc: make logically static const data just so
Vincent Penquerc'h [Fri, 4 Nov 2011 10:57:40 +0000 (10:57 +0000)]
theoraenc: make logically static const data just so

https://bugzilla.gnome.org/show_bug.cgi?id=663391

12 years agotheoraenc: use th_packet_iskeyframe instead of peeking at bits
Vincent Penquerc'h [Fri, 4 Nov 2011 10:58:15 +0000 (10:58 +0000)]
theoraenc: use th_packet_iskeyframe instead of peeking at bits

https://bugzilla.gnome.org/show_bug.cgi?id=663391

12 years agotheoraenc: trivial comment typos fixes
Vincent Penquerc'h [Fri, 4 Nov 2011 10:59:00 +0000 (10:59 +0000)]
theoraenc: trivial comment typos fixes

https://bugzilla.gnome.org/show_bug.cgi?id=663391

12 years agotheoraenc: warn when trying to set an ignored obsolete property
Vincent Penquerc'h [Fri, 4 Nov 2011 10:59:12 +0000 (10:59 +0000)]
theoraenc: warn when trying to set an ignored obsolete property

https://bugzilla.gnome.org/show_bug.cgi?id=663391

12 years agotheoraenc: refuse to get to READY if the encoder was disabled
Vincent Penquerc'h [Fri, 4 Nov 2011 11:10:46 +0000 (11:10 +0000)]
theoraenc: refuse to get to READY if the encoder was disabled

https://bugzilla.gnome.org/show_bug.cgi?id=663391

12 years agooggdemux: survive skeleton finding length behind our backs in push mode
Vincent Penquerc'h [Tue, 18 Oct 2011 16:58:49 +0000 (17:58 +0100)]
oggdemux: survive skeleton finding length behind our backs in push mode

In push mode, we determine duration by doing a seek to the end of the
stream. However, a skeleton stream with an index will cause the duration
to be known already, and we end up never setting the push_time_duration
variable which we use to know duration has been determined.

https://bugzilla.gnome.org/show_bug.cgi?id=662049

12 years agovalgrind: add ALSA leaks fixed by snd_config_update_free_global
Vincent Penquerc'h [Wed, 5 Oct 2011 14:29:54 +0000 (15:29 +0100)]
valgrind: add ALSA leaks fixed by snd_config_update_free_global

If they go when calling snd_config_update_free_global, they're
not really bug leaks, but more like intentional ones we don't
want to get told about.

https://bugzilla.gnome.org/show_bug.cgi?id=615342

12 years agobaseaudiosink: make discont-wait configurable
Felipe Contreras [Mon, 2 May 2011 10:05:28 +0000 (13:05 +0300)]
baseaudiosink: make discont-wait configurable

Now we can configure how much time to wait before deciding that a
discont has happened.

Also, adds getter and setter to allow derived implementations to set
this value upon construction.

Suggestions and several improvements by Havard Graff.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
12 years agobaseaudiosink: delay the resyncing of timestamp vs ringbuffertime
Felipe Contreras [Mon, 7 Nov 2011 10:31:47 +0000 (11:31 +0100)]
baseaudiosink: delay the resyncing of timestamp vs ringbuffertime

A common problem for audio-playback is that the timestamps might not
be completely linear. This is specially common when doing streaming over
a network, where you can have jittery and/or bursty packettransmission,
which again will often be reflected on the buffertimestamps.

Now, the current implementation have a threshold that says how far the
buffertimestamp is allowed o drift from the ideal aligned time in the
ringbuffer. This was an instant reaction, and ment that if one buffer
arrived with a timestamp that would breach the drift-tolerance, a resync
would take place, and the result would be an audible gap for the
listener.

The annoying thing would be that in the case of a "timestamp-outlier",
you would first resync one way, say +100ms, and then, if the next
timestamp was "back on track", you would end up resyncing the other way
(-100ms) So in fact, when you had only one buffer with slightly off
timestamping, you would end up with *two* audible gaps. This is the
problem this patch addresses.

The way to "fix" this problem with the previous implementation, would
have been to increase the "drift-tolerance" to a value that was greater
than the largest timestamp-outlier one would normally expect.  The big
problem with this approach, however, is that it will allow normal
operations with a huge offset timestamp vs running-time, which is
detrimental to lip-sync. If the drift-tolerance is set to 200ms, it
basically means that lip-sync can easily end up being off by that much.

This patch will basically start a timer when the first breach of
drift-tolerance is detected. If any following timestamp for the next n
nanoseconds gets "back on track" within the threshold, it has basically
eliminated the effect of an outlier, and the timer is stopped.  If,
however, all timestamps within this time-limit are breaching the
threshold, we are probably facing a more permanent offset in the
timestamps, and a resync is allowed to happen.

So basically this patch offers something as rare as both higher
accuracy, it terms of allowing smaller drift-tolerances, as well as much
smoother, less glitchy playback!

Commit message and improvments by Havard Graff.

Fixes bug #640859.

12 years agobaseaudiosink: rename some variables
Felipe Contreras [Mon, 7 Nov 2011 10:18:34 +0000 (11:18 +0100)]
baseaudiosink: rename some variables

12 years agobaseaudiosink: use gst_util_uint64_scale_int when appropriate
Felipe Contreras [Sat, 21 May 2011 13:16:42 +0000 (16:16 +0300)]
baseaudiosink: use gst_util_uint64_scale_int when appropriate

It's probably safer this way.

12 years agobaseaudiosink: split drift-tolerance into alignment-threshold
Felipe Contreras [Sat, 21 May 2011 12:49:20 +0000 (15:49 +0300)]
baseaudiosink: split drift-tolerance into alignment-threshold

So that drift-tolerance is used for clock slaving resync, and
alignment-threshold is for timestamp drift.

12 years agobaseaudiosink: trivial comment fixes
Felipe Contreras [Sat, 21 May 2011 13:02:36 +0000 (16:02 +0300)]
baseaudiosink: trivial comment fixes

Some found by Havard Graff.

Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
12 years agosubtitleoverlay: Use gst_caps_merge() instead of gst_caps_union()
Sebastian Dröge [Fri, 4 Nov 2011 09:37:12 +0000 (10:37 +0100)]
subtitleoverlay: Use gst_caps_merge() instead of gst_caps_union()

This keeps the caps order and is more efficient.

12 years agoplaysinkconvertbin: Use gst_caps_merge() instead of gst_caps_union()
Sebastian Dröge [Fri, 4 Nov 2011 09:36:51 +0000 (10:36 +0100)]
playsinkconvertbin: Use gst_caps_merge() instead of gst_caps_union()

This keeps the caps order and is more efficient.

12 years agoAdd missing default include paths to androgenizer call
Reynaldo H. Verdejo Pinochet [Fri, 4 Nov 2011 00:35:38 +0000 (21:35 -0300)]
Add missing default include paths to androgenizer call

Fixes building tag/ with Android's NDK

12 years agodecodebin2: Post all source pads in stream-topology messages as "element-srcpad"...
Mart Raudsepp [Thu, 3 Nov 2011 12:10:31 +0000 (14:10 +0200)]
decodebin2: Post all source pads in stream-topology messages as "element-srcpad" values

This allows us to easily get ahold of all pads on a stream-topology message, including
pre-decoder ones, while "pad" only gives us access to the raw pads (as used by discoverer).

12 years agodecodebin2: Use existing "caps" quark for one of the structure sets
Mart Raudsepp [Thu, 20 Oct 2011 10:04:52 +0000 (13:04 +0300)]
decodebin2: Use existing "caps" quark for one of the structure sets

12 years agoplaysinkconvertbin: Don't add identity multiple times
Sebastian Dröge [Thu, 3 Nov 2011 09:07:27 +0000 (10:07 +0100)]
playsinkconvertbin: Don't add identity multiple times

12 years agoplaysink: send flush start/stop event when we switch elements
Vincent Penquerc'h [Wed, 19 Oct 2011 13:13:39 +0000 (14:13 +0100)]
playsink: send flush start/stop event when we switch elements

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: re-add identity where appropriate
Vincent Penquerc'h [Wed, 19 Oct 2011 13:13:30 +0000 (14:13 +0100)]
playsink: re-add identity where appropriate

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: lock the new {set,get}_property functions
Vincent Penquerc'h [Wed, 19 Oct 2011 13:12:01 +0000 (14:12 +0100)]
playsink: lock the new {set,get}_property functions

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysinkconvertbin: Be more consistent with ghostpad targets
Thiago Santos [Mon, 17 Oct 2011 23:14:54 +0000 (23:14 +0000)]
playsinkconvertbin: Be more consistent with ghostpad targets

Set up targets on READY->PAUSED state change to passthrough by
default. This prevents the targets from being unset on the
first run, while the 'raw' variable would mean that some
target is set.

12 years agoplaysinkconvertbin: No need to remove the identity
Thiago Santos [Mon, 17 Oct 2011 22:41:49 +0000 (22:41 +0000)]
playsinkconvertbin: No need to remove the identity

The identity element should be handled by the GstBin's cleanup,
removing it on the remove_elements function might remove it
too soon, as this function can be called directly from playsink

12 years agoplaysinkconvertbin: Adding some debug messages
Thiago Santos [Mon, 17 Oct 2011 22:41:11 +0000 (22:41 +0000)]
playsinkconvertbin: Adding some debug messages

Adds a couple debug messages and some g_assert to make debugging
easier

12 years agoplaysink-videoconvert: Fix warning on build
Thiago Santos [Mon, 17 Oct 2011 22:02:03 +0000 (22:02 +0000)]
playsink-videoconvert: Fix warning on build

Remove unused variable

12 years agoplaysink: handle after-the-fact changes in converters/volume booleans
Vincent Penquerc'h [Mon, 17 Oct 2011 21:05:30 +0000 (21:05 +0000)]
playsink: handle after-the-fact changes in converters/volume booleans

The playsink was nastily poking a boolean in the structure.
Make those booleans properties, so we are told when they change,
and rebuild the conversion bin when they do.

Some cleanup to go with it too.

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: handle NULL cached caps in getcaps
Vincent Penquerc'h [Mon, 17 Oct 2011 18:43:06 +0000 (18:43 +0000)]
playsink: handle NULL cached caps in getcaps

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: consider both passthrough and converter caps in getcaps
Vincent Penquerc'h [Mon, 17 Oct 2011 18:06:00 +0000 (18:06 +0000)]
playsink: consider both passthrough and converter caps in getcaps

Since we can switch between both modes.

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: cache inner converter bin caps
Vincent Penquerc'h [Mon, 17 Oct 2011 17:54:27 +0000 (17:54 +0000)]
playsink: cache inner converter bin caps

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: keep both raw and non raw pipelines at all times
Vincent Penquerc'h [Mon, 17 Oct 2011 17:26:48 +0000 (17:26 +0000)]
playsink: keep both raw and non raw pipelines at all times

and switch between them as needed.

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: only compare against the media type we expect
Vincent Penquerc'h [Mon, 17 Oct 2011 17:29:50 +0000 (17:29 +0000)]
playsink: only compare against the media type we expect

ie, audio/x-raw- for audio, video/x-raw- for video.

Add a trailing - to be more specific. I doubt there's anything
like audio/x-rawhide or something, but you never know.

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: refactor the converter bins since they are almost identical
Vincent Penquerc'h [Mon, 17 Oct 2011 16:55:30 +0000 (16:55 +0000)]
playsink: refactor the converter bins since they are almost identical

https://bugzilla.gnome.org/show_bug.cgi?id=661262

12 years agoplaysink: fix passthrough mode (hopefully)
Vincent Penquerc'h [Mon, 17 Oct 2011 13:00:05 +0000 (13:00 +0000)]
playsink: fix passthrough mode (hopefully)

The code was doing counterintuitive rewiring of pads when the
bin did not contain any elements. We now add an identity element
in that case, which makes it simpler, and should fix the AC3
passthrough mode when using pulseaudio (but I don't see the bug
here so can't test).

https://bugzilla.gnome.org/show_bug.cgi?id=661262