add some code
This commit is contained in:
34
managed_components/78__esp-opus-encoder/opus_resampler.cc
Normal file
34
managed_components/78__esp-opus-encoder/opus_resampler.cc
Normal file
@@ -0,0 +1,34 @@
|
||||
#include "opus_resampler.h"
|
||||
#include "silk_resampler.h"
|
||||
#include "esp_log.h"
|
||||
|
||||
#define TAG "OpusResampler"
|
||||
|
||||
OpusResampler::OpusResampler() {
|
||||
}
|
||||
|
||||
OpusResampler::~OpusResampler() {
|
||||
}
|
||||
|
||||
void OpusResampler::Configure(int input_sample_rate, int output_sample_rate) {
|
||||
int encode = input_sample_rate > output_sample_rate ? 1 : 0;
|
||||
auto ret = silk_resampler_init(&resampler_state_, input_sample_rate, output_sample_rate, encode);
|
||||
if (ret != 0) {
|
||||
ESP_LOGE(TAG, "Failed to initialize resampler");
|
||||
return;
|
||||
}
|
||||
input_sample_rate_ = input_sample_rate;
|
||||
output_sample_rate_ = output_sample_rate;
|
||||
ESP_LOGI(TAG, "Resampler configured with input sample rate %d and output sample rate %d", input_sample_rate_, output_sample_rate_);
|
||||
}
|
||||
|
||||
void OpusResampler::Process(const int16_t *input, int input_samples, int16_t *output) {
|
||||
auto ret = silk_resampler(&resampler_state_, output, input, input_samples);
|
||||
if (ret != 0) {
|
||||
ESP_LOGE(TAG, "Failed to process resampler");
|
||||
}
|
||||
}
|
||||
|
||||
int OpusResampler::GetOutputSamples(int input_samples) const {
|
||||
return input_samples * output_sample_rate_ / input_sample_rate_;
|
||||
}
|
||||
Reference in New Issue
Block a user