From 485e9adfce01b9b4e21dae927fb3b7ed3d5fc83d Mon Sep 17 00:00:00 2001 From: jacqueline Date: Fri, 25 Aug 2023 15:58:54 +1000 Subject: Performance tweaks for smoother tunes - Pin the decoder task to APP_CORE to reduce context switches - Increase sample buffer sizes --- src/audio/audio_converter.cpp | 2 +- src/audio/audio_decoder.cpp | 4 ++-- src/audio/i2s_audio_output.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) (limited to 'src/audio') diff --git a/src/audio/audio_converter.cpp b/src/audio/audio_converter.cpp index c540d821..60d83648 100644 --- a/src/audio/audio_converter.cpp +++ b/src/audio/audio_converter.cpp @@ -24,7 +24,7 @@ static constexpr char kTag[] = "mixer"; static constexpr std::size_t kSourceBufferLength = 8 * 1024; -static constexpr std::size_t kSampleBufferLength = 240 * 2; +static constexpr std::size_t kSampleBufferLength = 240 * 2 * 4; namespace audio { diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp index 03f81124..f9f76387 100644 --- a/src/audio/audio_decoder.cpp +++ b/src/audio/audio_decoder.cpp @@ -46,7 +46,7 @@ namespace audio { static const char* kTag = "audio_dec"; -static constexpr std::size_t kCodecBufferLength = 240 * 4; +static constexpr std::size_t kCodecBufferLength = 240 * 4 * 4; Timer::Timer(const codecs::ICodec::OutputFormat& format) : current_seconds_(0), @@ -79,7 +79,7 @@ auto Timer::AddSamples(std::size_t samples) -> void { auto Decoder::Start(std::shared_ptr source, std::shared_ptr sink) -> Decoder* { Decoder* task = new Decoder(source, sink); - tasks::StartPersistent([=]() { task->Main(); }); + tasks::StartPersistent(1, [=]() { task->Main(); }); return task; } diff --git a/src/audio/i2s_audio_output.cpp b/src/audio/i2s_audio_output.cpp index 9e18597a..359cd4c6 100644 --- a/src/audio/i2s_audio_output.cpp +++ b/src/audio/i2s_audio_output.cpp @@ -37,7 +37,7 @@ static constexpr uint16_t kMaxVolume = 0x1ff; static constexpr uint16_t kMinVolume = 0b0; static constexpr uint16_t kMaxVolumeBeforeClipping = 0x185; static constexpr uint16_t kLineLevelVolume = 0x13d; -static constexpr uint16_t kDefaultVolume = 0x128; +static constexpr uint16_t kDefaultVolume = 0x100; static constexpr size_t kDrainBufferSize = 8 * 1024; -- cgit v1.2.3