Commit 783aef72 authored by David Reid's avatar David Reid

Updates to the mixer API.

  * Add support for volume control to ma_mixer_mix_*().
  * Add support for specifying an effect to apply before mixing.
  * Add optimized pipeline for memory mappable data sources.
  * Remove some unnecessary functions:
    - ma_mixer_mix_pcm_frames_ex()
    - ma_mixer_mix_callbacks()
    - ma_mixer_mix_decoder()
    - ma_mixer_mix_audio_buffer()
    - ma_mixer_mix_waveform()
    - ma_mixer_mix_noise()
    - ma_mixer_mix_rb_ex()
parent c2aa0443
...@@ -23,6 +23,8 @@ ma_audio_buffer* g_pAudioBuffer; ...@@ -23,6 +23,8 @@ ma_audio_buffer* g_pAudioBuffer;
void data_callback(ma_device* pDevice, void* pFramesOut, const void* pFramesIn, ma_uint32 frameCount) void data_callback(ma_device* pDevice, void* pFramesOut, const void* pFramesIn, ma_uint32 frameCount)
{ {
(void)pFramesIn;
/* Make sure every output frame is written. */ /* Make sure every output frame is written. */
while (frameCount > 0) { while (frameCount > 0) {
ma_uint64 framesToMixOut; ma_uint64 framesToMixOut;
...@@ -36,8 +38,8 @@ void data_callback(ma_device* pDevice, void* pFramesOut, const void* pFramesIn, ...@@ -36,8 +38,8 @@ void data_callback(ma_device* pDevice, void* pFramesOut, const void* pFramesIn,
/* Music. */ /* Music. */
ma_mixer_begin(&g_mixerMusic, &g_mixer, &submixFrameCountOut, &submixFrameCountIn); ma_mixer_begin(&g_mixerMusic, &g_mixer, &submixFrameCountOut, &submixFrameCountIn);
{ {
ma_mixer_mix_noise(&g_mixerMusic, &g_noise, submixFrameCountIn); ma_mixer_mix_data_source(&g_mixerMusic, &g_noise, submixFrameCountIn, 1, NULL, MA_FALSE);
ma_mixer_mix_waveform(&g_mixerMusic, &g_waveform, submixFrameCountIn); ma_mixer_mix_data_source(&g_mixerMusic, &g_waveform, submixFrameCountIn, 1, NULL, MA_FALSE);
} }
ma_mixer_end(&g_mixerMusic, &g_mixer, NULL); ma_mixer_end(&g_mixerMusic, &g_mixer, NULL);
...@@ -45,10 +47,10 @@ void data_callback(ma_device* pDevice, void* pFramesOut, const void* pFramesIn, ...@@ -45,10 +47,10 @@ void data_callback(ma_device* pDevice, void* pFramesOut, const void* pFramesIn,
ma_mixer_begin(&g_mixerEffects, &g_mixer, &submixFrameCountOut, &submixFrameCountIn); ma_mixer_begin(&g_mixerEffects, &g_mixer, &submixFrameCountOut, &submixFrameCountIn);
{ {
if (g_hasDecoder) { if (g_hasDecoder) {
ma_mixer_mix_decoder(&g_mixerEffects, &g_decoder, submixFrameCountIn, MA_TRUE); ma_mixer_mix_data_source(&g_mixerEffects, &g_decoder, submixFrameCountIn, 1, NULL, MA_TRUE);
} }
if (g_pAudioBuffer != NULL) { if (g_pAudioBuffer != NULL) {
ma_mixer_mix_audio_buffer(&g_mixerEffects, g_pAudioBuffer, submixFrameCountIn, MA_TRUE); ma_mixer_mix_data_source(&g_mixerEffects, g_pAudioBuffer, submixFrameCountIn, 1, NULL, MA_TRUE);
} }
} }
ma_mixer_end(&g_mixerEffects, &g_mixer, NULL); ma_mixer_end(&g_mixerEffects, &g_mixer, NULL);
......
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment