diff --git a/ultramodern/audio.cpp b/ultramodern/audio.cpp index 8fa2061..f4f7257 100644 --- a/ultramodern/audio.cpp +++ b/ultramodern/audio.cpp @@ -23,31 +23,15 @@ void ultramodern::set_audio_frequency(uint32_t freq) { } void ultramodern::queue_audio_buffer(RDRAM_ARG PTR(int16_t) audio_data_, uint32_t byte_count) { - // Buffer for holding the output of swapping the audio channels. This is reused across - // calls to reduce runtime allocations. - static std::vector swap_buffer; - // Ensure that the byte count is an integer multiple of samples. assert((byte_count & 1) == 0); // Calculate the number of samples from the number of bytes. uint32_t sample_count = byte_count / sizeof(int16_t); - // Make sure the swap buffer is large enough to hold all the incoming audio data. - if (sample_count > swap_buffer.size()) { - swap_buffer.resize(sample_count); - } - - // Swap the audio channels into the swap buffer to correct for the address xor caused by endianness handling. - int16_t* audio_data = TO_PTR(int16_t, audio_data_); - for (size_t i = 0; i < sample_count; i += 2) { - swap_buffer[i + 0] = audio_data[i + 1]; - swap_buffer[i + 1] = audio_data[i + 0]; - } - // Queue the swapped audio data. if (audio_callbacks.queue_samples) { - audio_callbacks.queue_samples(swap_buffer.data(), sample_count); + audio_callbacks.queue_samples(TO_PTR(int16_t, audio_data_), sample_count); } }