Commit graph

182 commits

Author SHA1 Message Date
Wim Taymans
dae848818d audio: rework audio caps.
Rework the audio caps similar to the video caps. Remove
width/depth/endianness/signed fields and replace with a simple string
format and media type audio/x-raw.
Create a GstAudioInfo and some helper methods to parse caps.
Remove duplicate code from the ringbuffer and replace with audio info.
Use AudioInfo in the base audio filter class.
Port elements to new API.
2011-08-18 19:15:03 +02:00
Wim Taymans
33467d9629 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/pango/gsttextoverlay.c
	ext/theora/gsttheoradec.c
	gst/adder/gstadder.c
	gst/adder/gstadder.h
	gst/audioresample/gstaudioresample.c
	gst/encoding/gstencodebin.c
	gst/playback/gstdecodebin.c
	gst/playback/gstdecodebin2.c
	tests/check/elements/decodebin2.c
	tests/check/elements/playbin-compressed.c
	win32/common/libgsttag.def
2011-08-16 18:01:14 +02:00
Josep Torra
5629ed74b3 Fix debug statements
Fixes build on MacOSX

Signed-off-by: Edward Hervey <edward.hervey@collabora.co.uk>
2011-08-10 11:15:41 +02:00
Stefan Sauer
264d91a502 baseaudiosink: fix latency calculation for live elements
Max_latency was computed on already adjusted min_latency. Introduce a new
variable for clarity. Spotted by Blaise Gassend.
Fixes #644284
2011-07-28 14:31:47 +02:00
Mark Nauwelaerts
68231a645a baseaudiosink: fix max latency calculation
... to allow infinite max, as also claimed by comment.
2011-07-28 12:05:06 +02:00
Mark Nauwelaerts
5d0f279fea baseaudiosink: drop samples that are too late
... rather than having all of them rendered at 0 or subsequently aligned,
likely inevitably leading to repeated resyncing.
2011-07-28 11:47:52 +02:00
Wim Taymans
a3971d2afe baseaudiosink: chain up to parent_class correctly 2011-07-26 12:42:22 +02:00
Wim Taymans
8aea5d34bd baseaudiosink: use new basesink query vmethod 2011-07-26 12:37:04 +02:00
Wim Taymans
a58805216a audio: clean up headers 2011-06-21 18:17:59 +02:00
Wim Taymans
a87c021237 Merge branch 'master' into 0.11
Conflicts:
	gst-libs/gst/video/convertframe.c
2011-05-24 09:47:15 +02:00
Thijs Vermeir
dad50ad1fe baseaudiosink: recalibrate clock on setcaps
Because the spec for the ringbuffer can change when changing
the caps, we must recalibrate the clock.

https://bugzilla.gnome.org/show_bug.cgi?id=610443
2011-05-23 17:02:03 +02:00
Sebastian Dröge
318ed07598 Revert "-base_port to new query API"
This reverts commit c9f4e0676b.
2011-05-17 11:25:31 +02:00
Sebastian Dröge
d0362c2b87 Merge branch 'master' into 0.11
Conflicts:
	configure.ac
	ext/alsa/gstalsasrc.c
	gst-libs/gst/audio/gstbaseaudiosink.c
	gst-libs/gst/tag/gstxmptag.c
	gst/playback/gstsubtitleoverlay.c
	gst/videorate/gstvideorate.c
	sys/xvimage/xvimagesink.c
2011-05-16 17:06:22 +02:00
Wim Taymans
94dfe80f71 -base: port to new SEGMENT API 2011-05-16 13:48:11 +02:00
Arun Raghavan
824e643ec9 baseaudiosink: Fix trivial indentation problems 2011-05-14 18:53:12 +05:30
Arun Raghavan
643e5f586c baseaudiosink: Allow subclasses to provide payloaders
This allows subclasses to provide a "payload" function to prepare
buffers for consumption. The immediate use for this is for sinks that
can handle compressed formats - parsers are directly connected to the
sink, and for formats such as AC3, DTS, and MPEG, IEC 61937 patyloading
might be used.

API: GstBaseAudioSinkClass:payload()

https://bugzilla.gnome.org/show_bug.cgi?id=642730
2011-05-14 18:23:18 +05:30
Wim Taymans
c9f4e0676b -base_port to new query API 2011-05-10 18:39:07 +02:00
Wim Taymans
816f4e791d segment: fix for new core API
Fix for gst_*_segment_full rename.
2011-05-09 18:16:46 +02:00
Sebastian Dröge
f50b3af5d7 audio: Use G_DEFINE_TYPE instead of GST_BOILERPLATE 2011-04-19 10:52:00 +02:00
Wim Taymans
da1c863711 Merge branch 'master' into 0.11
Conflicts:
	gst-libs/gst/tag/gstvorbistag.c
2011-04-04 11:31:33 +02:00
Havard Graff
588ac0ae6f baseaudiosink: don't allow aligning behind the read-segment
Given a large enough drift-tolerance, one could end up in a situation
where one would keep aligning the written buffers behind the current
read-segment position. The result for the reader would be complete
silence, possible preceded by very choppy audio.

By checking the available headroom, one can determine if there is
room to do alignment, or if one should resort to a resync instead to get
the pointers back on track.

Also refactor the alignment-logic out of the render function for cleaner
code.
2011-04-04 09:31:26 +02:00
Wim Taymans
d96a8c1aa7 Merge branch 'master' into 0.11 2011-03-31 17:53:12 +02:00
Mark Nauwelaerts
e73f293ee5 baseaudiosink: arrange for running clock when rendering eos
Commit ba2e500bd9 ensured to provide
a running clock when EOS had finished rendering.  However,
other measures are needed (and were in place before) to ensure a
running clock when EOS still needs rendering (i.e. waiting).

So, specifically, re-introduce eos_rendering removed in aforementioned commit,
this time as a public variable so subclasses can be aware of the situation.

Fixes (part of) #645961.

API: GstBaseAudioSink:eos_rendering
2011-03-31 13:18:53 +02:00
Wim Taymans
d10602fbde audiosink: improve comment 2011-03-28 10:25:38 +02:00
Wim Taymans
3d25a4b470 libs: port to new data API 2011-03-27 13:55:15 +02:00
Wim Taymans
8a786d10be baseaudiosink: use sink preroll lock 2011-03-04 17:25:46 +01:00
Wim Taymans
6aa22111a1 Merge branch 'master' into 0.11 2011-03-04 16:21:13 +01:00
Mark Nauwelaerts
ba2e500bd9 baseaudiosink: start ringbuffer upon going to PLAYING and already EOS
... otherwise we may end up without running clock in PLAYING.

Fixes #636886.
2011-03-04 14:10:30 +01:00
Wim Taymans
65ba216b8c baseaudiosink: remove deprecated method 2011-02-28 11:50:03 +01:00
Felipe Contreras
21d1e2ded0 baseaudiosink: trivial cleanups
It seems these stuff was neglected from commmit d8942e2.

Signed-off-by: Felipe Contreras <felipe.contreras@nokia.com>
2011-01-30 15:40:53 +02:00
Tim-Philipp Müller
9c9afee1cf baseaudiosink: default to enable-last-buffer=FALSE for audio sinks
There isn't really any good reason to get the last buffer from an
audio sink, so don't make the sink keep it around unnecessarily.
2011-01-02 17:21:54 +00:00
Havard Graff
60ff7c0eb4 baseaudiosink: protect against ringbuffer disappearing while in a query
Observed a case where the sink went to null-state during the query,
hence the ringbuffer-pointer was NULL, causing a crash.

Moving the ringbuffer-check code until after the query, and hold the
lock during the check and while using the spec-values. It should not matter
to the query wether the ringbuffer is present or not, and it actually
gets a time bit more time to get the ringbuffer set up in this case!

Fixes #635231
2010-12-29 12:29:40 +01:00
Tim-Philipp Müller
751c34bffc audio: make public get_type() functions thread-safe 2010-10-08 11:34:58 +01:00
Tim-Philipp Müller
6b7af81e30 audio: fix enum value name in enums that are public API
So run-time bindings can introspect the names correctly (we abuse this
field as description field only in elements, not for public API
(where the description belongs into the gtk-doc chunk).

https://bugzilla.gnome.org/show_bug.cgi?id=629746
2010-10-08 11:34:58 +01:00
Wim Taymans
84dba3698d baseaudiosink: add Since markers
Fixes #630443
2010-09-24 13:09:28 +02:00
Havard Graff
3067a83df2 baseaudiosink: Added getter and setter for drift tolerance. 2010-09-24 13:06:35 +02:00
Wim Taymans
c89082b2dd baseaudiosink: subtract the render_delay from our latency
The latency reported by the base class includes the render_delay, which we don't
want to include when we start slaving our clocks.

See #630441
2010-09-24 12:54:47 +02:00
Wim Taymans
24226284b8 baseaudio: avoid taking extra ref on sink/src
Don't take an extra ref on the sink and source because that creates a reference
cycle. Instead, use the invalidate method of the clock when the sink and source
are freed. This way, we don't call into the time function anymore after the
objects are disposed.
2010-09-07 18:12:38 +02:00
Sebastian Dröge
b296c96169 baseaudiosink/baseaudiosrc: Post CLOCK-LOST/CLOCK-PROVIDE when going to/from READY
Otherwise the clocks are redistributed every time the pipeline
goes to PAUSED, which is quite expensive.
2010-08-04 15:19:42 +02:00
Sebastian Dröge
ed271ff809 baseaudiosink: Post clock-provide and clock-lost messages when going from/to PLAYING 2010-07-16 17:40:45 +02:00
Sebastian Dröge
f1ac770f1b baseaudiosink: Use new gst_audio_clock_new_full() 2010-07-16 17:40:45 +02:00
Sebastian Dröge
a5c35621c3 Revert "baseaudiosink: Allocate and free the clock in NULL->READY and reverse"
This reverts commit cea2644ed8.

Many audio sink assume that they can create a clock in
the instance init function and it will be there forever
and not be cleared by the state change functions.
2010-06-03 13:44:40 +02:00
Sebastian Dröge
cea2644ed8 baseaudiosink: Allocate and free the clock in NULL->READY and reverse 2010-06-03 10:23:22 +02:00
Mark Nauwelaerts
dcc4b25686 baseaudiosink: arrange for a running ringbuffer/clock for _wait_eos
Fixes #612223.
2010-03-16 15:30:12 +01:00
Tim-Philipp Müller
848a7f2868 baseaudiosink: increase default drift tolerance to fix glitches with WMA
Increase default drift tolerance to 40ms to avoid glitches with decoders
or formats where there's a lot of timestamp jitter for some reason or
another (in this case: asf/wma), at least until we implement timestamp
smoothing.
2009-12-20 23:19:41 +00:00
Wim Taymans
75c5aed1ba audiosink: add adjustement when slaving
Our calibration against the pipeline clock is done with the adjusted
ringbuffer time, so take the adjustement into account. Fixes some audio dropouts
when reusing audio sinks after switching clocks and slaving methods in a
pipeline.
2009-11-25 10:26:16 -06:00
Wim Taymans
0e6b9e596d baseaudiosink: fix initial calibration
When we are calibrating the internal clock against the external clock take into
account the time offset applied to our internal clock because we will subtract
that in the render_function again.
2009-11-18 17:11:03 +01:00
Wim Taymans
d8942e2850 baseaudiosink: make drift tolerance configurable
Add drift-tolerance property (defaulting to 20ms) to handle resync after clock
drift or timestamp drift instead of relying on the latency-time value for clock
drift and 500ms for timestamp drift.
Remove warning about discont timestamp and simply resync. The warning is in some
cases not correct and is triggered more frequently now that we lower the
tolerance value.
2009-11-04 16:16:31 +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
35cddfb1e3 baseaudiosink: add ugly backward compat hack
Check for pulsesink < 0.10.17 because it includes code that is now included in
baseaudiosink. Disable that code in baseaudiosink to be compatible with the
older version.
2009-09-10 12:40:01 +02:00