28 #include "../include/AudioResampler.h" 34 AudioResampler::AudioResampler()
36 resample_source = NULL;
39 new_num_of_samples = 0;
42 resampled_buffer = NULL;
49 resample_source =
new ResamplingAudioSource(buffer_source,
false, 2);
52 resampled_buffer =
new AudioSampleBuffer(2, 1);
53 resampled_buffer->clear();
56 resample_callback_buffer.buffer = resampled_buffer;
57 resample_callback_buffer.numSamples = 1;
58 resample_callback_buffer.startSample = 0;
62 AudioResampler::~AudioResampler()
68 delete resample_source;
70 delete resampled_buffer;
74 void AudioResampler::SetBuffer(AudioSampleBuffer *new_buffer,
double sample_rate,
double new_sample_rate)
78 if (new_sample_rate <= 0)
79 new_sample_rate == 44100;
82 source_ratio = sample_rate / new_sample_rate;
85 SetBuffer(new_buffer, source_ratio);
89 void AudioResampler::SetBuffer(AudioSampleBuffer *new_buffer,
double ratio)
93 buffer_source->setBuffer(buffer);
97 dest_ratio = 1.0 / ratio;
98 num_of_samples = buffer->getNumSamples();
99 new_num_of_samples = round(num_of_samples * dest_ratio) - 1;
102 resample_source->setResamplingRatio(source_ratio);
108 resample_source->prepareToPlay(num_of_samples + 10, 0);
113 resampled_buffer->setSize(buffer->getNumChannels(), new_num_of_samples,
true,
true,
true);
114 resample_callback_buffer.numSamples = new_num_of_samples;
115 resample_callback_buffer.startSample = 0;
116 resample_callback_buffer.clearActiveBufferRegion();
120 AudioSampleBuffer* AudioResampler::GetResampledBuffer()
123 resample_source->getNextAudioBlock(resample_callback_buffer);
126 return resampled_buffer;
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.