当ALSA库的pcm.c文件发生underrun错误时,可以尝试以下解决方法:
snd_pcm_prepare(handle);
snd_pcm_hw_params_t *params;
snd_pcm_hw_params_alloca(¶ms);
snd_pcm_hw_params_set_buffer_size(handle, params, desired_buffer_size);
snd_pcm_hw_params_set_period_size(handle, params, desired_period_size, 0);
snd_pcm_hw_params_set_rate_near(handle, params, &desired_rate, 0);
snd_pcm_wait(handle, timeout);
snd_pcm_set_underrun_callback(handle, callback_function);
这些解决方法可以根据具体情况进行调整和组合使用,以解决ALSA库pcm.c文件出现underrun错误的问题。