serenity/Ladybird
kleines Filmröllchen b4fbd30b70 AudioServer+Userland: Decouple client sample rates from device rate
This change was a long time in the making ever since we obtained sample
rate awareness in the system. Now, each client has its own sample rate,
accessible via new IPC APIs, and the device sample rate is only
accessible via the management interface. AudioServer takes care of
resampling client streams into the device sample rate. Therefore, the
main improvement introduced with this commit is full responsiveness to
sample rate changes; all open audio programs will continue to play at
correct speed with the audio resampled to the new device rate.

The immediate benefits are manifold:
- Gets rid of the legacy hardware sample rate IPC message in the
  non-managing client
- Removes duplicate resampling and sample index rescaling code
  everywhere
- Avoids potential sample index scaling bugs in SoundPlayer (which have
  happened many times before) and fixes a sample index scaling bug in
  aplay
- Removes several FIXMEs
- Reduces amount of sample copying in all applications (especially
  Piano, where this is critical), improving performance
- Reduces number of resampling users, making future API changes (which
  will need to happen for correct resampling to be implemented) easier

I also threw in a simple race condition fix for Piano's audio player
loop.
2023-07-01 23:27:24 +01:00
..
android
cmake
Icons Ladybird: Use the DALL-E ladybird globe as the application icon 2023-05-27 17:26:29 +02:00
SQLServer Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
WebContent Ladybird+LibWeb+WebConent: Drive audio in Ladybird off the main thread 2023-06-21 06:14:15 +02:00
WebDriver Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
.gitignore
AndroidPlatform.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
AudioCodecPluginLadybird.cpp AudioServer+Userland: Decouple client sample rates from device rate 2023-07-01 23:27:24 +01:00
AudioCodecPluginLadybird.h Ladybird+LibWeb+WebConent: Drive audio in Ladybird off the main thread 2023-06-21 06:14:15 +02:00
BrowserWindow.cpp Ladybird: Add initial support for Ctrl+Scroll to zoom in/out 2023-07-01 08:07:33 +02:00
BrowserWindow.h Ladybird: Add initial support for Ctrl+Scroll to zoom in/out 2023-07-01 08:07:33 +02:00
CMakeLists.txt Ladybird+LibWeb+WebContent: Create a platform plugin for playing audio 2023-06-13 06:14:01 +02:00
ConsoleWidget.cpp Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
ConsoleWidget.h Ladybird: Implement the JavaScript console using a WebContentView 2023-04-23 14:30:23 +02:00
EventLoopImplementationQt.cpp LibCore: Remove unused EventLoopManager::wake() 2023-04-26 19:17:04 +01:00
EventLoopImplementationQt.h LibCore: Remove unused EventLoopManager::wake() 2023-04-26 19:17:04 +01:00
FontPluginQt.cpp LibWeb: Add --layout-test-mode flag to HeadlessBrowser 2023-05-08 14:47:52 +02:00
FontPluginQt.h LibWeb: Add --layout-test-mode flag to HeadlessBrowser 2023-05-08 14:47:52 +02:00
HelperProcess.cpp Ladybird: Look for helper processes at {app_dir}/{helper}/{helper} 2023-05-31 13:24:49 +02:00
HelperProcess.h Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
ImageCodecPluginLadybird.cpp Ladybird: Simplify ImageCodecPluginLadybird a bit 2023-06-02 09:57:20 +01:00
ImageCodecPluginLadybird.h
Info.plist
InspectorWidget.cpp Ladybird: Allow right clicking and inspecting elements 2023-05-09 06:16:58 +02:00
InspectorWidget.h Ladybird: Allow right clicking and inspecting elements 2023-05-09 06:16:58 +02:00
ladybird.nix Ladybird: Add qt6.qtmultimedia to dependencies in nix-shell script 2023-06-29 21:20:37 +01:00
ladybird.qrc Ladybird: Use the DALL-E ladybird globe as the application icon 2023-05-27 17:26:29 +02:00
LocationEdit.cpp Ladybird: Add placeholder to LocationEdit 2023-05-28 05:47:20 -06:00
LocationEdit.h Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
main.cpp Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
ModelTranslator.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
ModelTranslator.h Ladybird: Allow right clicking and inspecting elements 2023-05-09 06:16:58 +02:00
README.md Documentation: Homogenize Ladybird build instructions 2023-05-08 20:53:25 -06:00
RequestManagerQt.cpp Ladybird: Stop telling Qt to use HTTP pipelining 2023-05-06 12:49:12 +02:00
RequestManagerQt.h Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
Settings.cpp Ladybird: Use the same default new tab page URL as Browser 2023-06-08 07:22:00 +02:00
Settings.h Ladybird: Remove the "home" icon from the toolbar (and the concept) 2023-05-05 16:58:08 +02:00
SettingsDialog.cpp Ladybird: Remove the "home" icon from the toolbar (and the concept) 2023-05-05 16:58:08 +02:00
SettingsDialog.h Ladybird: Remove the "home" icon from the toolbar (and the concept) 2023-05-05 16:58:08 +02:00
Tab.cpp Ladybird: Add context menu items to directly open audio files 2023-06-19 17:42:55 +02:00
Tab.h Ladybird+LibJS: Add CLI option to run browser with LibJS bytecode VM 2023-06-17 14:16:45 +02:00
Utilities.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
Utilities.h
WebContentView.cpp Ladybird: Don't scroll web view if wheel event is a Ctrl+Wheel zoom 2023-07-01 08:12:42 +02:00
WebContentView.h Ladybird: Don't scroll web view if wheel event is a Ctrl+Wheel zoom 2023-07-01 08:12:42 +02:00
WebSocketClientManagerLadybird.cpp
WebSocketClientManagerLadybird.h
WebSocketImplQt.cpp Ladybird: Define AK_DONT_REPLACE_STD via CMake rather than in every file 2023-04-24 14:49:04 +02:00
WebSocketImplQt.h
WebSocketLadybird.cpp
WebSocketLadybird.h

Ladybird

Ladybird is a web browser built on the LibWeb and LibJS engines from SerenityOS with a cross-platform GUI in Qt.

For more information about Ladybird, see this blog post.

See build instructions.