Tweak buffer size and placement

custom
jacqueline 2 years ago
parent 3511852f39
commit 31f6123b7b
  1. 2
      src/audio/include/stream_info.hpp
  2. 12
      src/audio/sink_mixer.cpp
  3. 8
      src/audio/stream_info.cpp

@ -16,6 +16,7 @@
#include <utility> #include <utility>
#include <variant> #include <variant>
#include "esp_heap_caps.h"
#include "freertos/FreeRTOS.h" #include "freertos/FreeRTOS.h"
#include "freertos/ringbuf.h" #include "freertos/ringbuf.h"
#include "freertos/stream_buffer.h" #include "freertos/stream_buffer.h"
@ -110,6 +111,7 @@ class OutputStream;
class RawStream { class RawStream {
public: public:
explicit RawStream(std::size_t size); explicit RawStream(std::size_t size);
RawStream(std::size_t size, uint32_t);
~RawStream(); ~RawStream();
auto info() -> StreamInfo& { return info_; } auto info() -> StreamInfo& { return info_; }

@ -20,11 +20,11 @@
static constexpr char kTag[] = "mixer"; static constexpr char kTag[] = "mixer";
static constexpr std::size_t kSourceBufferLength = 4 * 1024; static constexpr std::size_t kSourceBufferLength = 2 * 1024;
static constexpr std::size_t kInputBufferLength = 4 * 1024; static constexpr std::size_t kInputBufferLength = 2 * 1024;
static constexpr std::size_t kReformatBufferLength = 4 * 1024; static constexpr std::size_t kReformatBufferLength = 8 * 1024;
static constexpr std::size_t kResampleBufferLength = kReformatBufferLength; 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 { namespace audio {
@ -35,8 +35,8 @@ SinkMixer::SinkMixer(StreamBufferHandle_t dest)
source_(xStreamBufferCreate(kSourceBufferLength, 1)), source_(xStreamBufferCreate(kSourceBufferLength, 1)),
sink_(dest) { sink_(dest) {
input_stream_.reset(new RawStream(kInputBufferLength)); input_stream_.reset(new RawStream(kInputBufferLength));
floating_point_stream_.reset(new RawStream(kReformatBufferLength)); floating_point_stream_.reset(new RawStream(kReformatBufferLength, MALLOC_CAP_SPIRAM));
resampled_stream_.reset(new RawStream(kResampleBufferLength)); resampled_stream_.reset(new RawStream(kResampleBufferLength, MALLOC_CAP_SPIRAM));
quantisation_buffer_ = { quantisation_buffer_ = {
reinterpret_cast<std::byte*>(heap_caps_malloc( reinterpret_cast<std::byte*>(heap_caps_malloc(

@ -30,6 +30,14 @@ RawStream::RawStream(std::size_t size)
assert(buffer_ != NULL); 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() { RawStream::~RawStream() {
heap_caps_free(buffer_); heap_caps_free(buffer_);
} }

Loading…
Cancel
Save