ladybird/Libraries/LibMedia/Audio
Zaggy1024 28f670f09f LibMedia: Implement audio time stretching with WSOLA
The algorithm is ported over from Chromium's, which produces very good
results for speech, while being not objectionable for music, especially
in the background.

Other algorithms were tested.

Phase vocoders:
- Bungee
- Signalsmith Stretch
- pvdoneright
All three of these exhibited the usual phase shifting artifacts,
causing speech to sound slightly shifted into the high end. Speech is
the main thing we want to optimize for, so these aren't ideal.

Sonic (TD-PSOLA) performs better than WSOLA for speech, especially at
rates higher than 2x, but makes background sounds/music garbled and
unpleasant. It is still worth considering for speech clarity, and could
be added as an optional feature.
2026-06-06 19:58:17 -05:00
..
AudioBuffer.cpp LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
AudioBuffer.h LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
AudioConverter.h LibMedia: Implement audio conversion in AudioDataProvider 2025-12-13 08:58:26 +01:00
AudioDevices.cpp Meta: Enable exit-time destructor warnings for libraries 2026-06-04 19:20:49 +02:00
AudioDevices.h LibWeb: Add Media Capture and Stream APIs 2026-04-21 16:40:46 -05:00
ChannelMap.h LibMedia: Give ChannelMap an invalid state 2025-12-15 18:03:03 -06:00
Forward.h LibMedia: Remove the now-unused audio loader plugins 2025-12-15 18:03:03 -06:00
PlaybackStream.cpp LibMedia: Make PlaybackStream error clearer 2026-05-23 15:59:51 -05:00
PlaybackStream.h LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
PlaybackStreamAudioUnit.cpp LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
PlaybackStreamAudioUnit.h LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
PlaybackStreamPulseAudio.cpp LibMedia: Use direct references to main event loops 2026-06-05 09:18:39 +02:00
PlaybackStreamPulseAudio.h LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
PlaybackStreamWasapi.cpp LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
PlaybackStreamWasapi.h LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
PulseAudioWrappers.cpp Meta: Enable exit-time destructor warnings for libraries 2026-06-04 19:20:49 +02:00
PulseAudioWrappers.h LibMedia: Give PlaybackStream a way to wake up after underrun 2026-05-13 02:05:35 -05:00
SampleSpecification.h LibMedia: Create a channel map for audio blocks from decoders 2025-12-13 08:58:26 +01:00
TimeStretcher.h LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
WSOLAAlgorithm.cpp LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
WSOLAAlgorithm.h LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
WSOLAInternals.cpp LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
WSOLAInternals.h LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
WSOLATimeStretcher.cpp LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00
WSOLATimeStretcher.h LibMedia: Implement audio time stretching with WSOLA 2026-06-06 19:58:17 -05:00