module-alsa-sink.c

pa_module_init

  snd_pcm_open()

  pa_alsa_set_hw_params()

  pa_sink_new()

  声卡可以写入时回调io_callback() -> do_write() -> pa_sink_render() 将各个sink-input数据进行mix,如果所有sink-input都没有数据时,用slient数据替代-> snd_pcm_writei() 

        sink.c

              pa_sink_render()

      fill_mix_info() 将sink关联的sink-input数据取出pa_sink_input_peek(),分别存入到info[MAX_MIX_CHANNELS]

                      将info[]中数据进行mix pa_mix(),然后返回mix后的数据

                      将mix后的数据,回调给monitor的应用

            

原文地址:https://www.cnblogs.com/renhl/p/14020005.html