Commit graph

40 commits

Author SHA1 Message Date
Takashi Iwai
3c4a22ea49 Implement the channel mapping API
Added new channel-mapping API functions.
Not all plugins are covered, especially the route, multi and external
plugins don't work yet.

Signed-off-by: Takashi Iwai <tiwai@suse.de>
2012-09-11 11:34:50 +02: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
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
70b11d614d Implemented snd_pcm_rewind() for the dmix plugin 2008-01-10 10:01:14 +01:00
Jaroslav Kysela
309a274454 Add support for monotonic timestamps 2008-01-09 11:13:34 +01:00
Takashi Iwai
679cea4125 Remove sleep_min and tick
The sleep_min and tick are removed features from the kernel.
This patch cleans the corresponding part in alsa-lib.
2008-01-08 18:36:18 +01:00
Takashi Iwai
cf15e49d84 Remove PCM xfer_align
The PCM xfer_align is a removed feature from the kernel.
This patch cleans up the corresponding part in alsa-lib.
2008-01-08 18:35:29 +01:00
Clemens Ladisch
6e6f4b9c93 dmix: add U8 support
Add support for direct mixing of U8 samples (for devices like some USB
headsets or the Tux Droid).
2007-12-10 12:35:08 +01:00
Clemens Ladisch
a3fe1f7800 dmix: simplify mix_areas()
The code for the three supported sample widths is almost the same, so it
makes sense to merge the three cases.
2007-12-10 12:32:36 +01:00
Clemens Ladisch
79db4a6bfa dmix: rename mix_areas*
Rename all mix_areas* symbols so that they contain the sample width
instead of some meaningless number.
2007-12-10 12:31:29 +01:00
Takashi Iwai
7dca3ab1ea Make local functions really local
Rename the local functions to snd1_* so that they won't be exported
out of alsa-lib.

Some functions are still kept because aserver requires them.  Sigh.
2007-11-30 18:26:13 +01:00
Jaroslav Kysela
d25e281230 Changed Jaroslav Kysela's e-mail from perex@suse.cz to perex@perex.cz 2007-10-15 10:24:55 +02:00
Takashi Iwai
b3c3e355d9 Initialize all fields of slave PCM instance of direct plugins
Initialize all fields of slave PCM instance of direct plugins.
Some fields were not initialized properly.
2006-06-16 18:52:12 +02:00
Takashi Iwai
eafb7ae5d8 Use O_APPEND mode with dmix & co plugins
Use O_APPEND mode (only if available) with dmix, dsnoop and dshare
plugins.  Using this mode, the plugin requires no resource server
any more.
2006-04-28 15:55:32 +02:00
Takashi Iwai
6ff727bb7f Add check of binding ranges in direct plugins
Add checks of slave channel numbers in bindings of dmix/dsnoop/dshare
plugins to avoid segfault.
Also, fix a possible memory leaks in the error path.
2006-04-26 18:30:44 +02:00
Takashi Iwai
1128efc7d4 Fix buffer size handling of direct plugins
Introduce "max_periods" option to specify the max number of periods
per buffer to each plugin.

- When max_periods = -1, the fixed buffer size as the slave size is
  used (old behavior).
- When max_periods = 0 (or 1), the number of periods is variable
  between 2 and the slave buffer size.
- When max_periods greater than 2 is given, it specifies the max
  periods of that pcm explicitly.

When no option is given in the PCM defintion, the value
"defaults.pcm.dmix_max_periods" is referred as default.
The default value is 0, as defined in alsa.conf.
You can override this in ~/.asoundrc or /etc/asound.conf as you like.
2006-04-06 18:49:11 +02:00
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
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
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
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
Takashi Iwai
e62ecc876a Workaround for crash with knotify
Workaround for crash with knotify and KDEMM.
2005-09-01 17:31:52 +00:00
Jaroslav Kysela
bac9a7de83 direct plugins (dmix) - suspend/resume fixes
- this patch adds support for suspend & result for dmix and other
  direct plugins
- the timer detection / initialization (TREAD support) was redesigned and
  the check for proper driver version was moved to the timer_hw.c
2005-08-16 12:19:15 +00:00
Takashi Iwai
e80f80866f Fix direct plugins running on 32bit emulation with 64bit arch
Fix the problems of dmix/dsnoop/dshare plugins running on 32bit mode with
64bit biarch.
2005-08-12 15:53:02 +00:00
Jaroslav Kysela
4b7e3cff81 added ipc_gid for direct plugins 2005-05-30 10:13:54 +00:00
Takashi Iwai
087184b0f9 Fix doxygen documents
Fix the warnings of doxygen parsing.
Add some missing documentation.
2005-05-24 14:14:28 +00:00
Takashi Iwai
5227c7e170 Fix possible noises and optimization with dmix
dmix transfers data in asynchronously so that it doesn't write on the
last active period.  This will allow the arbitrary buffer size in
future, too.

The hwsync call to slave is removed from commit and hwsync callbacks.
This hack was added to fix the noisy output (typically on xmms/bmp)
but it doesn't happen any more.  Now the hwsync behavior is as same as
on 1.0.8 (i.e. hwsync is called only when slowptr option is set).
2005-05-19 14:14:04 +00:00
Takashi Iwai
51313cb2dd Remove pause and fix timer initialization in prepare
- Removed broken pause implementations.
- Fixed the timer initialization in prepare callback so that poll
  works again after prepare.
2005-05-17 09:28:29 +00:00
Takashi Iwai
48bff53b36 Check timer version for read-block workaround
Check the timer protocl version whether to use poll for a workaround
of read-block problems.
2005-05-15 14:48:19 +00:00
Takashi Iwai
9a0f2817bb Fix timer read in non-TREAD mode
Fix timer read in non-TREAD mode.  (the struct is different.)
2005-04-15 09:22:48 +00:00
Takashi Iwai
72ad0e9ae7 Fix more CPU hang-up bugs in dmix
- Fix CPU hang-up during snd_pcm_drain()
  A new internal function snd_pcm_wait_nocheck() to force to call poll().

- Clean up, fix status() callback of dmix
2005-04-11 10:03:28 +00:00
Takashi Iwai
aa89f27de4 More fixes for 100% CPU hang with dmix
More fixes for 100% CPU hang-up problem with dmix.

- Clear timer queues properly when XRUN happens.
- Don't check XRUN when the stream isn't really running.
- Do hwsync properly for the delayed start state.
2005-04-05 15:50:15 +00:00
Jaroslav Kysela
819a85fb2c Added sync_ptr callback 2004-01-23 13:04:43 +00:00
Jaroslav Kysela
eeb5d6f0ac Added slowptr options to direct plugins 2004-01-20 15:29:39 +00:00
Jaroslav Kysela
0545cf711d Maik Broemme <mbroemme@plusserver.de>
- added ipc_perm for dmix plugin
Jaroslav Kysela <perex@suse.cz>
- added ipc_perm for dsnoop and dshare plugins
- added ipc_perm to doc/asoundrc.txt
2003-12-07 09:30:47 +00:00
Takashi Iwai
243027a824 - support of dmix asm code for x86-64. 2003-09-17 17:09:45 +00:00
Jaroslav Kysela
95418afc67 Direct plugins update:
- moved more common code to pcm_direct.c
  - added missing initialization of some variables in hw_params
2003-09-02 10:32:33 +00:00
Jaroslav Kysela
573f85dc1d - added shm area manager code
- fixed parsing of period_size/buffer_size options for dmix, dsnoop and
  dshare plugins
2003-04-23 12:41:55 +00:00
Jaroslav Kysela
7470a5b9af dshare and dsnoop plugins are working now 2003-03-19 16:35:35 +00:00
Jaroslav Kysela
bc28eccdcd Extracted common code from dmix plugin.
Initial framework for dsnoop and dshare plugins.
2003-03-18 20:37:42 +00:00