代码之家  ›  专栏  ›  技术社区  ›  KPexEA

使用alsa的函数snd_pcm_writei,我可以立即释放样本缓冲区吗?

  •  2
  • KPexEA  · 技术社区  · 15 年前

    呼叫后使用ALSA播放音频 snd_uuu pcm_uuu写入 ,我是否可以立即释放声音样本缓冲区,或者是否需要等到声音播放完毕后才能释放样本缓冲区?

    例如:

    unsigned short *buffer;
    
    buffer = malloc(size of sample to play);
    ...load data into buffer...
    snd_pcm_writei (playback_handle, buffer, size of sample)
    free(buffer)
    
    1 回复  |  直到 13 年前
        1
  •  0
  •   Goz    15 年前

    最简单的方法是从缓冲区的末尾开始向后写,看看是否影响音频播放。如果你这样做了,你肯定不能释放缓冲区。如果没有区别,那么您可以安全地释放缓冲区,因为声卡没有从特定的内存块读取数据。