Commit graph

1046 commits

Author SHA1 Message Date
Takashi Iwai
fe95bc237a Add the support of WAV format in PCM file plugin
Added the support of WAV format in PCM file plugin.
The infile is still only in raw format.
2008-03-17 16:02:56 +01:00
Takashi Iwai
5c5f135812 Use slave PCM as a timing-source for file ifile
When ifile option is used for the file plugin, it ignores the slave PCM
and just feeds the input data.
This patch changes the behavior a bit - it uses the slave PCM as the
timing source (just read and throw data away) so that the input data
can be read in the right sample rate.
2008-03-14 14:03:54 +01:00
Takashi Iwai
3d0dae9099 Add truncate option to PCM file plugin
Addeed a new option "truncate" to indicate the behavior of creating
the output file.  When it's true (the default), the file is overwritten
and truncated at creation.  When false, the plugin tries to open a
unique file with a number suffix.

The global behavior of "file" and "tee" PCMs is defined via
defaults.pcm.file_truncate option.  You can overwrite it in ~/.asoundrc.
2008-03-12 16:30:26 +01:00
Takashi Iwai
fe8bb13400 dmix skipping first set of samples
There was a change in alsa-lib 1.0.16 which looks like it was designed to
make dmix skip samples in the case of underruns, but it causes the first
sample to be skipped since dmix->slave_hw_ptr == dmix->slave_appl_ptr.
The following patch fixes this and fixes a small typo in the comment.

From: Mike Gorse <mgorse@mgorse.dhs.org>
2008-03-10 12:02:26 +01:00
Takashi Iwai
91726ddf83 Fix the build with old glibc
The old systems don't support CLOCK_MONOTONIC although clock_gettime() API
itself exists.  This causes compile errors.
2008-03-07 14:35:25 +01:00
Takashi Iwai
6e0b0e7c6a Fix the state in snd_pcm_ioplug_pause()
The states[] in snd_pcm_ioplug_pause() has wrong values.  They should be
swapped.  ALSA bug#3796:
	https://bugtrack.alsa-project.org/alsa-bug/view.php?id=3796
2008-02-25 15:11:46 +01:00
Takashi Iwai
c1d06bda17 Allow auto-config for dsnoop and dshare plugins 2008-01-23 12:26:22 +01:00
Takashi Iwai
1683a1b8bd Fix a memory leak in PCM hook plugin 2008-01-18 14:43:56 +01:00
Takashi Iwai
35d4f9b8d7 dmix - Enable auto format detection as default
The direct plugins have the automatic format-detection feature but it
wasn't enabled properly in the interface.  Now you can pass the format
"unchanged" to make the plugin detect a proper format.

This will change the default format of some drivers, such as, HD-audio.
2008-01-18 13:42:51 +01:00
Takashi Iwai
91fc64cefb Implement missing htimestamp callbacks
Implemented the missing htimestamp callbacks for ioplug, rate and null
plugins.
2008-01-15 14:29:34 +01:00
Jaroslav Kysela
77849672cd Allow pcm slave string references for direct plugins (bug#2893). 2008-01-15 14:07:19 +01:00
Takashi Iwai
6968ba94f3 Add missing remix_areas_* for x86-64
The remix_areas_* were missing the dmix x86-64 code.  Added now.
2008-01-14 17:24:14 +01:00
Clemens Ladisch
fb3a4e8b70 pcm dmix plugin: fix generic direct remixing
In the case of the sum buffer being uninitialized, the source sample
must be negated not only when writing to the sum but also when writing
to the destination.
2008-01-14 08:52:16 +01:00
Clemens Ladisch
0e8a259914 check availability of CLOCK_MONOTONIC
Use monotonic timestamps only after checking that CLOCK_MONOTONIC is
actually supported by the C library.
2008-01-14 08:51:45 +01:00
Clemens Ladisch
07e1341548 pcm hw plugin: use TSTAMP only with old drivers
There is no need to call the TSTAMP ioctl with newer driver versions.
2008-01-14 08:50:46 +01:00
Clemens Ladisch
6f751a923d pcm hw plugin: fix TTSTAMP version check
Fix the version check that determines the availability of the TTSTAMP
ioctl.
2008-01-14 08:50:18 +01:00
Clemens Ladisch
cf822aceef pcm plug plugin: remove duplicated expression
Remove a needlessly duplicated expression.
2008-01-14 08:49:35 +01:00
Jaroslav Kysela
ab8331c882 Added possibility to disable also channel and format conversions + softvol.
Unified disable option using mode bits in snd_pcm_open().
2008-01-11 17:21:44 +01:00
Jaroslav Kysela
6814d23d29 SND_PCM_TSTAMP_MMAP -> SND_PCM_TSTAMP_ENABLE change 2008-01-11 08:54:07 +01:00
Jaroslav Kysela
70b11d614d Implemented snd_pcm_rewind() for the dmix plugin 2008-01-10 10:01:14 +01:00
Takashi Iwai
8f16428f9c Don't use deprecated functions inside
Use the new functions in snd_pcm_sw_params_dump().
2008-01-09 17:21:09 +01:00
Takashi Iwai
3e35983f95 Avoid (null) in printf
Show '[builtin]' when the library name is NULL in error messages.
2008-01-09 17:17:58 +01:00
Jaroslav Kysela
2c1318803f Impemented snd_pcm_htimestamp() function. 2008-01-09 13:50:45 +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
Jaroslav Kysela
7562320e3b Added SNDRV_PCM_IOCTL_TTSTAMP and updated PCM API version to 2.0.9 2007-12-17 09:04:42 +01:00
Takashi Iwai
ce64f433a6 Add snd_pcm_ioplug_set_state() function
Added an exported function snd_pcm_ioplug_set_state() to change
the PCM state of ioplug from the plugin side (e.g. from another
thread).
2007-12-14 15:19:03 +01:00
Clemens Ladisch
86456d21e0 revert revision 2264:23c4c0f5de40
The rounding done when converting to smaller sample widths fails for
saturated positive samples; in this case, the sample value overflows and
becomes negative.  We are better off without rounding, even if we then
have quantization noise (of at most half the resolution of the least
significant bit).

ALSA bug#3360; Debian #437827; GNOME #436192; LP #116990; Mandriva #33908
2007-12-14 09:11:01 +01:00
Takashi Iwai
74880110c3 Fix segfault with strdup(NULL) in softvol
The last change to fix the slave name may cause a segfault when
name=NULL is passed.  Fixed now.
2007-12-13 15:49:50 +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
Takashi Iwai
2ae2bbf190 softvol - add missing name
softvol can be also a pass-thru when the given control already exists
as a hardware control, and the name isn't set properly because of
slave creation.  This patch fixes it.
2007-11-28 14:24:26 +01:00
Takashi Iwai
72ede8a12d Set PCM name properly in empty and asym plugins
The PCM name isn't set properly on empty and asym plugins due to its call
of snd_pcm_open_slave().  Now a new function snd_pcm_open_named_slave()
is created and make snd_pcm_open_slave() an inline function calling the
new one with name=NULL.
2007-11-26 12:29:37 +01:00
Takashi Iwai
0b66de95a9 Fix mmap with multi plugin
The mmap of multi plugin seems broken (for a long time!) due to its
creation of local buffer via snd_pcm_mmap().  Since the multi plugin
just needs to shadow the mmap buffer of each slave, it now has
mmap_shadow=1 and its own mmap/unmap method to do shadowing.
2007-11-23 15:46:48 +01:00
Takashi Iwai
683c8bc4a2 Clean up using gettimestamp()
Introduce a new local function gettimestamp() to get the current timestamp.
2007-11-21 12:19:43 +01:00
Takashi Iwai
7379b061eb Fix timestamp in status in PCM direct plugins
PCM direct plugins didn't update the timestamp properly.
Now it always starts the slave PCM with MMAP tstamp_mode so that the
timestamp will be being updated.  When a client is set up as MMAP
tstamp_mode as well, simply copy this slave timestamp.  Otherwise
status callback calculates the current timestamp as usual.
2007-11-21 12:10:35 +01:00
Takashi Iwai
b0b7d0280f pcm - Limit the avail_min minimum size
Fix avail_min if it's less than period_size.  The too small avail_min
is simply useless and the cause of CPU hog with rate plugin.
2007-11-20 15:29:10 +01:00
Takashi Iwai
408af4b675 Fix wrong return values in direct plugins
Fixed the codes returning error values that are not set properly
via errno.
2007-11-16 12:06:43 +01:00
Stas Sergeev
c13b8dc986 Remove ugly hack in rate plugin poll_descriptors callback
The rate plugin has ugly hacks in poll_descriptors callback to adjust
avail_min when partial read/write occurs.  This causes often unexpected
problems like XRUNs, especially with two-period cases.

Let's remove that beast, it's rather harmful than useful.

Signed-off-by: Stas Sergeev <stsp@aknet.ru>
2007-11-12 12:01:16 +01:00
Takashi Iwai
07137c0267 ioplug - Fix the refinement of period_* after periods
When changing only PERIODS after BUFFER_*, ioplug doesn't update
the corresponding PERIOD_* parameters properly.  This should fix
ALSA bug#2601.
2007-11-05 12:46:46 +01:00
Takashi Iwai
9eb272c753 Fix gcc compile warnings
Fix gcc compile warnings with nasty const cast.  Let's use simply macros
instead of inline functions.  It's just an array access after all...
2007-10-25 15:34:43 +02:00
Takashi Iwai
d6093c58f3 snd_pcm_dmix_close: raise semaphore if unable to discard
This patch causes snd_pcm_dmix_close() to up a semaphore after downing it
if it is unable to discard it.  It prevents some deadlock that I am
getting when a couple of applications interact and one of them closes the
device and later re-opens it.

From: Mike Gorse <mgorse@mgorse.dhs.org>
2007-10-18 11:10:35 +02: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
Jaroslav Kysela
4f70a301ac release 1.0.15rc3
Patch-level: Merged
2007-09-21 10:40:55 +02:00
Takashi Iwai
67399e35ff Fix wrong offset calculation in snd_pcm_{read|write}_mmap()
The offset used in snd_pcm_{read|write}_mmap() is not the linear offset
but the offset in a ring buffer.  It has to be rounded.
2007-09-20 13:20:03 +02:00
Takashi Iwai
c7e1676dcd Don't set PCM pointer at error in snd_pcm_hw_open()
snd_pcm_hw_open() may set a non-NULL to pcmp even if it returns an error.
Some codes like dmix expects it's NULL, and cause the double free().
2007-08-06 16:09:27 +02:00
Clemens Ladisch
fca29a6172 remove unused variables
Remove some unused variables that the compiler warned about.
2007-07-13 12:44:43 +02:00