diff options
| author | jacqueline <me@jacqueline.id.au> | 2023-08-25 15:58:54 +1000 |
|---|---|---|
| committer | jacqueline <me@jacqueline.id.au> | 2023-08-25 15:58:54 +1000 |
| commit | 485e9adfce01b9b4e21dae927fb3b7ed3d5fc83d (patch) | |
| tree | b6382f69a829bdc4214d41182cbb401a0c2d69b9 /src/audio | |
| parent | 795f26873742eaad7ce53084052d988a0fd542f8 (diff) | |
| download | tangara-fw-485e9adfce01b9b4e21dae927fb3b7ed3d5fc83d.tar.gz | |
Performance tweaks for smoother tunes
- Pin the decoder task to APP_CORE to reduce context switches
- Increase sample buffer sizes
Diffstat (limited to 'src/audio')
| -rw-r--r-- | src/audio/audio_converter.cpp | 2 | ||||
| -rw-r--r-- | src/audio/audio_decoder.cpp | 4 | ||||
| -rw-r--r-- | src/audio/i2s_audio_output.cpp | 2 |
3 files changed, 4 insertions, 4 deletions
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<IAudioSource> source, std::shared_ptr<SampleConverter> sink) -> Decoder* { Decoder* task = new Decoder(source, sink); - tasks::StartPersistent<tasks::Type::kAudio>([=]() { task->Main(); }); + tasks::StartPersistent<tasks::Type::kAudio>(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; |
