summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2023-08-03 16:04:27 +1000
committerjacqueline <me@jacqueline.id.au>2023-08-03 16:04:27 +1000
commit31f6123b7b7b21c005267ca98a64ef6d492d553e (patch)
treeb69a84386593a6484e2c8a073438497454622e33 /src
parent3511852f39cd5023ec8e6d0b94cc69f34e9201ed (diff)
downloadtangara-fw-31f6123b7b7b21c005267ca98a64ef6d492d553e.tar.gz
Tweak buffer size and placement
Diffstat (limited to 'src')
-rw-r--r--src/audio/include/stream_info.hpp2
-rw-r--r--src/audio/sink_mixer.cpp12
-rw-r--r--src/audio/stream_info.cpp8
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_);
}