I hate to nitpick once more, but there are a few things I noticed. My alsa-lib tells me: include/pcm.h:int snd_pcm_recover(snd_pcm_t *pcm, int err, int silent);
Therefore, the statement "int ret = snd_pcm_recover(NULL, NULL, NULL);" is somewhat incorrect.
Secondly, I think it should be sufficient to drop the AC_COMPILE_IFELSE macro entirely. The purpose in the original test was to distinguish between the version supplied in ALSA 0.9.x and ALSA 1.x, so, while I don't feel strongly about the matter either way, just checking for the existence of the function should be sufficient, as is done in other tests.