|
Packit Service |
db8eaa |
Old versus new PCM API (values returned using indirect pointers)
|
|
Packit Service |
db8eaa |
================================================================
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
From the binary compatibility view, there is no change. For compilation,
|
|
Packit Service |
db8eaa |
1.0 ALSA applications do not need any change. The older applications must
|
|
Packit Service |
db8eaa |
use this include sequence:
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
#define ALSA_PCM_OLD_HW_PARAMS_API
|
|
Packit Service |
db8eaa |
#define ALSA_PCM_OLD_SW_PARAMS_API
|
|
Packit Service |
db8eaa |
#include <alsa/asoundlib.h>
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
If you use already the new API, you may remove old defines selecting
|
|
Packit Service |
db8eaa |
this API, because they are no longer used:
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
#define ALSA_PCM_NEW_HW_PARAMS_API
|
|
Packit Service |
db8eaa |
#define ALSA_PCM_NEW_SW_PARAMS_API
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
Verbose Error Messages
|
|
Packit Service |
db8eaa |
======================
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
Since version 1.0.8, assert() for some non-fatal errors are removed
|
|
Packit Service |
db8eaa |
and error messages are no longer shown to stderr as default. Instead,
|
|
Packit Service |
db8eaa |
the error messages appear only when the environment variable
|
|
Packit Service |
db8eaa |
LIBASOUND_DEBUG is set (to a non-empty value).
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
When LIBASOUND_DEBUG=1 is set, the errors in hw_params configuration
|
|
Packit Service |
db8eaa |
will be dumped to stderr. Note that this will show even the non-fatal
|
|
Packit Service |
db8eaa |
errors of plug layer (trial-and-error of parameters).
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
This feature is disabled when --with-debug=no is passed to configure,
|
|
Packit Service |
db8eaa |
i.e. no strict checking is done in alsa-lib.
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
In addition, when --enable-debug-assert configure option is given and
|
|
Packit Service |
db8eaa |
when LIBASOUND_DEBUG_ASSERT=1 is set, the default error message
|
|
Packit Service |
db8eaa |
handler can call assert() to catch with a debugger. This feature was
|
|
Packit Service |
db8eaa |
formerly activated via LIBASOUND_DEBUG=2.
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
Blocking Open Mode
|
|
Packit Service |
db8eaa |
==================
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
The default behavior of blocking at snd_pcm_open is changed to
|
|
Packit Service |
db8eaa |
non-blocking since version 1.0.11. That is, snd_pcm_open() returns
|
|
Packit Service |
db8eaa |
-EAGAIN immediately when the device is in use and cannot be opened,
|
|
Packit Service |
db8eaa |
while the function was blocked in the former version. This influences
|
|
Packit Service |
db8eaa |
only on the opening behavior. The behavior of the further access,
|
|
Packit Service |
db8eaa |
read/write, poll or commit, are not changed. They follow the extra
|
|
Packit Service |
db8eaa |
flag argument of snd_pcm_open() as well as the former version.
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
For taking back the compatible behavior of open blocking mode, set
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
defaults.pcm.nonblock 0
|
|
Packit Service |
db8eaa |
|
|
Packit Service |
db8eaa |
in /etc/asound.conf or ~/.asoundrc file.
|
|
Packit Service |
db8eaa |
|