31 #include "../include/AudioResampler.h"
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;
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.