Add static_cast<f32>() to integer-to-float conversions in audio_core
to satisfy Android NDK's -Werror=implicit-int-float-conversion flag.
Fixes compilation errors in fft.cpp, loudness_calculator.cpp, and
limiter.cpp on Android builds.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit adds further Audio REV 15 support to enable compatibility with games
compiled against Nintendo Switch SDK 19.0.0 and later versions.
Fixes: Audio compatibility issues with SDK 19.0.0+ games
Resolves: Missing Audio REV 15 feature support
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Audio Core:
- Add support for splitter previous volume reset (REV 13+)
- Implement new audio processing time limits (REV 14-15)
- Add voice channel resource limits and effect processing v3
- Support float biquad filters for improved audio quality
- Enhance error handling to prevent audio system crashes
Android UI:
- Simplify FPS, RAM, and thermal indicator views
- Remove complex backgrounds and icons for cleaner display
- Reduce view sizes and improve text-based rendering
- Maintain color-coded status indicators for performance metrics
Core System:
- Improve file system save data space handling
- Enhance kernel synchronization error handling
- Add new error modules and result codes
- Fix potential infinite loops in handle operations
These changes improve audio processing capabilities while providing a cleaner,
more performant Android UI experience.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
This commit addresses serveral bugs within the audio service where OpenAL would fail to register the output device to the mapped engine.
- Increase null safety checks for all audio backends (cubeb, sdl2, openal)
- Added failsafe for Device selection
These ensure the audio_renderer can validate calls from the OpenAL engine, Credits to Hayate Yoshida for helping Identify the issue.
Credit: Hayate Yoshida <hayate_yoshida@citron-emu.org>
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Fix LTO linking issues on CachyOS with GCC 15.x
- Add LTO support to all core library targets (input_common, frontend_common,
network, shader_recompiler, web_service) that were missing LTO configuration
- Create citron_configure_lto() helper function for consistent LTO handling
- Implement CachyOS-specific detection via /etc/os-release and kernel version
- Apply conservative LTO flags (-flto=auto -ffat-lto-objects) only for
CachyOS + GCC 15+ to resolve linking errors with newer toolchains
- Other distributions continue using aggressive LTO settings for maximum performance
- Disable LTO on executable targets to prevent main function optimization issues
This resolves "undefined symbol" errors when building with -DCITRON_ENABLE_LTO=ON
on CachyOS while maintaining optimal LTO performance on other distributions.
Fixes linking errors including:
- Core::Frontend::EmuWindow symbols
- Core::System methods
- Settings::values
- Common logging functions
Tested on CachyOS with GCC 15.1.1 + LLD 20.1.8
Signed-off-by: Boss.sfc <boss.sfc@citron-emu.org>
- Change mix size mismatch from error to warning with recovery
- Adjust input pointer when consumed size doesn't match header size
to prevent desync and allow processing to continue
- Expand VoiceInfo::InParameter struct by 24 bytes (0x170 -> 0x188)
to support newer audio renderer versions
- Update static_assert to reflect new structure size
This improves compatibility with games that use newer audio renderer versions or have slight structural differences.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
- Add complete OpenAL sink implementation with robust error handling
- Support for device enumeration using ALC extensions
- Implement dummy streams for graceful degradation when OpenAL fails
- Add proper audio threading and buffer management
- Include comprehensive logging and diagnostic information
- Add stream limits and retry mechanisms for stability
Additional changes:
- Add ENABLE_OPENAL CMake option and OpenAL dependency management
- Include openal-soft in vcpkg dependencies
- Add OpenAL to audio engine settings enum
The OpenAL backend provides an alternative audio solution alongside
existing Cubeb and SDL2 backends, with enhanced device compatibility
and improved error recovery mechanisms.
Signed-off-by: Zephyron <zephyron@citron-emu.org>
Updates the audio core revision number to match newer firmware requirements, allowing the emulator to properly handle audio features from more recent Switch software.
Signed-off-by: Zephyron <zephyron@citron-emu.org>