diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-03 16:04:27 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-03 16:04:27 +1000 |
| commit | 31f6123b7b7b21c005267ca98a64ef6d492d553e (patch) | |
| tree | b69a84386593a6484e2c8a073438497454622e33 /src | |
| parent | 3511852f39cd5023ec8e6d0b94cc69f34e9201ed (diff) | |
| download | tangara-fw-31f6123b7b7b21c005267ca98a64ef6d492d553e.tar.gz | |
Tweak buffer size and placement
Diffstat (limited to 'src')
| -rw-r--r-- | src/audio/include/stream_info.hpp | 2 | ||||
| -rw-r--r-- | src/audio/sink_mixer.cpp | 12 | ||||
| -rw-r--r-- | src/audio/stream_info.cpp | 8 |
3 files changed, 16 insertions, 6 deletions
diff --git a/src/audio/include/stream_info.hpp b/src/audio/include/stream_info.hpp index d31e035c..7cf9e847 100644 --- a/src/audio/include/stream_info.hpp +++ b/src/audio/include/stream_info.hpp @@ -16,6 +16,7 @@ #include <utility> #include <variant> +#include "esp_heap_caps.h" #include "freertos/FreeRTOS.h" #include "freertos/ringbuf.h" #include "freertos/stream_buffer.h" @@ -110,6 +111,7 @@ class OutputStream; class RawStream { public: explicit RawStream(std::size_t size); + RawStream(std::size_t size, uint32_t); ~RawStream(); auto info() -> StreamInfo& { return info_; } diff --git a/src/audio/sink_mixer.cpp b/src/audio/sink_mixer.cpp index 072dc9b7..79e6f3d3 100644 --- a/src/audio/sink_mixer.cpp +++ b/src/audio/sink_mixer.cpp @@ -20,11 +20,11 @@ static constexpr char kTag[] = "mixer"; -static constexpr std::size_t kSourceBufferLength = 4 * 1024; -static constexpr std::size_t kInputBufferLength = 4 * 1024; -static constexpr std::size_t kReformatBufferLength = 4 * 1024; +static constexpr std::size_t kSourceBufferLength = 2 * 1024; +static constexpr std::size_t kInputBufferLength = 2 * 1024; +static constexpr std::size_t kReformatBufferLength = 8 * 1024; static constexpr std::size_t kResampleBufferLength = kReformatBufferLength; -static constexpr std::size_t kQuantisedBufferLength = 2 * 1024; +static constexpr std::size_t kQuantisedBufferLength = 1 * 1024; namespace audio { @@ -35,8 +35,8 @@ SinkMixer::SinkMixer(StreamBufferHandle_t dest) source_(xStreamBufferCreate(kSourceBufferLength, 1)), sink_(dest) { input_stream_.reset(new RawStream(kInputBufferLength)); - floating_point_stream_.reset(new RawStream(kReformatBufferLength)); - resampled_stream_.reset(new RawStream(kResampleBufferLength)); + floating_point_stream_.reset(new RawStream(kReformatBufferLength, MALLOC_CAP_SPIRAM)); + resampled_stream_.reset(new RawStream(kResampleBufferLength, MALLOC_CAP_SPIRAM)); quantisation_buffer_ = { reinterpret_cast<std::byte*>(heap_caps_malloc( diff --git a/src/audio/stream_info.cpp b/src/audio/stream_info.cpp index 6efe297e..749e880e 100644 --- a/src/audio/stream_info.cpp +++ b/src/audio/stream_info.cpp @@ -30,6 +30,14 @@ RawStream::RawStream(std::size_t size) assert(buffer_ != NULL); } +RawStream::RawStream(std::size_t size, uint32_t caps) + : info_(), + buffer_size_(size), + buffer_(reinterpret_cast<std::byte*>( + heap_caps_malloc(size, caps))) { + assert(buffer_ != NULL); +} + RawStream::~RawStream() { heap_caps_free(buffer_); } |
