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>
Since some digital mics have the phase-inversion problem in one channel,
adding both channels for mono stream results in the noise.
Use route_policy copy to avoid that situation.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
So far, external ctl plugins don't change numid. Some apps expect the
non-zero numids with list, and the plugin doesn't work for them.
This patch adds a fake numid to each control based on the offset
number. The lookup with non-zero numid is supported but is pretty
inefficient. Eventually the plugin side may be optimized to look
at the numid, too.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The change that removed the Master controls for Xonar D2(X) cards was
reverted, so we don't need to use the softvol plugin anymore ...
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
The hd-audio driver may have no analog stream but only a digital one
which has usually non-zero device number. To avoid the bogus namehint,
set hint.device 0 for pcm.default (it wasn't handled properly due to
asym).
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The documentation for the latency parameter of pcm_set_params() says
that the value 0 uses an optimal value. This is wrong, as there is no
special handling for 0, and the result will be a buffer of minimal size.
Therefore, remove that incorrect statement.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Shut up misc compile warnings from gcc:
pcm_plug.c: In function ‘snd_pcm_plug_change_mmap’:
pcm_plug.c:608: warning: enumeration value ‘SND_PCM_ACCESS_MMAP_INTERLEAVED’ not handled in switch
pcm_plug.c:608: warning: enumeration value ‘SND_PCM_ACCESS_MMAP_NONINTERLEAVED’ not handled in switch
pcm_plug.c:608: warning: enumeration value ‘SND_PCM_ACCESS_MMAP_COMPLEX’ not handled in switch
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The revents parameter is ambiguously defined whether it's a pointer
to a single event or an arary.
This patch defines the behavior of revents more strictly (in the
function description): it's a pointer of a single event.
Also fixed snd_pcm_wait_nocheck() to follow that rule.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
* added support for including pcm stream params in the output filename
* added support for piping the stream to a shell command if the filename
string starts with a pipe char
Signed-off-by: Pavel Hofman <pavel.hofman@insite.cz>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The off_t in kernel struct (for ioctls) is actually different from the
definition of user-space off_t. The kernel off_t is equial with long
while user-space off_t depends on the large-file support.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The system-wide default PCM config works now (by the fix of plug
mmap_emul support), thus no card-specific hackish config is needed
for GUS.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
If the slave PCM supports only another type of interleaved format,
plug did convert it wrongly and resulted in an unused access type
error. For example, if a slave PCM supporst only RW_NONINTERLEAVE
access and you try to play an interleaved format file, it resulted
in an error.
This patch fixes the conversion rule.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Master Volume controls were removed from Xonar D2/D2X cards; add the
softvol plugin so that we have at least PCM volume.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
The variable $ALSA_CONFIG_PATH specifies the config path, but the current
code accepts the empty string and results in a mysterious error because
no config file is found.
This patch fixes the check of the variable and takes the default value
if the string is empty.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The commit a13707da6b
pcm_softvol plugin: remove access type change for refine
breaks the softvol in the case of RW -> MMAP. The slave of softvol
must be an mmap although the previous fix forces RW access.
This patch reverts the commit, and the fixed access refine method
to hanle non-interleaved <-> interleaved changes.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This makes it possible to write them to .data.rel.ro or to .rodata if
there is no relocation involved (arrays of character arrays).
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
Use "const char *const []" as type for string arrays, or convert to
"const char [][x]" when it makes sense.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
This ensures they are emitted in .data.rel.ro rather than .data.rel,
which should make a nice difference when using prelink.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
Since they are never changed it does not make sense to have them in
the writeable .data section, just make sure to add const to the ops
member in the structure definitions so that there are no extra
warnings added.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
By doing this we move them from the .data section to .rodata setion,
or from .data.rel to .data.rel.ro.
The .rodata section is mapped directly from the on-disk file, which is
always a save, while .data.rel.ro is mapped directly when using
prelink, which is a save in a lot of cases.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
This adds extra safety that the built libraries will have all the
correct dependencies linked in.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
This is a shared macro file that is currently maintained in both xine
and lscube repositories and contains a series of utility macros to
check compiler and linker features.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
Since alsa-lib is not a tool generating architecture code, the target
definition does not matter, instead use $host and $build properly.
See http://blog.flameeyes.eu/2008/10/11 for a detailed explanation of
the problem and the fix.
Signed-off-by: Diego E. 'Flameeyes' Pettenò <flameeyes@gmail.com>
snd_pcm_meter_add_scope_conf() may cause a segfault when pcm_scope_type
isn't defined.
Initialize type_conf properly to avoid it.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
The ice1724-based cards can handle only 32bit while the apps almost
expet 16bit format for SPDIF I/O. This prevents the default config
working on many apps like mplayer, xine, etc.
This patch simply adds the least automatic conversion by linear plugin.
Note that "plug" isn't used here. Otherwise we get a problem of the
routing (plug over plug is buggy).
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Fixed a long-standing bug that the values of global or simple mixer
elements aren't updated when dir = SM_CAPT is given.
Signed-off-by: Takashi Iwai <tiwai@suse.de>