esp cert bundle

This commit is contained in:
Terrence
2024-09-01 10:37:02 +08:00
parent 5da7d1755f
commit 490b8668f6
9 changed files with 44 additions and 50 deletions

View File

@@ -8,10 +8,6 @@ OpusEncoder::OpusEncoder() {
}
OpusEncoder::~OpusEncoder() {
if (out_buffer_ != nullptr) {
free(out_buffer_);
}
if (audio_enc_ != nullptr) {
opus_encoder_destroy(audio_enc_);
}
@@ -22,10 +18,6 @@ void OpusEncoder::Configure(int sample_rate, int channels, int duration_ms) {
opus_encoder_destroy(audio_enc_);
audio_enc_ = nullptr;
}
if (out_buffer_ != nullptr) {
free(out_buffer_);
out_buffer_ = nullptr;
}
int error;
audio_enc_ = opus_encoder_create(sample_rate, channels, OPUS_APPLICATION_VOIP, &error);
@@ -40,30 +32,29 @@ void OpusEncoder::Configure(int sample_rate, int channels, int duration_ms) {
opus_encoder_ctl(audio_enc_, OPUS_SET_COMPLEXITY(5));
frame_size_ = sample_rate / 1000 * duration_ms;
out_size_ = sample_rate * channels * sizeof(int16_t);
out_buffer_ = (uint8_t*)malloc(out_size_);
assert(out_buffer_ != nullptr);
out_buffer_.resize(sample_rate * channels * sizeof(int16_t));
}
void OpusEncoder::Encode(const void* pcm, size_t pcm_len, std::function<void(const void*, size_t)> handler) {
void OpusEncoder::Encode(const iovec pcm, std::function<void(const iovec opus)> handler) {
if (audio_enc_ == nullptr) {
ESP_LOGE(TAG, "Audio encoder is not configured");
return;
}
in_buffer_.append((const char*)pcm, pcm_len);
auto pcm_data = (int16_t*)pcm.iov_base;
in_buffer_.insert(in_buffer_.end(), pcm_data, pcm_data + pcm.iov_len / sizeof(int16_t));
while (in_buffer_.size() >= frame_size_ * sizeof(int16_t)) {
auto ret = opus_encode(audio_enc_, (const opus_int16*)in_buffer_.data(), frame_size_, out_buffer_, out_size_);
while (in_buffer_.size() >= frame_size_) {
auto ret = opus_encode(audio_enc_, in_buffer_.data(), frame_size_, out_buffer_.data(), out_buffer_.size());
if (ret < 0) {
ESP_LOGE(TAG, "Failed to encode audio, error code: %ld", ret);
return;
}
if (handler != nullptr) {
handler(out_buffer_, ret);
handler(iovec { out_buffer_.data(), (size_t)ret });
}
in_buffer_.erase(0, frame_size_ * sizeof(int16_t));
in_buffer_.erase(in_buffer_.begin(), in_buffer_.begin() + frame_size_);
}
}