Commit graph

1134 commits

Author SHA1 Message Date
Andrew Eikum
43956de710 Improve hw_params documentation
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-01-19 12:36:39 +01:00
Andrew Eikum
235aec0a75 Search-and-replace improve documentation language
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-01-19 12:36:09 +01:00
Takashi Iwai
f562b032be pcm:mmap_emul: Fix sw_params and others in bypass mode
When the slave doesn't need any mmap-emulation, the plugin shouldn't do
anything special in sw_params and other callbacks but just pass to the
generic helpers and update hwptr and applptr.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-11-15 07:58:35 +01:00
Julia Lawall
fef6e6fd58 src/pcm/pcm_mmap.c: add missing free
The mmap_channels and running_areas fields are allocated using calloc, but
are not freed on an error path.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Suman Saha <sumsaha@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 14:11:10 +02:00
Julia Lawall
c36f8c87ff src/pcm/pcm_multi.c: add missing free
Something that is allocated using calloc is not freed on an error path.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Suman Saha <sumsaha@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 12:50:31 +02:00
Julia Lawall
03aa1a57c9 src/pcm/pcm_ladspa.c: add missing free
Something that is allocated using calloc is not freed on some
error paths.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Suman Saha <sumsaha@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 12:49:54 +02:00
Julia Lawall
2a7f653b7f src/pcm/pcm_rate.c: add missing free
Something that is allocated using calloc is not freed on one
or more error paths.

Signed-off-by: Julia Lawall <julia@diku.dk>
Signed-off-by: Suman Saha <sumsaha@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-09-22 12:47:44 +02:00
Clemens Ladisch
6dab1a91cb pcm: recalculate all rules after changing hw_params flags
The rules engine avoids recalculating rules that do not depend on
any changed parameter, but there is no mechanism to record changed
flags.  So when we change a flag, we have to ensure that all rules
depending on that flag are recalculated; the only method to do this
is to force recalculation of all rules.

So far, there have been no kernel drivers with rules depending
on flags, but rules to disable hardware SRCs by setting
SND_PCM_HW_PARAMS_NORESAMPLE are being introduced now.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2011-09-21 08:30:20 +02:00
Takashi Iwai
acb423d937 Add snd_{ctl|pcm}_open_fallback() functions
This patch adds new API functions, snd_ctl_open_fallback() and
snd_pcm_open_fallback().  These are just like snd_*_open_lconf() but
used to open a fallback PCM/control.  The difference is that it replaces
the name string with the given original name, so that hctl and other
upper-layers will recognize it as an alias.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-07-27 15:24:13 +02:00
Sudarshan Bisht
808ce5deb3 alsa-lib: fixed coverity reported issues under "FORWARD_NULL" checker.
Coverity Static Analysis helps developers find hard-to-spot,
yet potentially crash-causing defects early in the development phase,
reducing the cost,time, and risk of software errors.

This patch has fix for situations where variable can be NULL
but not been checked beforehand

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2011-05-04 09:11:46 +02:00
Francesco Cosoleto
a9855efcb9 pcm: fix typo in snd_pcm_recover() error message
Signed-off-by: Francesco Cosoleto <cosoleto@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2011-01-23 14:29:40 +01:00
Pierre-Louis Bossart
aba87e5098 pcm_plugin: fix delay
PulseAudio ALSA modules report errors after calling
snd_pcm_avail_delay(), with a delay lower than the number of samples
available.

Correct delay using Jaroslav's recommendation:
"the result should be 'delay(slave) + mmap_capture_avail(pcm)"

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-11-23 15:59:12 +01:00
Jaroslav Kysela
a4f71b1940 pcm: add MMAP_EMUL to type names
If we try to print this then it causes a read past the end of the array
in snd_pcm_type_name().

From: Dan Carpenter <error27@gmail.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-11-23 13:40:25 +01:00
Pierre-Louis Bossart
ade3efbd86 pcm_plugin: remove unused client_frames and slave_frames routines
plug->client_frames and plug->slave_frames are not used by
any plugin, remove dead code.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-11-22 14:53:47 +01:00
Jaroslav Kysela
ba9332e919 pcm: fix snd_pcm_avail_delay() function
For capture stream, the delay must be obtained as last, but we need to
update the ring buffer pointers for the avail_update call. So, rearrange
the code a bit and add hwsync call as first.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-11-18 09:27:07 +01:00
Clemens Ladisch
7c99bd24bc support for period wakeup disabling
Add API to disable period wakeups.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2010-11-15 10:43:13 +01:00
Clemens Ladisch
70dded6aba pcm: pass hw_params flags to slave
Fix required before interrupt disabling routines patch can be applied.
Without this fix, the interrupts are only disabled when directly
accessing hw devices.

Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@intel.com>
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2010-11-15 10:33:35 +01:00
Jaroslav Kysela
13b5d972d2 pcm direct plugins: change timestamping in dsnoop
Do not use own timestamps, try to sync hw.ptr with real timestamp.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-10-29 17:36:41 +02:00
Jaroslav Kysela
91c9c8f1b8 general: recoded snd_dlobj_ functions
- changed logic to get/put blocks
- added mutex locking of the symbol list
- added reference counting (do not free used dl handles)

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-08-23 17:10:16 +02:00
Takashi Iwai
18b377dec2 Add missing support for 3-byte formats for 16bit put conversion
In the put conversion, the support for 3-byte formats was missing.
This resulted in inaudible volume with rate plugin & co.

Typos fixed by Mark Hills <mark@pogo.org.uk>

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2010-08-13 16:11:36 +02:00
Jaroslav Kysela
0633a96636 pcm: Fixed typo (wrong deleted line) instroduced in the minperiodsize patch
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-08-12 08:21:26 +02:00
Jaroslav Kysela
de606e9c25 pcm: introduce defaults.pcm.compat to change the params choose behaviour
Having getenv directly in the function is not a good idea. Allow
configuration of the behaviour change in snd_pcm_param_choose() function
using alsa.conf. Use the environment variable LIBASOUND_COMPAT only
as fallback.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-08-11 20:20:40 +02:00
Jaroslav Kysela
09879a4bb5 pcm: add defaults.pcm.minperiodtime parsing
Some broken applications like Audacious don't set any timing parameters.
While the alsa-lib behaviour is to select the smallest period size and
biggest buffer size, the result is the generation of thousands
interrupts per second.

The default value in alsa.conf is 5000usec.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-08-11 19:55:15 +02:00
Anssi Hannula
db7545a077 pcm_plug: fix comparison always true
Signed-off-by: Anssi Hannula <anssi.hannula@iki.fi>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2010-08-02 18:21:05 +02:00
Jaroslav Kysela
3f589c9369 pcm - ladspa: fix small memory leak in snd_pcm_ladspa_free_instances()
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-07-22 11:33:20 +02:00
Jaroslav Kysela
7a2cdb33c4 pcm_share plugin: fix pcm->monotonic setup in open() function
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-04-13 10:08:56 +02:00
Jaroslav Kysela
a55e1ded99 pcm_hw - show errno codes
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-03-10 09:40:02 +01:00
Jaroslav Kysela
b9dbee694a pcm direct plugins: drain() call might be blocked when threads are used
Add SETUP state checks and do modifications according latest ALSA driver
(passing wrong event identification).

ALSA bug#4914

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-03-03 10:58:53 +01:00
Jaroslav Kysela
7fd0d9f423 pcm_dmix: add support for S24_LE format
From: Bart De Vos <bart_dv@eia.be>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-03-02 14:01:32 +01:00
Jaroslav Kysela
f171347508 Fix snd_pcm_sw_params_set_period_event() implementation
Fix the PCM timer open subdevice number in the pcm_hw plugin.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-02-23 10:58:00 +01:00
Jaroslav Kysela
2e48439ad9 pcm: fix read_areas and write_areas
The stream state was wrongly updated and handled.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2010-01-31 09:43:45 +01:00
Zerg Cannibal
bdf80e58af pcm: Fix the sound distortions for S24_3LE stream in pcm_softvol plugin
This patch fixes sound distortions in alsa-lib "softvol"
for S24_3LE sound stream, when softvol slider is not at 0.0dB
position.

Signed-off-by: CannibalZerg <cnb_zerg@yahoo.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2009-12-21 22:20:46 +01:00
Jaroslav Kysela
a256766c10 pcm: Close event timer in pcm_hw plugin
Dan McCombs discovered that snd_pcm_close() invocations are not leading
to associated timers being closed, which results in successively more
timers being created but not freed.

Original patch from Daniel T Chen <crimsun@ubuntu.com>.

BugLink: https://bugs.launchpad.net/bugs/451893

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2009-12-21 09:09:42 +01:00
Mads Kiilerich
f75f1da1b7 Update pcm doc strings
This is information I needed and is based on my understanding of information
from Takashi Iwai.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-11-14 13:49:14 +01:00
Rémi Denis-Courmont
57ce918928 Remove old commented-out FD_CLOEXEC code
Signed-off-by: Rémi Denis-Courmont <remi@remlab.net>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-11-08 09:23:22 +01:00
Stefan Schmidt
19f703a774 pcm_rate_linear: Annotate unused function parameter to avoid compiler warnings.
Signed-off-by: Stefan Schmidt <stefan@slimlogic.co.uk>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-09-30 12:45:35 +02:00
Takashi Iwai
da237814e7 dmix - Fix snd_pcm_info()
Call the slave snd_pcm_info() as long as possible in the direct plugins
(i.e. when the PCM device could be opened with O_APPEND mode).
This allows dmix/dsnoop as a salve for PCM hook controls.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-09-28 12:02:13 +02:00
Kai Vehmanen
ecf4b5af86 pcm_hw: Always use delay ioctl in snd_pcm_delay()
As the result of snd_pcm_delay() is affected not only by hw_ptr
and appl_ptr, but also by 'runtime->delay' property,
either SNDRV_PCM_IOCTL_DELAY or SNDRV_PCM_IOCTL_STATUS ioctl
must be used to get the correct result.

Previously 'runtime->delay' was ignored in case 'hw->sync_ptr'
was used.

Signed-off-by: Kai Vehmanen <kvehmanen@eca.cx>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-09-11 09:18:36 +02:00
Takashi Iwai
cd7070bf4b PCM - Change the hw_params determination order
In snd_pcm_hw_params_choose(), set the buffer size before the period
size and time as default.  This will give more useful configuration for
most of apps, i.e. larger buffer size.

For apps that require the old behavior, now the function checks the
environment variable $LIBASOUND_COMPAT.  If this variable is set to
non-empty, the hw_params is determined in the old way, first period
then buffer sizes.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-09-09 14:16:06 +02:00
Takashi Iwai
cbf5675eef pcm/ioplug: fix error code in start callback
When snd_pcm_start() is called in the invalid state, it should return
-EBADFD.  But ioplug plugin returns -EAGAIN.  Let's fix it.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-08-21 01:34:29 +02:00
Takashi Iwai
bd5389278c pcm: workaround for avoiding automatic start in mmap mode
In the normal mmap mode, the stream isn't started automatically even after
the data >= start_threshold has been written.   However, in the
mmap-emulation mode, the stream is started because it uses
snd_pcm_write_areas() internally.

As a workaround for this inconsistency, start_threshold value is changed
dynamically in sw_parmams and mmap_commit callbacks in mmap-emul plugin.
Meanwhile, start_threshold for slave PCM is set to boundary so that only
this plugin (or the one over it) can control the start of the stream.

This will fix problems in some apps using pulse plugin in the mmap mode.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-08-21 01:23:08 +02:00
Clemens Ladisch
2905af225f snd_pcm_scope_set_ops: make ops parameter const
The contents of the snd_pcm_scope_ops structure are not going to be
changed, so we might as well declare is as constant.  This change is
backwards compatible, and avoids warnings if some ops structure is
actually defined as const.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2009-08-10 10:08:25 +02:00
Takashi Iwai
79345b523e Fix zero-division in pcm_rate.c
Patch from Debian bug#539454

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-08-10 09:53:18 +02:00
Clemens Ladisch
5332d74a67 fix doc errors
Fix various errors in the documentation that make doxygen complain.

Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
2009-08-04 09:17:20 +02:00
Paul Fertser
5a70411d6c pcm_hooks: cosmetic removal of unused variables
Signed-off-by: Paul Fertser <fercerpav@gmail.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-30 14:53:42 +02:00
Takashi Iwai
2a77d217a6 Manage dlobj lifetime in pcm_hooks.c
The shared object may be still needed depending on the implementation
of hook-installation functions.  When any hooks are registered in the
installation function, the dlobj has to be kept opened until closing
the PCM instance.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-30 11:11:34 +02:00
Jaroslav Kysela
e94f3cfdf9 pcm dmix plugin: fix MIX_AREAS_24 routine for i386 & x86_64 platforms
The code was copied from ALSA bug#4577 from CannibalZerg.

Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2009-06-16 20:10:19 +02:00
Takashi Iwai
1929c55d2e Query the supported rate ranges from rate plugins
Extend the PCM-rate plugin protocol to allow the host to query the
supported sample rates.  The protocol version is bumped to 0x010002,
and the version number negotiaion is slightly changed.
Now the plugin is supposed to fill the version it supports in return.

The old versioned plugins are still supported, but they may spew
version-mismatch warning prints.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2009-06-02 16:26:03 +02:00
Jaroslav Kysela
0de385109a pcm: more better documentation for snd_pcm_poll_descriptors
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2009-04-21 14:36:33 +02:00
Jaroslav Kysela
a987a692bf pcm_hw plugin: show appl_ptr and hw_ptr in dump() callback
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
2009-04-09 10:49:57 +02:00