37 AudioResampler::AudioResampler()
39 resample_source = NULL;
42 new_num_of_samples = 0;
45 resampled_buffer = NULL;
52 resample_source =
new juce::ResamplingAudioSource(buffer_source,
false, 2);
55 resampled_buffer =
new juce::AudioSampleBuffer(2, 1);
56 resampled_buffer->clear();
59 resample_callback_buffer.buffer = resampled_buffer;
60 resample_callback_buffer.numSamples = 1;
61 resample_callback_buffer.startSample = 0;
65 AudioResampler::~AudioResampler()
71 delete resample_source;
73 delete resampled_buffer;
77 void AudioResampler::SetBuffer(juce::AudioSampleBuffer *new_buffer,
double sample_rate,
double new_sample_rate)
81 if (new_sample_rate <= 0)
82 new_sample_rate = 44100;
85 source_ratio = sample_rate / new_sample_rate;
88 SetBuffer(new_buffer, source_ratio);
92 void AudioResampler::SetBuffer(juce::AudioSampleBuffer *new_buffer,
double ratio)
96 buffer_source->setBuffer(buffer);
100 dest_ratio = 1.0 / ratio;
101 num_of_samples = buffer->getNumSamples();
102 new_num_of_samples = round(num_of_samples * dest_ratio) - 1;
105 resample_source->setResamplingRatio(source_ratio);
111 resample_source->prepareToPlay(num_of_samples + 10, 0);
116 resampled_buffer->setSize(buffer->getNumChannels(), new_num_of_samples,
true,
true,
true);
117 resample_callback_buffer.numSamples = new_num_of_samples;
118 resample_callback_buffer.startSample = 0;
119 resample_callback_buffer.clearActiveBufferRegion();
123 juce::AudioSampleBuffer* AudioResampler::GetResampledBuffer()
126 resample_source->getNextAudioBlock(resample_callback_buffer);
129 return resampled_buffer;
Header file for AudioResampler class.
This class is used to expose an AudioSampleBuffer as an AudioSource in JUCE.
This namespace is the default namespace for all code in the openshot library.