S24 format has different bit width and physical width.
For calculating the byte offset for big-endian packing, the latter value
has to be used.
Signed-off-by: Takashi Iwai <tiwai@suse.de>
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>
When decoding (N)RPN sequencer events into raw MIDI commands, the
extra_decode_xrpn() function had accidentally swapped the MSB and LSB
controller values of both the parameter number and the data value.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
Running status cannot be using in the command immediately following
a system exclusive command, so we have to reset the running status
state in that case.
Signed-off-by: Clemens Ladisch <clemens@ladisch.de>
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>