Commit graph

89 commits

Author SHA1 Message Date
Wim Taymans
ca6ebee870 ringbuffer: store info so we can debug it 2011-09-28 16:07:53 +02:00
Wim Taymans
c6758ecfa9 audio: move function to convert 2011-08-22 16:11:27 +02:00
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
d9e1e23094 audio: clean up ringbuffer header 2011-06-21 18:08:12 +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
Arun Raghavan
623e8781ab baseaudiosink: Use g_str_equal() instead of strncmp()
The strncmp is unnecessary anyway since one of the strings is a const
string.
2011-05-14 18:53:12 +05:30
Arun Raghavan
9615081f9c ringbuffer: Add support for E-AC3
Adds support for pushing E-AC3 buffers and doing bytes-to-ms conversion
correctly. The assumption (as with other formats) is that something like
IEC 61937 payloading will be used. Correspondingly the ringbuffer spec
is populated so that the data rate is 4x normal AC3.

https://bugzilla.gnome.org/show_bug.cgi?id=642730
2011-05-14 18:21:23 +05:30
Arun Raghavan
193fbf93a9 ringbuffer: Add support for MPEG audio buffers 2011-05-14 18:21:16 +05:30
Arun Raghavan
33ef9ab054 ringbuffer: Add support for DTS buffers 2011-05-14 16:53:33 +05:30
Sebastian Dröge
0759ce8533 Merge branch 'master' into 0.11 2011-04-18 13:23:32 +02:00
Håvard Graff
d9f1b3736e ringbuffer: make sure to not start if the may_start flag is FALSE
Fixes #635784
2011-04-18 11:40:06 +02:00
Wim Taymans
3d25a4b470 libs: port to new data API 2011-03-27 13:55:15 +02:00
Sebastian Dröge
550d59354f ringbuffer: Use G_DEFINE_ABSTRACT_TYPE instead of manual GObject boilerplate code
This also makes the _get_type() function threadsafe.

Fixes bug #630440.
2010-09-23 23:58:50 +02:00
Wim Taymans
f9404c0b27 ringbuffer: improve debugging 2010-08-04 10:33:32 +02:00
Wim Taymans
2ced0a3d5d ringbuffer: check for ringbuffer state first
Check for the state of the ringbuffer before doing the checks of the other
buffer properties, when we're not started, we don't care about those values.
2010-06-25 17:21:57 +02: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
Josep Torra
ccec231d2b audio: fix warnings building on macosx 2009-10-09 14:09:02 +02:00
Tim-Philipp Müller
e4e8417eeb ringbuffer: fix build against core that has debugging disabled
The macro is called GST_DISABLE_GST_DEBUG, not GST_DISABLE_DEBUG.
2009-09-11 10:03:56 +01:00
Stefan Kost
312d7d8014 ringbuffer: add human readable format names when logging
Add string array with human readable names for format and type to be used in log
statements.
2009-09-10 23:01:36 +03:00
Wim Taymans
70f01fd797 ringbuffer: add more debug 2009-09-09 16:16:40 +02:00
Eero Nurkkala
8ad8591e41 ringbuffer: Improve audiosink startup performance
When we start the ringbuffer, immediatly continue processing samples if the
writer prepared some for us.

Fixes #545807
2009-08-24 13:30:11 +02:00
Edward Hervey
9329b8be72 gst-libs: Remove dead assignments and resulting unused variables. 2009-08-08 15:54:57 +02:00
Wim Taymans
8601862e27 ringbuffer: add vmethod to clear the ringbuffer
Add a vmethod so that subclasses can be notified when they should clear the data
in the ringbuffer.
2009-06-29 15:17:25 +02:00
Wim Taymans
a9c82f9472 ringbuffer: handle border cases in resampler 2009-06-11 19:13:28 +02:00
Wim Taymans
e6798c5cce ringbuffer: allow for custom commit functions
Allow subclasses to override the commit method.
2009-04-09 18:04:44 +02:00
Stefan Kost
251e4d160a docs: don't put random stuff in tags.
Tags like Since: or Returns: can only be followed by more tags. gtk-doc has no
tag to append text again to the documentation body.
2009-02-26 10:09:59 +02:00
Wim Taymans
a6b78893c0 Add methods to more accuratly control the pulling thread of a ringbuffer.
Original commit message from CVS:
* docs/libs/gst-plugins-base-libs-sections.txt:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_convert),
(gst_ring_buffer_activate), (gst_ring_buffer_is_active):
* gst-libs/gst/audio/gstringbuffer.h:
Add methods to more accuratly control the pulling thread of a
ringbuffer.
Add format conversion helper code to the ringbuffer.
API: GstRingBuffer:gst_ring_buffer_activate()
API: GstRingBuffer:gst_ring_buffer_is_active()
API: GstRingBuffer:gst_ring_buffer_convert()
2008-10-17 13:19:05 +00:00
Wim Taymans
7bd29abb9d gst-libs/gst/audio/gstringbuffer.c: In pull mode we want the callback to prepull a buffer we can preroll on even when...
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_prepare_read):
In pull mode we want the callback to prepull a buffer we can preroll on
even when we are not yet playing.
2008-10-16 15:38:50 +00:00
Wim Taymans
440432612b gst-libs/gst/audio/gstringbuffer.c: Also allow the case where the ringbuffer was paused when we try to stop it so tha...
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_start),
(gst_ring_buffer_stop):
Also allow the case where the ringbuffer was paused when we try to stop
it so that the basesrc stop function is still called.
2008-08-26 15:45:36 +00:00
Wim Taymans
09f7dee84d gst-libs/gst/audio/gstbaseaudiosink.c: Report the latency with the new seglatency parameter.
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_query):
Report the latency with the new seglatency parameter.
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_debug_spec_buff), (gst_ring_buffer_parse_caps),
(gst_ring_buffer_acquire):
* gst-libs/gst/audio/gstringbuffer.h:
Add new field to the ringbufferspec to specify the expected latency
between the underlying device read/write pointer, this is needed
when writing sinks that sit a little closer to the hardware.
Add some more docs for other fields.
2008-05-07 15:47:03 +00:00
Sebastian Dröge
66bbadadd0 gst-libs/gst/audio/gstringbuffer.c: Use g_atomic_int_set() instead of gst_atomic_int_set().
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_may_start):
Use g_atomic_int_set() instead of gst_atomic_int_set().
2008-04-17 07:33:46 +00:00
Michael Smith
15e209d20e gst-libs/gst/audio/gstringbuffer.*: Rename recently added buffer types to make more sense.
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_parse_caps):
* gst-libs/gst/audio/gstringbuffer.h:
Rename recently added buffer types to make more sense.
* ext/alsa/gstalsasink.c: (alsasink_parse_spec),
(gst_alsasink_write):
Adapt for above API changes.
Fixes bug #520523.
2008-03-12 12:39:13 +00:00
Julien Moutte
f0154849b0 ext/alsa/gstalsa.c: Probe for IEC958 pcm to detect if we can do SPDIF output.
Original commit message from CVS:
2008-02-29  Julien Moutte  <julien@fluendo.com>

* ext/alsa/gstalsa.c: (gst_alsa_open_iec958_pcm),
(gst_alsa_probe_supported_formats): Probe for IEC958 pcm to
detect
if we can do SPDIF output.
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsasink.c: (set_hwparams), (alsasink_parse_spec),
(gst_alsasink_prepare), (gst_alsasink_close),
(gst_alsasink_write):
* ext/alsa/gstalsasink.h: Initial support for SPDIF.
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_parse_caps):
* gst-libs/gst/audio/gstringbuffer.h: Add non linear buffer
types
to support AC3, EC3 and IEC958 buffers.
2008-02-29 18:44:36 +00:00
Wim Taymans
355e8a940d gst-libs/gst/audio/gstaudiosink.c: Improve debug output.
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiosink.c: (audioringbuffer_thread_func),
(gst_audioringbuffer_open_device),
(gst_audioringbuffer_close_device), (gst_audioringbuffer_acquire),
(gst_audioringbuffer_release), (gst_audioringbuffer_start),
(gst_audioringbuffer_pause), (gst_audioringbuffer_stop),
(gst_audio_sink_create_ringbuffer):
Improve debug output.
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_start),
(gst_ring_buffer_pause), (gst_ring_buffer_delay):
Prevent some functions from doing things and failing when the
ringbuffer is not yet acquired.
2007-12-18 15:56:51 +00:00
Ole André Vadla Ravnås
05a205860d gst-libs/gst/audio/gstringbuffer.c: Return NULL instead of an enum that happens to be 0, fixes warning on MSVC (#4921...
Original commit message from CVS:
Patch by: Ole André Vadla Ravnås  <ole.andre.ravnas@tandberg.com>
* gst-libs/gst/audio/gstringbuffer.c: (build_linear_format),
(gst_ring_buffer_parse_caps):
Return NULL instead of an enum that happens to be 0, fixes warning
on MSVC (#492114).
* gst-libs/gst/audio/gstringbuffer.h:
No trailing commas in enum list (for gcc-2.9x).
* gst/videotestsrc/videotestsrc.c: (random_char):
Make information loss explicit instead of implicitly truncating to
eight bits via the return value.  Fixes runtime error on MSVC when
using the debug CRT (#492114).
* win32/common/config.h.in:
Fix a bunch of '#undef FOO bar', which MSVC doesn't like (#492114).
* win32/common/libgstinterfaces.def:
* win32/common/libgstrtp.def:
Export a few more symbols (#492114).
2007-11-01 12:51:57 +00:00
Wim Taymans
85c7eeecc3 gst-libs/gst/audio/: Improve debugging.
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiosink.c: (audioringbuffer_thread_func):
* gst-libs/gst/audio/gstaudiosrc.c: (audioringbuffer_thread_func):
Improve debugging.
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_query), (gst_base_audio_sink_event),
(gst_base_audio_sink_render), (gst_base_audio_sink_async_play):
Improve latency and clock slaving calculations.
Improve slave clock calibration.
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_commit_full):
When we are asked to render N sample to 0 bytes, return N.
2007-03-01 17:01:43 +00:00
Wim Taymans
62ef7da73b Small documentation updates/fixes
Original commit message from CVS:
* ext/theora/theoradec.c:
* ext/vorbis/vorbisdec.c:
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_commit_full):
* gst-libs/gst/audio/gstringbuffer.h:
* gst-libs/gst/rtp/gstrtpbuffer.c:
* gst-libs/gst/tag/gstvorbistag.c:
Small documentation updates/fixes
2007-01-09 11:15:57 +00:00
Wim Taymans
0990cbf274 gst-libs/gst/audio/gstbaseaudiosink.*: Make the clock sync code more accurate wrt resampling and playback at differen...
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_event), (gst_base_audio_sink_render):
* gst-libs/gst/audio/gstbaseaudiosink.h:
Make the clock sync code more accurate wrt resampling and playback
at different rates.
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_commit_full), (gst_ring_buffer_commit):
* gst-libs/gst/audio/gstringbuffer.h:
Use better algorithm to interpolate sample rates.
2006-11-13 17:30:17 +00:00
Wim Taymans
1166abbc99 gst-libs/gst/audio/gstbaseaudiosink.*: Extract rate from the NEWSEGMENT event.
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_event), (gst_base_audio_sink_render):
* gst-libs/gst/audio/gstbaseaudiosink.h:
Extract rate from the NEWSEGMENT event.
Use commit_full to also take rate adjustment into account when writing
samples to the ringbuffer.
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_commit_full), (gst_ring_buffer_commit),
(gst_ring_buffer_read):
* gst-libs/gst/audio/gstringbuffer.h:
Added _commit_full() to also take rate into account.
Use simple interpolation algorithm to resample audio.
API: gst_ring_buffer_commit_full()
* tests/examples/seek/scrubby.c: (speed_cb), (do_seek):
* tests/examples/seek/seek.c: (segment_done):
Don't try to seek with 0.0 rate, just pause instead.
Remove bogus debug line.
2006-10-18 13:42:49 +00:00
Wim Taymans
1980f16731 gst-libs/gst/audio/gstbaseaudiosink.c: Add some more info in a WARNING.
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_render):
Add some more info in a WARNING.
* gst-libs/gst/audio/gstbaseaudiosrc.c:
(gst_base_audio_src_create):
Handle PAUSE in create function, use new -core addition to
wait for playing. Fixes pausing and resuming capture from an
audiosrc.
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_commit),
(gst_ring_buffer_read):
Constify some more.
Caller supports interrupted reads now.
2006-09-27 13:52:14 +00:00
Wim Taymans
59b7c3104f gst-libs/gst/audio/gstringbuffer.c: Early morning compilation fix.
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_samples_done), (gst_ring_buffer_commit),
(gst_ring_buffer_read):
Early morning compilation fix.
2006-09-21 05:12:18 +00:00
Wim Taymans
65b1938b38 gst-libs/gst/audio/: Do the delay calculation in the source/sink base classes as this is specific for the capture/pla...
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_get_time), (gst_base_audio_sink_callback):
* gst-libs/gst/audio/gstbaseaudiosrc.c:
(gst_base_audio_src_get_time), (gst_base_audio_src_fixate),
(gst_base_audio_src_get_times), (gst_base_audio_src_get_offset),
(gst_base_audio_src_create), (gst_base_audio_src_change_state):
Do the delay calculation in the source/sink base classes as this is
specific for the capture/playback mode.
Try to fixate a bit better, like round depth up to a multiple of 8
bigger than width.
Handle underruns correctly by marking DISCONT on buffers and adjusting
timestamps to handle the gap.
Set offset/offset_end correctly on buffers.
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_pause),
(gst_ring_buffer_samples_done), (gst_ring_buffer_commit),
(gst_ring_buffer_read):
Remove resync and underrun recovery from the ringbuffer.
Fix ringbuffer read code on under/overrun.
2006-09-15 14:53:44 +00:00
Wim Taymans
19cd03c607 ext/alsa/gstalsasink.c: Don't try to calculate silence samples, base class does this much better now.
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (set_hwparams), (gst_alsasink_prepare):
Don't try to calculate silence samples, base class does this much
better now.
* gst-libs/gst/audio/gstringbuffer.c: (build_linear_format),
(gst_ring_buffer_debug_spec_caps), (gst_ring_buffer_parse_caps),
(gst_ring_buffer_acquire):
Calculate silence samples correctly.
* gst-libs/gst/audio/gstringbuffer.h:
Add _CAST macro.
2006-07-24 14:34:42 +00:00
Wim Taymans
843202b51c gst-libs/gst/audio/gstaudiosink.c: Fix leak.
Original commit message from CVS:
* gst-libs/gst/audio/gstaudiosink.c: (audioringbuffer_thread_func),
(gst_audioringbuffer_finalize), (gst_audioringbuffer_acquire),
(gst_audioringbuffer_release), (gst_audioringbuffer_stop):
Fix leak.
Avoid type casting when we can.
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_dispose):
Fix mem leak.
2006-07-21 10:43:54 +00:00
Wim Taymans
ccee48bb85 Revert last two changes that broke the freeze.
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (set_hwparams), (gst_alsasink_prepare):
* gst-libs/gst/audio/gstringbuffer.c: (build_linear_format),
(gst_ring_buffer_debug_spec_caps), (gst_ring_buffer_parse_caps):
Revert last two changes that broke the freeze.
2006-07-12 11:28:37 +00:00
Wim Taymans
46d86d8005 gst-libs/gst/audio/gstringbuffer.c: Calculate correct silence samples so we don't fill our ringbuffer with noise.
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c: (build_linear_format),
(gst_ring_buffer_debug_spec_caps), (gst_ring_buffer_parse_caps):
Calculate correct silence samples so we don't fill our ringbuffer
with noise.
2006-07-12 10:58:42 +00:00
Stefan Kost
cade791150 docs/libs/: add remaining symbols into correct setions
Original commit message from CVS:
* docs/libs/Makefile.am:
* docs/libs/gst-plugins-base-libs-docs.sgml:
* docs/libs/gst-plugins-base-libs-sections.txt:
* docs/libs/gst-plugins-base-libs.types:
add remaining symbols into correct setions
* gst-libs/gst/audio/gstringbuffer.c:
fix incomplete docs
* gst-libs/gst/audio/gstringbuffer.h:
comment out not yet implemented function
* gst-libs/gst/floatcast/floatcast.h:
* gst-libs/gst/netbuffer/gstnetbuffer.c:
add short descriptions
* gst-libs/gst/interfaces/propertyprobe.c:
fix return value docs
* gst-libs/gst/riff/riff-read.c: (gst_riff_read_chunk):
simplify debug logging
* gst-libs/gst/riff/riff-read.h:
sync function prototype and docs
* gst-libs/gst/rtp/gstbasertpaudiopayload.h:
remove left over symbol
2006-06-16 10:02:25 +00:00
Thomas Vander Stichele
51ca8fe3e1 move last template doc snippets to source code and delete them
Original commit message from CVS:
* docs/libs/tmpl/gstaudio.sgml:
* docs/libs/tmpl/gstcolorbalance.sgml:
* docs/libs/tmpl/gstmixer.sgml:
* docs/libs/tmpl/gstringbuffer.sgml:
* docs/libs/tmpl/gsttuner.sgml:
* docs/libs/tmpl/gstxoverlay.sgml:
* gst-libs/gst/audio/audio.c:
* gst-libs/gst/audio/gstringbuffer.c:
* gst-libs/gst/interfaces/colorbalance.c:
* gst-libs/gst/interfaces/mixer.c:
* gst-libs/gst/interfaces/tuner.c:
* gst-libs/gst/interfaces/xoverlay.c:
move last template doc snippets to source code and delete them
2006-06-07 11:03:03 +00:00
Jan Schmidt
45e06fe704 gst-libs/gst/audio/: Document better the fact that latency_time and buffer_time are values stored in microseconds, an...
Original commit message from CVS:
* gst-libs/gst/audio/gstbaseaudiosink.c:
(gst_base_audio_sink_class_init), (gst_base_audio_sink_setcaps):
* gst-libs/gst/audio/gstbaseaudiosink.h:
* gst-libs/gst/audio/gstringbuffer.c: (gst_ring_buffer_parse_caps),
(gst_ring_buffer_samples_done):
* gst-libs/gst/audio/gstringbuffer.h:
Document better the fact that latency_time and buffer_time are values
stored in microseconds, and not the usual GStreamer nanoseconds.
Change the variables (compatibly) that store them from GstClockTime
to guint64 to make it more clear that they're not storing clock times.
Also, remove the bogus property description that says the user can
specify -1 to get the default value, since that's never been the case.
When computing the default segment size for the ring buffer, make it
an integer number of samples.
When the sub-class indicates a delay greater than the number of
samples we've written return 0 from the audio sink get_time method.
2006-06-03 21:06:49 +00:00
Wim Taymans
04754176a6 gst-libs/gst/audio/gstringbuffer.c: Check arguments passed to public functions instead of crashing.
Original commit message from CVS:
* gst-libs/gst/audio/gstringbuffer.c:
(gst_ring_buffer_set_callback), (gst_ring_buffer_acquire),
(gst_ring_buffer_release), (gst_ring_buffer_is_acquired),
(gst_ring_buffer_set_flushing), (gst_ring_buffer_start),
(gst_ring_buffer_pause), (gst_ring_buffer_stop),
(gst_ring_buffer_delay), (gst_ring_buffer_samples_done),
(gst_ring_buffer_set_sample), (gst_ring_buffer_clear_all),
(gst_ring_buffer_commit), (gst_ring_buffer_read),
(gst_ring_buffer_prepare_read), (gst_ring_buffer_advance),
(gst_ring_buffer_clear), (gst_ring_buffer_may_start):
Check arguments passed to public functions instead of
crashing.
2006-04-28 14:48:11 +00:00