/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#include "SoundTouch.h"

// Exposed C API that is used by RLBox

extern "C" {

void SetSampleRate(soundtouch::SoundTouch* mTimeStretcher, uint srate);
void SetChannels(soundtouch::SoundTouch* mTimeStretcher, uint numChannels);
void SetPitch(soundtouch::SoundTouch* mTimeStretcher, double newPitch);
void SetSetting(soundtouch::SoundTouch* mTimeStretcher, int settingId,
                int value);
void SetTempo(soundtouch::SoundTouch* mTimeStretcher, double newTempo);
void SetRate(soundtouch::SoundTouch* mTimeStretcher, double newRate);
uint NumChannels(soundtouch::SoundTouch* mTimeStretcher);
uint NumSamples(soundtouch::SoundTouch* mTimeStretcher);
uint NumUnprocessedSamples(soundtouch::SoundTouch* mTimeStretcher);
void PutSamples(soundtouch::SoundTouch* mTimeStretcher,
                const soundtouch::SAMPLETYPE* samples, uint numSamples);
uint ReceiveSamples(soundtouch::SoundTouch* mTimeStretcher,
                    soundtouch::SAMPLETYPE* output, uint maxSamples);
void Flush(soundtouch::SoundTouch* mTimeStretcher);
}
