2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
8 /** @file mixer.h Functions to mix sound samples. */
16 * Type of callback functions for supplying PCM music.
17 * A music decoder/renderer implements this function and installs it with MxSetMusicSource, which also returns the sample rate used.
18 * @param buffer Pointer to interleaved 2-channel signed 16 bit PCM data buffer, guaranteed to be 0-initialized.
19 * @param samples number of samples that must be filled into \c buffer.
21 typedef void(*MxStreamCallback
)(int16_t *buffer
, size_t samples
);
23 bool MxInitialize(uint rate
);
24 void MxMixSamples(void *buffer
, uint samples
);
26 MixerChannel
*MxAllocateChannel();
27 void MxSetChannelRawSrc(MixerChannel
*mc
, int8_t *mem
, size_t size
, uint rate
, bool is16bit
);
28 void MxSetChannelVolume(MixerChannel
*mc
, uint volume
, float pan
);
29 void MxActivateChannel(MixerChannel
*);
31 uint32_t MxSetMusicSource(MxStreamCallback music_callback
);
33 void SetEffectVolume(uint8_t volume
);