summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-07 09:47:44 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-07 09:47:44 +1000
commit4118d880c3f20dbd9304a3f50d6d111f194592c8 (patch)
tree844aebfea5e2d688802a47f497495c602896b641 /src
parent60f767713227b5405b855e6e6e2a0475ecd96bcc (diff)
downloadtangara-fw-4118d880c3f20dbd9304a3f50d6d111f194592c8.tar.gz
Fix dangle build issues, do some tweaks to investigate performance
Diffstat (limited to 'src')
-rw-r--r--src/audio/CMakeLists.txt2
-rw-r--r--src/audio/i2s_audio_output.cpp2
-rw-r--r--src/audio/include/sink_mixer.hpp1
-rw-r--r--src/audio/resample.cpp3
-rw-r--r--src/audio/sink_mixer.cpp10
5 files changed, 7 insertions, 11 deletions
diff --git a/src/audio/CMakeLists.txt b/src/audio/CMakeLists.txt
index ddfc7eb4..bd4ba32d 100644
--- a/src/audio/CMakeLists.txt
+++ b/src/audio/CMakeLists.txt
@@ -7,6 +7,6 @@ idf_component_register(
"stream_message.cpp" "i2s_audio_output.cpp" "stream_buffer.cpp" "track_queue.cpp"
"stream_event.cpp" "stream_info.cpp" "audio_fsm.cpp" "sink_mixer.cpp" "resample.cpp"
INCLUDE_DIRS "include"
- REQUIRES "codecs" "drivers" "cbor" "result" "tasks" "span" "memory" "tinyfsm" "database" "system_fsm" "playlist" "libsamplerate")
+ REQUIRES "codecs" "drivers" "cbor" "result" "tasks" "span" "memory" "tinyfsm" "database" "system_fsm" "playlist")
target_compile_options(${COMPONENT_LIB} PRIVATE ${EXTRA_WARNINGS})
diff --git a/src/audio/i2s_audio_output.cpp b/src/audio/i2s_audio_output.cpp
index 4eab3e02..41640e7a 100644
--- a/src/audio/i2s_audio_output.cpp
+++ b/src/audio/i2s_audio_output.cpp
@@ -127,7 +127,7 @@ auto I2SAudioOutput::PrepareFormat(const StreamInfo::Pcm& orig)
return StreamInfo::Pcm{
.channels = std::min<uint8_t>(orig.channels, 2),
.bits_per_sample = 16,
- .sample_rate = 48000,
+ .sample_rate = 44100,
};
}
diff --git a/src/audio/include/sink_mixer.hpp b/src/audio/include/sink_mixer.hpp
index 1bf12016..e8a2d8cc 100644
--- a/src/audio/include/sink_mixer.hpp
+++ b/src/audio/include/sink_mixer.hpp
@@ -12,7 +12,6 @@
#include "resample.hpp"
#include "sample.hpp"
-#include "samplerate.h"
#include "audio_decoder.hpp"
#include "audio_sink.hpp"
diff --git a/src/audio/resample.cpp b/src/audio/resample.cpp
index 93ea1034..6f7e670e 100644
--- a/src/audio/resample.cpp
+++ b/src/audio/resample.cpp
@@ -231,7 +231,8 @@ auto Resampler::Process(cpp::span<const sample::Sample> input,
cpp::span<sample::Sample> output,
bool end_of_data) -> std::pair<size_t, size_t> {
size_t samples_used = 0;
- std::vector<size_t> samples_produced = {num_channels_, 0};
+ std::vector<size_t> samples_produced = {};
+ samples_produced.resize(num_channels_, 0);
size_t total_samples_produced = 0;
size_t slop = (factor_ >> kPhaseBits) + 1;
diff --git a/src/audio/sink_mixer.cpp b/src/audio/sink_mixer.cpp
index ba306626..8a40fd63 100644
--- a/src/audio/sink_mixer.cpp
+++ b/src/audio/sink_mixer.cpp
@@ -15,7 +15,6 @@
#include "freertos/projdefs.h"
#include "resample.hpp"
#include "sample.hpp"
-#include "samplerate.h"
#include "stream_info.hpp"
#include "tasks.hpp"
@@ -23,7 +22,7 @@
static constexpr char kTag[] = "mixer";
static constexpr std::size_t kSourceBufferLength = 2 * 1024;
-static constexpr std::size_t kSampleBufferLength = 4 * 1024;
+static constexpr std::size_t kSampleBufferLength = 2 * 1024;
namespace audio {
@@ -33,8 +32,8 @@ SinkMixer::SinkMixer(StreamBufferHandle_t dest)
resampler_(nullptr),
source_(xStreamBufferCreate(kSourceBufferLength, 1)),
sink_(dest) {
- input_stream_.reset(new RawStream(kSampleBufferLength));
- resampled_stream_.reset(new RawStream(kSampleBufferLength));
+ input_stream_.reset(new RawStream(kSampleBufferLength, MALLOC_CAP_SPIRAM));
+ resampled_stream_.reset(new RawStream(kSampleBufferLength, MALLOC_CAP_SPIRAM));
tasks::StartPersistent<tasks::Type::kMixer>([&]() { Main(); });
}
@@ -188,9 +187,6 @@ auto SinkMixer::Resample(InputStream& in, OutputStream& out) -> bool {
auto res = resampler_->Process(in.data_as<sample::Sample>(),
out.data_as<sample::Sample>(), false);
- ESP_LOGI(kTag, "resampler sent %u samples, consumed %u, produced %u",
- in.data().size(), res.first, res.second);
-
in.consume(res.first * sizeof(sample::Sample));
out.add(res.first * sizeof(sample::Sample));