Commit graph

978 commits

Author SHA1 Message Date
Takashi Iwai
7e6c920836 dmix - Allow more flexible buffer sizes
With the patch, dmix allows apps to use more flexible buffer sizes.
The max buffer size is unlimited, and the minimal buffer size is
(period size * 2).  The buffer size is aligned to period size.

The period size is still bound to the period size of slave PCM.

To back to the old behavior (the fixed buffer size), you can set

   defaults.pcm.dmix_variable_buffer false

in your configuration.
2006-03-21 10:27:35 +00:00
Juergen Kreileder
8ef339762a Fixes S16 byte swapping with generic dmix code
Here's a patch for generic dmix which fixes S16 byte swapping.

Tested on powerpc with snd-usb-audio.  (Without the patch I get crackling.)

Signed-off-by: Juergen Kreileder <jk@blackdown.de>
2006-03-20 20:24:13 +00:00
Takashi Iwai
5c0674aee3 Add init callback to extplug
- Fix the hw constraints of extplug
- Add init callback to extplug
2006-03-20 11:26:16 +00:00
Takashi Iwai
38a3aa096c Fix restoration of PCM open mode
The original PCM open mode was lost by the change of default non-blocking
open.  The patch fix the restoration of the original open mode.
2006-03-20 11:22:23 +00:00
Takashi Iwai
90112fff1e Add restriction parameters to pcm hw layer
Add restriction parameters to pcm hw layer.

The PCM hw has optional parameters, format, rate and channels, to restrict
the configuration.  This is useful for definition of surround slave PCMs,
for example.
2006-03-17 18:09:07 +00:00
Takashi Iwai
8e6ac040a6 Fix double free in rate plugin
Fixed double free in rate plugin (bug#1937).
2006-03-17 18:06:23 +00:00
Jaroslav Kysela
63207b3ad6 alsa-lib - added ENOTTY and ENODEV to pcm_errors section 2006-03-15 12:38:37 +00:00
Jaroslav Kysela
36eb137f69 alsa-lib - added pcm_errors section 2006-03-15 12:22:29 +00:00
Clemens Ladisch
e58f4d966f rate plugin: wait for data to be drained
When draining, wait for the slave device to become ready to prevent
committing more data than would have been available in the buffer.
2006-03-13 10:41:54 +00:00
Clemens Ladisch
aaaf843871 rate plugin: fix fragment size calculation
When calculating the size of the second fragment, do not assume that the
entire size is one period size (which is not true in the draining state)
but use the actual size passed by the caller.
2006-03-13 10:40:21 +00:00
Clemens Ladisch
931e840a9f rate plugin: optimize calculation of the continuous buffer part
When calculating the continuous part till the end of the buffer, we can
use the slave_frames value that has already been calculated by
snd_pcm_mmap_begin().
2006-03-13 10:38:51 +00:00
Clemens Ladisch
8f61812f1c return ENODEV for disconnected devices
Return -ENODEV instead of -ENOTTY for disconnected devices.
2006-03-03 14:08:58 +00:00
Takashi Iwai
d730ff3556 Fix segfault with PCM rate plugin
Fix segfault with PCM rate plugin (bug#1878)
2006-03-02 17:01:58 +00:00
Clemens Ladisch
09f598e57c allow changing of device directory path
Add configuration options to change the default device path from the
default /dev/snd.  This is useful for embedded systems that do not want
subdirectories in /dev.
2006-02-27 10:03:19 +00:00
Clemens Ladisch
4433248bf3 remove superfluous free() checks
free() correctly handles NULL pointers, so we can omit explicit checks
for that condition.
2006-02-27 09:58:32 +00:00
Clemens Ladisch
45850439b3 Do not abort in snd_xxx_close() functions
Remove several memory leaks by not aborting prematurely from a
snd_xxx_close() function when some operation fails.
This can happen when a USB device was unplugged.
2006-02-27 09:54:57 +00:00
Takashi Iwai
f9c7321670 Fix infinite loop in snd_pcm_wait()
Fix possible infinite loop in snd_pcm_wait() with direct plugins
when XRUN occurs during poll.
2006-02-20 19:34:45 +00:00
Takashi Iwai
43a04650f1 Remove bogus ATTRIBUTE_UNUSED
Removed bogus ATTRIBUTE_UNUSED.
2006-02-20 19:33:53 +00:00
Takashi Iwai
b4f9e5f8e7 Fix plug conversion of non-linear formats
Fix plug conversion of non-linear formats with channel or rate conversion.
2006-02-17 20:50:45 +00:00
Takashi Iwai
c002c69d52 Fix fullduplex with dmix/dsnoop
Fixed the fullduplex of dmix and dsnoop plugins due to confliction of
ipc keys.
2006-02-17 20:50:00 +00:00
Takashi Iwai
67868a886f Fix check of nonblock option
Fix the check of nonblock option for all hw layer.
Instead of passing in asound.conf, check the option in snd_pcm_hw_open()
so that the nonblock option is referred in the case of "type hw ..." style
definition, too.
2006-02-17 20:49:21 +00:00
Jaroslav Kysela
59b598fac0 Fixed snd_pcm_set_params() error code 2006-02-01 06:34:43 +00:00
Jaroslav Kysela
937f396663 snd_pcm_set_params() - added workaround for vortex driver 2006-01-31 09:16:05 +00:00
Takashi Iwai
eccc92a34d Fix infinite parse of recursive definitions
Fixed the infinite parse (and eventually segfault) of recursive definitions.
Also fixed the parse of a string slave PCM of direct plugins.
2006-01-30 14:41:51 +00:00
Nathan Kurz
d9cfe1e9ff pcm_ladspa - setup control outputs all times
It turned out that plugins that had control outputs were not being set
up properly if there was no corresponding "output" section.

Signed-off-by: Nathan Kurz <nate@verse.com>
2006-01-20 08:17:49 +00:00
Clemens Ladisch
9a8a3374a1 LADSPA plugin: fix compilation
Fix a typo in the LADSPA plugin.
2006-01-19 08:23:22 +00:00
Jaroslav Kysela
48d731debf pcm laspa plugin - Added credits to MediaNet AG 2006-01-16 19:01:13 +00:00
Takashi Iwai
7eff603576 Support multi-card/device for direct plugins
- Support multi-card/device for dmix/dsnoop/dshare plugins
  The unique ipc key is calculated based on card/device/sub index

- Clean up and share the code among all d* plugins

- Refer the defaults.pcm.* configuration
  The base ipc_key number, ipc_gid and ipc_perm are referred.
2006-01-16 13:15:32 +00:00
Takashi Iwai
3d0e3e2517 Add "nonblock" option for hw layer
Added a new "nonblock" option for hw layer.  This controls the non-blocking
"open" mode as default.

This option is set to TRUE as the default configuration.  If the old behavior
is preferred, set "defaults.pcm.nonblock" to 0 in /etc/asound.conf.
2006-01-13 11:52:01 +00:00
Takashi Iwai
0e15e6a97a Fix compile warnings
Fix compile warnings about cast signedness.
2006-01-10 11:03:02 +00:00
Takashi Iwai
6333b48061 Fix S24_BE format conversions
Fix S24_BE format conversions by René Rebe <rene@exactcode.de>.
2006-01-09 14:40:08 +00:00
Jaroslav Kysela
23f7e58fa1 implementation of pcm simple helper function
- snd_pcm_recovery()
- snd_pcm_set_params()
- snd_pcm_get_params()
2006-01-06 19:59:56 +00:00
Jaroslav Kysela
b08e01ca9e pcm - fix the buffer allocation for NONINTERLEAVED mmap access
The previous code did not allocated a separate buffer for all channels
when a NONINTERLEAVED access was used. The result was that only one
"shared" buffer was incorrectly allocated.

Also, the code was a bit cleaned (cosmetic change only).
2006-01-02 12:16:59 +00:00
Takashi Iwai
eb7d61d08c Fix meter plugin
Fix the wrong mmap with meter plugin.
2005-12-22 16:24:27 +00:00
Clemens Ladisch
2a438a6eec dmix: fix interleaved check
When checking that samples are properly interleaved, use the actual
sample size instead of always assuming 16 bits.
2005-12-19 07:40:15 +00:00
Clemens Ladisch
45f63a8735 dmix: add S24_3LE support
Add to the dmix plugin support for the S24_3LE sample format which is
used by 24-bit USB devices.

The optimized assembler version uses only 23 bits for sample data so
that the lowest bit can be used for synchronization because there is no
24-bit cmpxchg instruction.
2005-12-19 07:39:03 +00:00
Takashi Iwai
76f7af823b Fix compile warnings
Fix trivial compile warnings.
2005-12-16 18:43:49 +00:00
Jaroslav Kysela
aa21cf4d7c ladspa plugin - SIGSEGV fix when label is not specified 2005-12-13 14:25:13 +00:00
Jaroslav Kysela
1f231e2e1a big ALSA LADSPA plugin rewrite for multiple channel LADSPA plugins
This is major rewrite of the LADSPA plugin to satisfy requirements for
the LADSPA plugins with multiple audio inputs and / or outputs.
2005-12-13 14:08:58 +00:00
Jaroslav Kysela
bdfbbed5ca pcm dump() routines update: use spaces to indent texts 2005-12-11 08:24:13 +00:00
Jaroslav Kysela
1439c2be86 pcm_ladspa plugin - more verbose output
Added more verbose output for dump() callback inspired with bug#1554 .
2005-12-05 15:20:28 +00:00
Jaroslav Kysela
8b908f233d direct plugins - fixed ipc_gid initialization when gid specified as number 2005-12-04 09:19:11 +00:00
Takashi Iwai
3ffeaf4cb1 Minor optimization on mmap
Minor optimization on mmap.
2005-11-30 11:39:21 +00:00
Takashi Iwai
db1e39a4e8 Allow partial build with selected components
Add --enable-* and --with-pcm-plugins configure options for partial builds.

User can choose the core components (pcm, mixer, rawmidi, hwdep, seq, instr)
via --enable-xxx or --disable-xxx option.  As default, all components are
enabled.

The PCM plugins to build can be selected via --with-pcm-plugins option.
For example, to build only rate and linear plugin, pass
  --with-pcm-plugins=rate,linear
Passing "all" will select all plugins (it's the default value).

The plug plugin will select linear and copy plugins automatically.
The other auto conversions of plug plugin are enabled only when the
corresponding plugin is selected.
2005-11-30 11:38:24 +00:00
Takashi Iwai
79c3d0a1ef Move snd_is_local() to socket.c
Move snd_is_local() to socket.c since it's used in control_shm, too.
2005-11-30 11:31:18 +00:00
Takashi Iwai
d9680921a9 Use snd_user_file() in pcm_ladpsa.c
Use snd_user_file() in pcm_ladpsa.c to get rid of wordexp.
2005-11-29 15:20:07 +00:00
Takashi Iwai
52372e0187 Fix segfault of iec958 plugin with preamble
Fix segfault of iec958 plugin with preamble (bug#1571).
2005-11-23 16:46:39 +00:00
Takashi Iwai
d4bbf241ba Abort from snd_pcm_dshare_drain in XRUN state
Fixed the hang-up in snd_pcm_dshare_drain() when the state is XRUN.
2005-11-21 10:51:43 +00:00
Takashi Iwai
8495f42feb abort snd_pcm_dmix_drain when state is SND_PCM_STATE_XRU
From: Sascha Sommer <saschasommer@freenet.de>

this is a fix for bug 0001559.
Unlike my first guesses the real problem is not in the kernel driver but in
alsa-lib. Whenever the current dmix status is xrun and snd_pcm_dmix_drain
gets called the process will hang forever in the poll function. The reason is
that poll gets called even though the timer already stopped.
As described in the bugtracking system this bug was not noticable with alsa
versions that used the old IOCTLS because the SNDRV_TIMER_IOCTL_STOP ioctl
never reached the timer kernel module.

Attached patch fixes this problem for alsa-lib 1.0.10 by simply calling
snd_pcm_dmix_drop when snd_pcm_dmix_drain gets called in the state
SND_PCM_STATE_XRUN.
2005-11-21 10:47:42 +00:00
Clemens Ladisch
5057f8bbea fix compilation with gcc 2
Fix compilation with gcc 2.* by removing a superfluous variable definition.
2005-11-20 14:11:09 +00:00