Old versus new PCM API (values returned using indirect pointers)
================================================================

From the binary compatibility view, there is no change. For compilation,
1.0 ALSA applications do not need any change. The older applications must
use this include sequence:

#define ALSA_PCM_OLD_HW_PARAMS_API
#define ALSA_PCM_OLD_SW_PARAMS_API
#include <alsa/asoundlib.h>

If you use already the new API, you may remove old defines selecting
this API, because they are no longer used:

#define ALSA_PCM_NEW_HW_PARAMS_API
#define ALSA_PCM_NEW_SW_PARAMS_API


Verbose Error Messages
======================

Since version 1.0.8, assert() for some non-fatal errors are removed
and error messages are no longer shown to stderr as default.  Instead,
the error messages appear only when the environment variable
LIBASOUND_DEBUG is set (to a non-empty value).

When LIBASOUND_DEBUG=1 is set, the errors in hw_params configuration
will be dumped to stderr.  Note that this will show even the non-fatal
errors of plug layer (trial-and-error of parameters).

This feature is disabled when --with-debug=no is passed to configure,
i.e. no strict checking is done in alsa-lib.

In addition, when --enable-debug-assert configure option is given and
when LIBASOUND_DEBUG_ASSERT=1 is set, the default error message
handler can call assert() to catch with a  debugger.  This feature was
formerly activated via LIBASOUND_DEBUG=2.


Blocking Open Mode
==================

The default behavior of blocking at snd_pcm_open is changed to
non-blocking since version 1.0.11.  That is, snd_pcm_open() returns
-EAGAIN immediately when the device is in use and cannot be opened,
while the function was blocked in the former version.  This influences
only on the opening behavior.  The behavior of the further access,
read/write, poll or commit, are not changed.  They follow the extra
flag argument of snd_pcm_open() as well as the former version.

For taking back the compatible behavior of open blocking mode, set

	defaults.pcm.nonblock 0

in /etc/asound.conf or ~/.asoundrc file.

