ALSA库编程要点



1、snd_pcm_open,打开句柄。

2、配置参数,可能用到的接口:snd_pcm_hw_params_alloca、snd_pcm_hw_params_any、snd_pcm_hw_params_set_rate_near、snd_pcm_hw_params_set_format、snd_pcm_hw_params_set_access、snd_pcm_hw_params_set_channels、snd_pcm_hw_params_set_period_size_near、snd_pcm_hw_params_set_buffer_size_near、snd_pcm_hw_params。

3、读写:snd_pcm_writei、snd_pcm_readi。

注意点:

    1、根据要实现的功能创建句柄,snd_pcm_open参数SND_PCM_STREAM_CAPTURE与snd_pcm_readi相对应,SND_PCM_STREAM_PLAYBACK与snd_pcm_writei相对应。

    2、配置参数,snd_pcm_hw_params_set_format中的第三个参数与对应文件的格式相对应,即SND_PCM_FORMAT_A_LAW对应G711数据,SND_PCM_FORMAT_S16_LE与16位的小端PCM格式数据相对应。

    3、有些时候会有pcm数据与G711数据,G722数据与pcm数据之间相互转换的需要。但是需要注意的是一般而言G722数据一个包的大小是120,因此读取文件往解码器送数据时需要将大小改为120.而G711数据一个包大小为320,因此送解码器时需要将大小改为320.

转自:https://blog.csdn.net/ZYBASJJ/article/details/8768544

猜你喜欢

转载自blog.csdn.net/zz460833359/article/details/79822136
今日推荐