From 4118d880c3f20dbd9304a3f50d6d111f194592c8 Mon Sep 17 00:00:00 2001 From: jacqueline Date: Mon, 7 Aug 2023 09:47:44 +1000 Subject: [PATCH] Fix dangle build issues, do some tweaks to investigate performance --- src/audio/CMakeLists.txt | 2 +- src/audio/i2s_audio_output.cpp | 2 +- src/audio/include/sink_mixer.hpp | 1 - src/audio/resample.cpp | 3 ++- src/audio/sink_mixer.cpp | 10 +++------- tools/cmake/common.cmake | 1 - 6 files changed, 7 insertions(+), 12 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(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 input, cpp::span output, bool end_of_data) -> std::pair { size_t samples_used = 0; - std::vector samples_produced = {num_channels_, 0}; + std::vector 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([&]() { Main(); }); } @@ -188,9 +187,6 @@ auto SinkMixer::Resample(InputStream& in, OutputStream& out) -> bool { auto res = resampler_->Process(in.data_as(), out.data_as(), 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)); diff --git a/tools/cmake/common.cmake b/tools/cmake/common.cmake index 56071b79..24d29a9a 100644 --- a/tools/cmake/common.cmake +++ b/tools/cmake/common.cmake @@ -14,7 +14,6 @@ list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/cbor") list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/fatfs") list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/komihash") list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/libfoxenflac") -list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/libsamplerate") list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/libmad") list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/libtags") list(APPEND EXTRA_COMPONENT_DIRS "$ENV{PROJ_PATH}/lib/lvgl")