aboutsummaryrefslogtreecommitdiffstats
path: root/common
Commit message (Collapse)AuthorAgeFilesLines
* Avoid std::aligned_storage, it's deprecated in newer C++Chris Robinson2023-10-081-3/+3
|
* Remove more type-punning from pffftChris Robinson2023-10-081-52/+63
|
* Clean up some more type-punning in pffftChris Robinson2023-10-081-22/+42
|
* Avoid some type-punning and clean up pffft a bitChris Robinson2023-10-081-161/+148
|
* Update and clarify some commentsChris Robinson2023-10-072-91/+93
|
* Add a generic GCC vector extension fallback for pffftChris Robinson2023-10-061-13/+80
| | | | Also combine multiple allocations into one.
* Improve NEON shufflingChris Robinson2023-10-061-21/+3
|
* Fix x86-64 MSVC checkChris Robinson2023-10-061-1/+1
|
* Include a copy of PFFFTChris Robinson2023-10-062-0/+2201
| | | | | This is a notably faster FFT implementation for 32-bit float signals, provided under a 3-clause BSD license.
* Clear the 0 and half-frequency bins for the phase shift filterChris Robinson2023-10-031-2/+5
| | | | | | This doesn't change the filter response, but is more correct since a real signal won't have an imaginary value on them (it can only have a magnitude with a phase of 0 or pi).
* Add a wrapper for COM initializationChris Robinson2023-09-291-0/+38
| | | | | This helps ensure COM is initialized and deinitialized in order relative to other objects (e.g. ComPtr).
* Use std::array instead of a C-style arrayChris Robinson2023-09-251-1/+2
|
* Compile with c++20 support (#920)Deal2023-09-252-6/+8
| | | | | * Compile with c++20 support * Update CMakeLists.txt
* Shift the appropriate typeChris Robinson2023-09-222-6/+12
|
* Rename noinline to NOINLINEChris Robinson2023-09-171-3/+3
| | | | To avoid clashes with compilers that use it as a keyword already
* Don't inline some big functionsChris Robinson2023-09-161-0/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is very dumb. Template functions are implicitly marked inline according to C++, and contrary to popular belief, "inline" *does* influence the compiler's decision to inline a function. A function the compiler may not have decided to inline normally may be inlined anyway, or issue a warning if it still decides not to inline, if explicitly or implicitly marked as such (or does inline it as requested, but then decides to not inline different functions it normally would because of a cumulative code size increase or something). Furthermore, once a function becomes inline due to being a template function, there's no way to undo it. Marking an inline function "noinline" pushes the problem the other way, causing the compiler to not inline a function it may have decided was beneficial to inline. There's no way to declare a template function to be inlined based solely on compiler heuristics, it will always be influenced by the implicit "inline" or explicit "noinline". That's what's happening here. A number of functions had been combined into a smaller number of large-ish template functions to reduce code duplication and ease maintanence, causing them to be implicitly inline as a side-effect. GCC then manages to inline these larger functions as implicitly requested, but in doing so prevents other smaller functions (which are explicitly marked inline) from being inlined due to excessive code increase and issue a warning. The "noinline" is a heavy-handed method of un-pessimizing the optimization pass, on the assumption the compiler apparently doesn't actually want to inline the template functions, but does so because they're technically marked inline. There's no good option here until it gets acknowledged that inline does mean something beyond allowing multiple definitions, and that template (and other types of) function definitions sometimes (if not most often) want to allow multiple definitions but don't want an artificial/detrimental boost in inline prioritization. /rant
* Improve the FFT bit reversal computationChris Robinson2023-09-092-34/+43
| | | | | This also allows to include 11-bit indices in the fast lookup table path, without exceeding GCC's internal limit of compile-time calculations.
* Optimize FFT calculations for lengths of 1024 or lessChris Robinson2023-09-091-23/+64
| | | | | This replaces sin/cos calls with an array of 10 complex values for lookup tables, and separates the first loop iteration with a constant x1 multiplier.
* Use a bit_cast instead of a union for type-punningChris Robinson2023-08-251-31/+16
|
* Fix conversion and maybe-unused warnings with my_fopenChris Robinson2023-08-181-3/+10
|
* Use a string_view for the backend open methodChris Robinson2023-08-062-10/+12
|
* disable unavailable functionality on xbox (#887)Max Bachmann2023-07-261-0/+4
| | | | | * disable unavailable functionality on xbox * use not std version of getenv on xbox
* Rename threads.cpp/h to alsem.cpp/hChris Robinson2023-06-012-5/+6
|
* Move althrd_setname to its own sourceChris Robinson2023-06-014-68/+82
|
* Define FORCE_ALIGN in config.hChris Robinson2023-06-011-13/+0
|
* Fix ios crash at sem_init fail with errno=78(function not implemented) (#855)Deal(一线灵)2023-06-012-3/+5
|
* threads: do not use libdispatch where it is not present (#851)Sergey Fedorov2023-05-282-2/+8
| | | Fixes: https://github.com/kcat/openal-soft/issues/850
* Use [[maybe_unused]] instead of std::ignoreChris Robinson2023-05-271-12/+5
|
* Update and clarify a commentChris Robinson2023-05-261-4/+7
|
* Be a bit more safe with type manglingChris Robinson2023-05-241-3/+4
|
* Mark some global constexpr variables inlineChris Robinson2023-05-071-8/+8
|
* Use some more standard functionsChris Robinson2023-05-052-74/+3
|
* Use deduction guides instead of helper functions for spansChris Robinson2023-05-052-28/+22
|
* Remove custom stuff for standardChris Robinson2023-05-043-56/+31
|
* Use std::byte instead of a custom al::byteChris Robinson2023-05-043-80/+61
|
* Make and use a bit_cast functionChris Robinson2023-05-042-1/+13
| | | | Instead of reinterpret_casting between incompatible types
* Update ComPtr and use an out_ptr() functionChris Robinson2023-05-041-26/+69
|
* Replace al::optional with std::optionalChris Robinson2023-05-043-25/+7
|
* Use std::optional instead of a custom implementationChris Robinson2023-05-041-340/+4
|
* Use a macro for when __has_cpp_attribute is unsupportedChris Robinson2023-03-101-4/+10
| | | | And the standard macro is __has_cpp_attribute, not __has_attribute.
* Use macros for the likely/unlikely attributesChris Robinson2023-03-016-17/+28
| | | | | The syntax parser for GCC 8 (and earlier?) fails when these attributes are in certain places.
* Remove a [[likely]] that confuses some versions of GCCChris Robinson2023-02-281-1/+1
|
* Support IMA4 ADPCM as a mixing voice formatChris Robinson2023-02-143-13/+30
|
* Avoid using auto for lambda parametersChris Robinson2023-02-061-1/+1
|
* Don't try to use std::pointer_traits::to_addressChris Robinson2023-01-301-21/+2
|
* Try to fix has_to_addressChris Robinson2023-01-301-3/+7
|
* Don't pass an unnecessarily large alignment to allocator::rebindChris Robinson2023-01-301-2/+4
|
* Use std::pointer_traits::to_address when availableChris Robinson2023-01-291-1/+16
|
* Change the IS_VALID_CONTAINER macro to a constexpr boolChris Robinson2023-01-291-11/+11
|
* Avoid using to_address on an end iteratorChris Robinson2023-01-291-4/+3
|