Errors could happen here when the device was removed already
or when something is broken anyway. If errors happen here and
they're propagated, the element can't shutdown cleanly.
Fixes bug #614545.
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.
Original commit message from CVS:
* ext/alsa/gstalsa.h: (GST_CHECK_ALSA_VERSION):
* ext/alsa/gstalsasink.c: (set_swparams):
* ext/alsa/gstalsasrc.c: (set_swparams), (gst_alsasrc_open):
Don't use snd_pcm_sw_params_set_xfer_align() if we're compiling
against libasound >= 1.0.16, since it's been deprecated in
0.10.16, and alignment is always 1 then, apparently. (#512899)
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (gst_alsasink_open):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_open):
'Could not open resource for writing' is not an acceptable
error message when we can't open the audio device (see #492334),
even less so when we're trying to open it to record something.
Original commit message from CVS:
* ext/alsa/gstalsa.c:
* ext/alsa/gstalsadeviceprobe.c:
* ext/alsa/gstalsamixer.c:
* ext/alsa/gstalsasink.c:
* ext/alsa/gstalsasrc.c:
Change alsa alloca's to malloc to fix warnings on gcc-4.2.
Original commit message from CVS:
* ext/alsa/Makefile.am:
There is no GST_PLUGINS_BASE_LIBS defined.
* ext/alsa/gstalsa.c:
* ext/alsa/gstalsasink.c: (gst_alsasink_delay):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_delay):
Add support for ALSA 24-bit formats.
snd_pcm_delay can return an error code, especially
during XRUNS. In that case, the best we can do is assume
delay = 0.
* gst/audioconvert/Makefile.am:
Add flags from -base before any more-remote dependencies.
Original commit message from CVS:
Based on patch by: Julien Puydt <julien.puydt at laposte net>
* ext/alsa/gstalsa.c: (gst_alsa_find_device_name_no_handle),
(gst_alsa_find_device_name):
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsasink.c: (gst_alsasink_get_property):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_get_property):
Improve device-name detection a bit, especially in the case where
the device is not actually open (#405020, #405024). Move common code
into gstalsa.c instead of duplicating it.
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (xrun_recovery), (gst_alsasink_write):
* ext/alsa/gstalsasrc.c: (xrun_recovery), (gst_alsasrc_read):
Use DEBUG_OBJECT more.
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (gst_alsasink_set_property),
(gst_alsasink_open):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_set_property),
(gst_alsasrc_open):
Avoid setting and using a NULL device name.
Print more info when we fail to open a device.
Original commit message from CVS:
Patch by: Michael Sheldon <webmaster at mikeasoft com>
* ext/alsa/gstalsasrc.c:
Add 32 bps to template caps and increase channels range
from [1,2] to [1,MAX]. See #346326.
Original commit message from CVS:
* ext/alsa/gstalsadeviceprobe.c: (gst_alsa_get_device_list),
(gst_alsa_device_property_probe_probe_property),
(gst_alsa_device_property_probe_needs_probe),
(gst_alsa_device_property_probe_get_values),
(gst_alsa_type_add_device_property_probe_interface):
* ext/alsa/gstalsadeviceprobe.h:
* ext/alsa/gstalsamixerelement.c:
(gst_alsa_mixer_element_init_interfaces):
* ext/alsa/gstalsamixerelement.h:
Clean up and simplify alsa device probing. Make it actually work
for multiple classes. Don't cache results any longer.
* ext/alsa/gstalsasink.c: (gst_alsasink_init_interfaces),
(gst_alsasink_init):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_dispose),
(gst_alsasrc_interface_supported), (gst_implements_interface_init),
(gst_alsasrc_init_interfaces), (gst_alsasrc_set_property):
Make alsasink and alsasrc implement the GstPropertyProbe interface
for device probing (#342181).
Patch by: Martin Szulecki <gnomebugzilla at sukimashita com>
Original commit message from CVS:
* ext/alsa/Makefile.am:
* ext/alsa/gstalsa.c: (gst_alsa_detect_rates),
(gst_alsa_detect_formats), (get_channel_free_structure),
(caps_add_channel_configuration), (gst_alsa_detect_channels),
(gst_alsa_probe_supported_formats):
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsasink.c: (gst_alsasink_getcaps):
Refactor and improve caps probing code: probe signedness
when we probe the supported formats/widths; set endianness
to the one we actually probed for (ie. cpu endianness).
* ext/alsa/gstalsasrc.c: (gst_alsasrc_init), (gst_alsasrc_getcaps),
(gst_alsasrc_close):
* ext/alsa/gstalsasrc.h:
Implement caps probing for alsasrc.
Original commit message from CVS:
2006-02-09 Andy Wingo <wingo@pobox.com>
* gst-libs/gst/audio/gstringbuffer.c
(gst_ring_buffer_samples_done): Cast to guint64, fixes an integer
overflow after 13.5 hours of recording. Kapow!
* ext/alsa/gstalsasrc.c (gst_alsasrc_delay): Clamp the delay to
the buffer size -- we don't care about underrun/overrun reporting
right now, just need to return a useful value.
Original commit message from CVS:
* ext/alsa/gstalsasink.c: (gst_alsasink_init), (set_hwparams),
(set_swparams), (gst_alsasink_prepare), (gst_alsasink_unprepare),
(gst_alsasink_close), (gst_alsasink_write), (gst_alsasink_reset):
* ext/alsa/gstalsasrc.c: (gst_alsasrc_init), (set_hwparams),
(set_swparams), (gst_alsasrc_open), (gst_alsasrc_prepare),
(gst_alsasrc_unprepare), (gst_alsasrc_read):
Update all error messages. All of them should either use
the default translated message, or actually provide a
translatable string.
Make the string for channel count problems meaningful.
Original commit message from CVS:
2005-08-22 Andy Wingo <wingo@pobox.com>
* ext/alsa/gstalsasink.c (gst_alsasink_get_property):
* ext/alsa/gstalsasrc.c (gst_alsasrc_get_property): Add a
device-name property.
Original commit message from CVS:
2005-08-22 Andy Wingo <wingo@pobox.com>
* gst-libs/gst/audio/gstaudiosrc.h:
* gst-libs/gst/audio/gstaudiosrc.c: Implement open_device and
close_device in the ring buffer, like gstaudiosink.
* ext/alsa/gstalsamixer.h:
* ext/alsa/gstalsamixer.c: Not a GObject any more. Include a nifty
macro to implement the interface without much code. Cleanups.
* ext/alsa/gstalsasrc.h:
* ext/alsa/gstalsasrc.c: Be a mixer. Open device and mixer in
READY.
* ext/alsa/Makefile.am: Add new files.
* ext/alsa/gstalsamixerelement.c:
* ext/alsa/gstalsamixerelement.c: Split element code out from
mixer code so that alsasrc can be a mixer too.
Original commit message from CVS:
* ext/alsa/gstalsa.c: (gst_alsa_start), (gst_alsa_xrun_recovery):
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsasrc.c: (gst_alsa_src_init),
(gst_alsa_src_update_avail), (gst_alsa_src_loop):
Use alsa trigger_tstamp to get the timestamp of the first
sample in the buffer for more precise sync. Some cleanups.
Original commit message from CVS:
* ext/alsa/gstalsa.c: (gst_alsa_change_state), (gst_alsa_start),
(gst_alsa_xrun_recovery):
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsasink.c: (gst_alsa_sink_check_event),
(gst_alsa_sink_loop), (gst_alsa_sink_get_time):
* ext/alsa/gstalsasrc.c: (gst_alsa_src_init),
(gst_alsa_src_get_time), (gst_alsa_src_update_avail),
(gst_alsa_src_loop):
Add clock to alsasrc. Take new capture timestamp when
restarting after an overrun. Split up some functions between
alsasrc ans alsasink.
Original commit message from CVS:
* ext/alsa/gstalsa.c: (gst_alsa_get_time), (gst_alsa_clock_update),
(gst_alsa_change_state), (gst_alsa_update_avail),
(gst_alsa_xrun_recovery):
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
Cleanups, take queued samples into account when reporting
the time.
Original commit message from CVS:
* ext/alsa/gstalsa.c: (gst_alsa_init), (gst_alsa_dispose),
(gst_alsa_get_time), (gst_alsa_xrun_recovery):
* ext/alsa/gstalsa.h:
* ext/alsa/gstalsaclock.c: (gst_alsa_clock_get_type):
* ext/alsa/gstalsasrc.c: (gst_alsa_src_init), (gst_alsa_src_loop),
(gst_alsa_src_change_state):
* ext/alsa/gstalsasrc.h:
Make the xrun code timestamp and offset the buffers correctly.
moved the clock to the base class, use alsa methods to get time.
Do correct timestamping on outgoing buffers.
Original commit message from CVS:
* ext/alsa/gstalsasrc.c: (gst_alsa_src_loop):
don't use a fixed buffer size when writing variable length data to
it. Fixes memory corruption and makes alsasrc work
Original commit message from CVS:
* ext/alsa/gstalsamixer.c: (gst_alsa_mixer_build_list):
* ext/alsa/gstalsasink.c: (gst_alsa_sink_get_type),
(gst_alsa_sink_class_init):
* ext/alsa/gstalsasink.h:
* ext/alsa/gstalsasrc.c: (gst_alsa_src_get_type),
(gst_alsa_src_class_init):
* ext/alsa/gstalsasrc.h:
Make alsasink/src a subclass of alsamixer so that mixer stuff
shows up in gst-rec. Needs some finetuning.