diff options
Diffstat (limited to 'src/tangara/audio/processor.cpp')
| -rw-r--r-- | src/tangara/audio/processor.cpp | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/src/tangara/audio/processor.cpp b/src/tangara/audio/processor.cpp index 29124232..aa2604b5 100644 --- a/src/tangara/audio/processor.cpp +++ b/src/tangara/audio/processor.cpp @@ -1,11 +1,10 @@ /* - * Copyright 2023 jacqueline <me@jacqueline.id.au> + * Copyright 2024 jacqueline <me@jacqueline.id.au> * * SPDX-License-Identifier: GPL-3.0-only */ #include "audio/processor.hpp" -#include <stdint.h> #include <algorithm> #include <cmath> @@ -38,6 +37,11 @@ static const size_t kSourceBufferLength = kSampleBufferLength * 2; namespace audio { +/* + * The output format to convert all sources to. This is currently fixed because + * the Bluetooth output doesn't support runtime configuration of its input + * format. + */ static const I2SAudioOutput::Format kTargetFormat{ .sample_rate = 48000, .num_channels = 2, @@ -60,7 +64,10 @@ SampleProcessor::~SampleProcessor() { } auto SampleProcessor::SetOutput(std::shared_ptr<IAudioOutput> output) -> void { + // Make sure our fixed output format is valid. + assert(output->PrepareFormat(kTargetFormat) == kTargetFormat); output->Configure(kTargetFormat); + // FIXME: We should add synchronisation here, but we should be careful // about not impacting performance given that the output will change only // very rarely (if ever). @@ -337,7 +344,7 @@ auto SampleProcessor::discardCommand(Args& command) -> void { if (command.samples_available) { unprocessed_samples_ += command.samples_available; } - // End of stream commands can just be dropped. Without further actions. + // End of stream commands can just be dropped without further action. } SampleProcessor::Buffer::Buffer() |
