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 2年前
コミット 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"; [[maybe_unused]] static constexpr char kTag[] = "mixer";
static constexpr std::size_t kSampleBufferLength = 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; static constexpr std::size_t kSourceBufferLength = kSampleBufferLength * 2;
namespace audio { namespace audio {

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

@ -27,10 +27,12 @@
namespace drivers { namespace drivers {
// We normalise to 2-channel, 16 bit audio, which gives us a max of 4092 / 2 / 2 // DMA max buffer size for I2S is 4092. We normalise to 2-channel, 16 bit
// (16 bits) frames. This in turn means that at 48kHz, we have about 10ms of // audio, which gives us a max of 4092 / 2 / 2 (16 bits) frames. This in turn
// budget to fill each buffer. // means that at 48kHz, we have about 21ms of budget to fill each buffer.
constexpr size_t kI2SBufferLengthFrames = 512; // 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. * Interface for a DAC that receives PCM samples over I2S.

読み込み中…
キャンセル
保存