DeferredWindowEvents moved to boo

This commit is contained in:
Jack Andersen
2016-05-10 18:50:26 -10:00
parent f86b9706d4
commit b3e77c4384
6 changed files with 305 additions and 7 deletions

View File

@@ -18,6 +18,7 @@ AudioVoice::~AudioVoice()
void AudioVoice::setPitchRatio(double ratio)
{
m_pitchRatio = ratio;
if (m_dynamicRate)
{
soxr_error_t err = soxr_set_io_ratio(m_src, ratio, m_parent.mixInfo().m_periodFrames);
@@ -52,11 +53,18 @@ AudioVoiceMono::AudioVoiceMono(BaseAudioVoiceEngine& root, IAudioMix& parent, IA
double sampleRate, bool dynamicRate)
: AudioVoice(root, parent, cb, dynamicRate)
{
soxr_io_spec_t ioSpec = soxr_io_spec(SOXR_INT16_I, parent.mixInfo().m_sampleFormat);
soxr_quality_spec_t qSpec = soxr_quality_spec(SOXR_20_BITQ, dynamicRate ? SOXR_VR : 0);
resetSampleRate(sampleRate);
}
void AudioVoiceMono::resetSampleRate(double sampleRate)
{
soxr_delete(m_src);
soxr_io_spec_t ioSpec = soxr_io_spec(SOXR_INT16_I, m_parent.mixInfo().m_sampleFormat);
soxr_quality_spec_t qSpec = soxr_quality_spec(SOXR_20_BITQ, m_dynamicRate ? SOXR_VR : 0);
soxr_error_t err;
m_src = soxr_create(sampleRate, parent.mixInfo().m_sampleRate, 1,
m_src = soxr_create(sampleRate, m_parent.mixInfo().m_sampleRate, 1,
&err, &ioSpec, &qSpec, nullptr);
if (err)
@@ -66,6 +74,7 @@ AudioVoiceMono::AudioVoiceMono(BaseAudioVoiceEngine& root, IAudioMix& parent, IA
}
soxr_set_input_fn(m_src, soxr_input_fn_t(SRCCallback), this, 0);
setPitchRatio(m_pitchRatio);
}
size_t AudioVoiceMono::SRCCallback(AudioVoiceMono* ctx, int16_t** data, size_t frames)
@@ -146,11 +155,18 @@ AudioVoiceStereo::AudioVoiceStereo(BaseAudioVoiceEngine& root, IAudioMix& parent
double sampleRate, bool dynamicRate)
: AudioVoice(root, parent, cb, dynamicRate)
{
soxr_io_spec_t ioSpec = soxr_io_spec(SOXR_INT16_I, parent.mixInfo().m_sampleFormat);
soxr_quality_spec_t qSpec = soxr_quality_spec(SOXR_20_BITQ, dynamicRate ? SOXR_VR : 0);
resetSampleRate(sampleRate);
}
void AudioVoiceStereo::resetSampleRate(double sampleRate)
{
soxr_delete(m_src);
soxr_io_spec_t ioSpec = soxr_io_spec(SOXR_INT16_I, m_parent.mixInfo().m_sampleFormat);
soxr_quality_spec_t qSpec = soxr_quality_spec(SOXR_20_BITQ, m_dynamicRate ? SOXR_VR : 0);
soxr_error_t err;
m_src = soxr_create(sampleRate, parent.mixInfo().m_sampleRate, 2,
m_src = soxr_create(sampleRate, m_parent.mixInfo().m_sampleRate, 2,
&err, &ioSpec, &qSpec, nullptr);
if (!m_src)
@@ -160,6 +176,7 @@ AudioVoiceStereo::AudioVoiceStereo(BaseAudioVoiceEngine& root, IAudioMix& parent
}
soxr_set_input_fn(m_src, soxr_input_fn_t(SRCCallback), this, 0);
setPitchRatio(m_pitchRatio);
}
size_t AudioVoiceStereo::SRCCallback(AudioVoiceStereo* ctx, int16_t** data, size_t frames)

View File

@@ -33,7 +33,8 @@ protected:
IAudioVoiceCallback* m_cb;
/* Sample-rate converter */
soxr_t m_src;
soxr_t m_src = nullptr;
double m_pitchRatio = 1.0;
bool m_dynamicRate;
/* Running bool */
@@ -56,6 +57,7 @@ public:
class AudioVoiceMono : public AudioVoice
{
AudioMatrixMono m_matrix;
void resetSampleRate(double sampleRate);
static size_t SRCCallback(AudioVoiceMono* ctx,
int16_t** data, size_t requestedLen);
@@ -75,6 +77,7 @@ public:
class AudioVoiceStereo : public AudioVoice
{
AudioMatrixStereo m_matrix;
void resetSampleRate(double sampleRate);
static size_t SRCCallback(AudioVoiceStereo* ctx,
int16_t** data, size_t requestedLen);