Commit graph

805 commits

Author SHA1 Message Date
Sebastian Dröge
67c8b0dfbd audio: Don't crash if NULL positions are passed to gst_audio_info_set_format() 2012-01-10 12:02:56 +01:00
Sebastian Dröge
5cb3d75dbf audiobasesink: Fix infinite recursion by chaining up to the correct parent class vfunc 2012-01-09 14:19:54 +01:00
Sebastian Dröge
bb3eb93ee9 audio: Don't check for channel positions in valid order when converting to a channel mask 2012-01-09 08:24:23 +01:00
Edward Hervey
82da418201 audio: Fix size check
We fail (and return) if the size is *NOT* a multiple of samples.
2012-01-06 15:14:59 +01:00
Wim Taymans
dd43d0697e audio: expose API to convert channel array to a mask 2012-01-05 13:59:32 +01:00
Sebastian Dröge
9e072ea844 audio: Improve/fix handling of NONE layouts 2012-01-05 10:34:25 +01:00
Sebastian Dröge
8dcea5d498 audio: Add support again for more than 64 channels with NONE layouts 2012-01-05 10:34:25 +01:00
Sebastian Dröge
31c9f7d09a audio: Fix GST_AUDIO_CHANNEL_POSITION_MASK macro 2012-01-05 10:34:25 +01:00
Sebastian Dröge
9d56bf7712 audioencoder: Proxy the channel mask field instead of the old channel-layout field 2012-01-05 10:34:24 +01:00
Sebastian Dröge
8fe5dc53e0 audiocdsrc: Add the layout field to the caps 2012-01-05 10:34:24 +01:00
Sebastian Dröge
810bfec656 audio: Add "layout" field to the raw audio caps
This can be used to differentiate between interleaved
and non-interleaved audio and whatever comes in the future.
2012-01-05 10:34:24 +01:00
Sebastian Dröge
e2c6b8ec4d audio: Add function to reorder channel positions from any order to the GStreamer order 2012-01-05 10:34:24 +01:00
Sebastian Dröge
bd40936409 audioringbuffer: Use new function to get a channel reordering map 2012-01-05 10:34:24 +01:00
Sebastian Dröge
9e930a1ade audio: Add documentation for the new functions 2012-01-05 10:34:24 +01:00
Sebastian Dröge
c9c12372a5 audio: Add public functions to check channel positions validity and to get a reorder map 2012-01-05 10:34:24 +01:00
Sebastian Dröge
225238a913 audioringbuffer: Add support for reordering of channels 2012-01-05 10:34:16 +01:00
Sebastian Dröge
c227f5e77e audio: Add new channel positions and simplify channel expression in the caps
The available channel positions are all channels from SMPTE 2036-2-2008
(in that order) and DTS Coherent Acoustics, which are basically all 28
channels that currently can appear.

The channels are now expressed in the caps as a channel-mask, which
describes which of the channels are present, and an optional
channel-reorder-map, which must only be used after negotiation for
fixated caps.

For negotiation only the channel-mask and the channel count is relevant
and all elements are expected to handle all reorder maps. Elements that
don't can use the new API to reorder an audio buffer from any order to
another order.

This simplifies negotiation a lot while still having as few reorderings
necassary as possible and still allow all kinds of channel layouts.
2012-01-05 10:27:21 +01:00
Wim Taymans
e9eaf17eae audioencoder: turn assert into a real error
Post a real error instead of just asserting. Fixes a unit test.
2012-01-02 15:42:39 +01:00
Tim-Philipp Müller
26e612aeda playback, mixerutils: gst_registry_get_default() -> gst_registry_get() 2012-01-02 14:32:11 +00:00
Wim Taymans
ed6fd4eb2f audio: add flag for unpositioned layout
Check if thr layout is explicitly unpositioned and set a flag in the
audio info structure.
2012-01-02 15:01:58 +01:00
Tim-Philipp Müller
c3e6e23b85 audio, rtsp: remove private/protected gtk-doc markup for enums
This confuses glib-mkenums, and is not really useful anyway.

https://bugzilla.gnome.org/show_bug.cgi?id=666618
2012-01-02 00:19:57 +00:00
Tim-Philipp Müller
d877ef13f5 docs: make gtk-doc happier 2011-12-30 19:24:09 +00:00
Tim-Philipp Müller
62e5a67376 audiocdsrc: remove some probing-related vfuncs
GstPropertyProbe was removed, so these aren't actually used
and we probably want something different for the new API.
2011-12-30 16:26:47 +00:00
Tim-Philipp Müller
6a85353a92 audiocdsrc: update for GstIndex removal 2011-12-30 16:18:39 +00:00
Tim-Philipp Müller
31890ef59b audiocdsrc: make private bits private 2011-12-30 16:12:30 +00:00
Edward Hervey
f562a29284 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/theora/gsttheoraenc.c
	gst-libs/gst/tag/gstexiftag.c
	gst/adder/gstadder.c
	gst/adder/gstadder.h
	gst/playback/gstdecodebin2.c
	gst/playback/gstsubtitleoverlay.c
	tests/check/libs/tag.c
2011-12-30 13:21:35 +01:00
Tim-Philipp Müller
3dfdd6be9d audioringbuffer: rename GST_BUFTYPE_* to GST_AUDIO_RING_BUFFER_FORMAT_TYPE_*
Bit unwieldy, but more appropriate. Could also be moved into
audio.h as GstAudioFormatType.
2011-12-25 21:38:21 +00:00
Tim-Philipp Müller
80095caa40 audioringbuffer: remove unused GstAudioRingBufferSegState enum and field 2011-12-25 21:23:11 +00:00
Mark Nauwelaerts
e3c78ff661 audioencoder: add a few more debug statements 2011-12-22 16:58:37 +01:00
Mark Nauwelaerts
9bfa65b7d3 audiodecoder: tweak documentation 2011-12-22 16:58:34 +01:00
Wim Taymans
ddc05e0ed1 propertyprobe: remove propertyprobe
Remove the propertyprobe interface
Improve docs
2011-12-21 11:58:53 +01:00
Sebastian Dröge
2760dd2068 audiobasesrc: Use guint8 instead of guchar 2011-12-20 14:36:28 +01:00
Sebastian Dröge
338622fe7e audioringbuffer: Use guint8 instead of guchar 2011-12-20 14:36:28 +01:00
Mark Nauwelaerts
c41f3cbef0 audiodecoder: set a non-zero default maximum tolerated errors
Whereas the previous default 0 was backwards compatible in that it lead
to erroring out immediately upon any error, elements that are really
ported and using the base class error macro can be assumed to intend to
improve behaviour rather than maintaining the old one.  So, make it easy
on those and any future one and tolerate some errors by default, as intended.

Fixes #666579.
2011-12-20 12:50:18 +01:00
Wim Taymans
7505b7a55c add audio metadata
Add some audio metadata to describe a downmix matrix.
Add metadata to media type document.
2011-12-20 12:02:25 +01:00
Vincent Penquerc'h
12be1e6fc5 baseaudiosink: fix late buffer leak 2011-12-13 12:55:45 +00:00
Tim-Philipp Müller
fb6d09055a Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/alsa/gstalsadeviceprobe.c
	ext/alsa/gstalsamixer.c
	ext/pango/gsttextoverlay.c
	ext/pango/gsttextoverlay.h
	gst-libs/gst/audio/gstaudiobasesink.c
	gst-libs/gst/audio/gstaudioringbuffer.c
	gst-libs/gst/audio/gstaudiosrc.c
	gst-libs/gst/video/Makefile.am
	gst-libs/gst/video/video.c
	gst/encoding/gststreamcombiner.c
	gst/encoding/gststreamsplitter.c
	gst/playback/gstplaybasebin.c
	gst/playback/gststreamsynchronizer.c
	gst/playback/gstsubtitleoverlay.c
	gst/playback/gsturidecodebin.c
	sys/xvimage/xvimagesink.c
	tests/examples/Makefile.am
	win32/common/libgstvideo.def

Video overlay composition disabled for now, needs
porting to buffer meta.
2011-12-08 01:19:03 +00:00
Wim Taymans
f096b8a8d8 ringbuffer: remove old _full version 2011-12-06 15:06:12 +01:00
Wim Taymans
9e97260c9f fix for basesrc changes 2011-12-06 13:59:11 +01:00
Tim-Philipp Müller
5440ae3c18 Suppress deprecation warnings in selected files, for g_static_rec_mutex_* mostly
GStaticRecMutex is part of our API/ABI, not much we can do here
in 0.10 for most of these.
2011-12-04 20:50:25 +00:00
Tim-Philipp Müller
0d98aa25b8 Work around deprecated thread API in glib master
Add private replacements for deprecated functions such as
g_mutex_new(), g_mutex_free(), g_cond_new() etc., mostly
to avoid the deprecation warnings. We'll change these
over to the new API once we depend on glib >= 2.32.

Replace g_thread_create() with g_thread_try_new().
2011-12-04 17:16:30 +00:00
Wim Taymans
1225aa9a78 update for basesink event handler changes 2011-12-02 22:24:43 +01:00
Tim-Philipp Müller
177525f89f Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst-libs/gst/netbuffer/gstnetbuffer.c
	gst/ffmpegcolorspace/avcodec.h
	gst/ffmpegcolorspace/gstffmpegcodecmap.c
	gst/ffmpegcolorspace/imgconvert.c
	gst/ffmpegcolorspace/imgconvert_template.h
	gst/ffmpegcolorspace/mem.c
	gst/playback/README
	gst/playback/gstplaybasebin.c
	gst/playback/gstplaybasebin.h
	gst/playback/gstplaybin.c
	sys/v4l/v4lmjpegsrc_calls.c
	sys/v4l/videodev_mjpeg.h
	tests/check/elements/gnomevfssink.c
2011-12-02 11:10:17 +00:00
Piotr Fusik
14644457b0 various: typo fixes
Fix typos in code and docs. Fixes. #658984
2011-12-02 12:03:27 +01:00
Wim Taymans
59113af604 Use the new GstSample for snapshots
Make appsink return a GstSample. Remove the pull_buffer_list method because it
is not very useful anymore.
Pass GstSample to the conversion function.
Update playbin2 and examples
2011-12-01 16:53:11 +01:00
Edward Hervey
e44db979f9 audio: Add audio-marshal.list to dist-ed files 2011-11-30 11:33:41 +01:00
Wim Taymans
47cbb230e9 audio: move audio interfaces
Move the audio related interfaces to the audio library.
2011-11-30 07:57:02 +01:00
Tim-Philipp Müller
0c056a04fe Merge commit '4a58223e4c824fedc024af435337a769e8ce593e' into 0.11 2011-11-28 21:20:10 +00:00
Wim Taymans
5b868bd424 Update for indexable change 2011-11-28 18:24:03 +01:00
Wim Taymans
468d1dde89 audio: update for clock provider API change 2011-11-28 17:51:41 +01:00
Mark Nauwelaerts
4a58223e4c audioencoder: elaborate some documentation 2011-11-28 11:37:33 +01:00
Mark Nauwelaerts
9f57d91137 audiodecoder: add some documentation 2011-11-28 11:37:27 +01:00
Mark Nauwelaerts
856a5dd581 audiodecoder: really discard NULL decoded frame altogether
... including any timestamp, rather than having that one influence base_ts.
2011-11-28 11:37:23 +01:00
Tim-Philipp Müller
32b14c6ed3 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	ext/vorbis/gstvorbisenc.c
	gst/playback/gstdecodebin2.c
	gst/playback/gstplaysinkconvertbin.c
	gst/videorate/gstvideorate.c
2011-11-26 12:12:59 +00:00
Tim-Philipp Müller
a0639dad38 audio: remove unstable API guards from the audio decoder and encoder base classes 2011-11-25 13:11:54 +00:00
Matej Knopp
817f39608c Fix printf format compiler warnings for OSX / 64bit
https://bugzilla.gnome.org/show_bug.cgi?id=662607
2011-11-22 01:00:59 +00:00
Wim Taymans
8fc2a21775 update for activation changes 2011-11-21 13:35:34 +01:00
Wim Taymans
d0bd5f04c0 update for new scheduling query 2011-11-18 17:58:58 +01:00
Wim Taymans
1ad4d20607 add parent to activate functions 2011-11-18 13:56:04 +01:00
Wim Taymans
285702a1a6 fix for scheduling mode rename 2011-11-18 12:37:10 +01:00
Wim Taymans
7afdff3575 Merge branch 'master' into 0.11
Conflicts:
	gst-libs/gst/audio/gstaudiodecoder.c
2011-11-17 17:07:41 +01:00
Wim Taymans
e302833e65 add parent to pad functions 2011-11-17 12:48:25 +01:00
Mark Nauwelaerts
69c2c46472 audioencoder: invalidate format info when setup negotiation failed
... which ensures nothing subsequently tries to slip past _chain
and into a possibly improperly setup subclass.
2011-11-16 19:03:47 +01:00
Vincent Penquerc'h
f17f918b75 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.
2011-11-16 16:54:03 +00:00
Wim Taymans
2202511e77 add parent to query function 2011-11-16 17:25:17 +01:00
Wim Taymans
28157e6f21 _query_peer_*() -> _peer_query_*() 2011-11-15 18:04:17 +01:00
Wim Taymans
ab9ffa93f5 change getcaps to query
Add sink and src event functions in rtpbasepayload
Add query vmethod to rtpbasepayload.
2011-11-15 18:04:16 +01:00
Vincent Penquerc'h
3e095382a1 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.
2011-11-15 13:29:31 +00:00
Robert Swain
a23dff1fbb audio: Remove some unused variables 2011-11-14 12:49:50 +01:00
Mark Nauwelaerts
38615abdd8 audiodecoder: improve reverse playback
... by doing some more (reverse) timestamp interpolating and
refactoring downstream pushing.

Fixes #661983.
2011-11-14 12:00:06 +01:00
Tim-Philipp Müller
c76e5804b3 Update for GstURIHandler get_protocols() changes 2011-11-13 23:44:23 +00:00
Tim-Philipp Müller
455f337e3d gio, appsrc, appsink, cdaudiosrc: update for GstURIHandler API changes 2011-11-13 18:22:06 +00:00
Tim-Philipp Müller
4b0dce5148 Merge remote-tracking branch 'origin/master' into 0.11
Conflicts:
	gst-libs/gst/audio/Makefile.am
	gst-libs/gst/audio/audio.h
	tests/examples/seek/jsseek.c
	tests/examples/seek/seek.c
	tests/icles/test-colorkey.c
2011-11-13 13:36:29 +00:00
Tim-Philipp Müller
cd21e69913 audio: add GST_AUDIO_INFO_IS_VALID macro and use in audio decoder base class
API: GST_AUDIO_INFO_IS_VALID
2011-11-13 13:18:16 +00:00
Tim-Philipp Müller
394b1f8c3c audio: fix order in LIBADD
Local libs must come first.
2011-11-12 12:13:05 +00:00
Tim-Philipp Müller
756c9e2948 audio: fix order in LIBADD
Local libs must come first.
2011-11-12 11:58:59 +00:00
Tim-Philipp Müller
dfc13ec632 cdda: rename GstCddaBaseSrc to GstAudioCdSrc and move to libgstaudio
Another mini-lib down, to make space for new mini libs.

Remove bogus copyright line while at it.
2011-11-12 11:58:58 +00:00
Wim Taymans
c42e257751 audio: fix docs 2011-11-11 19:13:52 +01:00
Wim Taymans
b645287775 audio: fix headers
Add const to some methods.
Add padding.
Add GType for GstAudioInfo and GstAudioFormatInfo.
Add new/copy/free for GstAudioInfo.
2011-11-11 17:53:03 +01:00
Wim Taymans
a3416bc11f rename baseaudio* -> audiobase* 2011-11-11 12:00:52 +01:00
Wim Taymans
ee7072fe7e rename GstBaseAudio* ->GstAudioBase* 2011-11-11 11:52:47 +01:00
Wim Taymans
3d0ac3ded2 rename files to match contained objects 2011-11-11 11:33:15 +01:00
Wim Taymans
6511f36fdb audio: GstRingBuffer -> GstAudioRingBuffer 2011-11-11 11:21:41 +01:00
Wim Taymans
b81af23992 audio: rename internal audio ringbuffer 2011-11-11 10:54:39 +01:00
Wim Taymans
ad8f694ec6 remove bogus files
They got somehow commited in 7012e88090
2011-11-11 10:39:52 +01:00
Wim Taymans
e338792ab0 update for adapter api changes 2011-11-10 18:32:39 +01:00
Wim Taymans
f8ef57ca48 Merge branch 'master' into 0.11 2011-11-10 17:26:12 +01:00
Vincent Penquerc'h
0d47c615ad baseaudiosink: make unsigned properties unsigned, not signed 2011-11-10 15:55:31 +00:00
Wim Taymans
57eaf388e0 audio: fix base class vmethods 2011-11-10 16:24:12 +01:00
Wim Taymans
ea9bc40bf9 audiosrc: avoid deadlock 2011-11-10 16:05:19 +01:00
Wim Taymans
1f8fe283f6 audioclock: remove _full version 2011-11-10 13:51:23 +01:00
Wim Taymans
d77c8cafee Merge branch 'master' into 0.11
Conflicts:
	common
	ext/pango/gsttextoverlay.c
	gst-libs/gst/video/video.c
2011-11-09 12:11:59 +01:00
Wim Taymans
372b9329b9 remove query types 2011-11-09 11:47:54 +01:00
Tim-Philipp Müller
d7fc45f42e docs: fix up some Since: markers 2011-11-07 23:05:44 +00:00
Wim Taymans
7ac25e9b26 Merge branch 'master' into 0.11
Conflicts:
	common
	configure.ac
	gst-libs/gst/audio/gstbaseaudiosink.c
	gst/playback/gstdecodebin2.c
	gst/playback/gstplaysinkaudioconvert.c
	gst/playback/gstplaysinkaudioconvert.h
	gst/playback/gstplaysinkvideoconvert.c
	gst/playback/gstplaysinkvideoconvert.h
2011-11-07 12:23:15 +01:00
Felipe Contreras
3df415d4c7 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>
2011-11-07 11:58:46 +01:00
Felipe Contreras
0a111bf26e 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.
2011-11-07 11:33:32 +01:00
Felipe Contreras
3f1395afae baseaudiosink: rename some variables 2011-11-07 11:18:34 +01:00
Felipe Contreras
fbde258be6 baseaudiosink: use gst_util_uint64_scale_int when appropriate
It's probably safer this way.
2011-11-07 11:11:08 +01:00
Felipe Contreras
369cf3f14a baseaudiosink: split drift-tolerance into alignment-threshold
So that drift-tolerance is used for clock slaving resync, and
alignment-threshold is for timestamp drift.
2011-11-07 11:10:05 +01:00