mirror of
https://github.com/AxioDL/boo.git
synced 2025-12-09 13:37:48 +00:00
DeferredWindowEvents moved to boo
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user