tweak pipeline buffers rather than i2s dma buffer

this maintains the bluetooth changes to buffer sizes, but keeps the most
important i2s buffer the same size
custom
jacqueline 1 year ago
parent f4d8b2b04a
commit f2df12836f
  1. 2
      src/audio/audio_converter.cpp
  2. 2
      src/audio/audio_decoder.cpp
  3. 10
      src/drivers/include/i2s_dac.hpp

@ -25,7 +25,7 @@
[[maybe_unused]] static constexpr char kTag[] = "mixer";
static constexpr std::size_t kSampleBufferLength =
drivers::kI2SBufferLengthFrames * sizeof(sample::Sample) * 2;
drivers::kI2SBufferLengthFrames * sizeof(sample::Sample);
static constexpr std::size_t kSourceBufferLength = kSampleBufferLength * 2;
namespace audio {

@ -48,7 +48,7 @@ namespace audio {
[[maybe_unused]] static const char* kTag = "audio_dec";
static constexpr std::size_t kCodecBufferLength =
drivers::kI2SBufferLengthFrames * sizeof(sample::Sample) * 2;
drivers::kI2SBufferLengthFrames * sizeof(sample::Sample);
Timer::Timer(std::shared_ptr<Track> t,
const codecs::ICodec::OutputFormat& format)

@ -27,10 +27,12 @@
namespace drivers {
// We normalise to 2-channel, 16 bit audio, which gives us a max of 4092 / 2 / 2
// (16 bits) frames. This in turn means that at 48kHz, we have about 10ms of
// budget to fill each buffer.
constexpr size_t kI2SBufferLengthFrames = 512;
// DMA max buffer size for I2S is 4092. We normalise to 2-channel, 16 bit
// audio, which gives us a max of 4092 / 2 / 2 (16 bits) frames. This in turn
// means that at 48kHz, we have about 21ms of budget to fill each buffer.
// We base this off of the maximum DMA size in order to minimise the amount of
// work the CPU has to do to service the DMA callbacks.
constexpr size_t kI2SBufferLengthFrames = 1024;
/**
* Interface for a DAC that receives PCM samples over I2S.

Loading…
Cancel
Save