Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Fix conversion warnings | Chris Robinson | 2023-10-10 | 1 | -19/+21 | |
| | ||||||
* | Fix array lookup index | Chris Robinson | 2023-10-10 | 1 | -2/+3 | |
| | ||||||
* | Use size_t and uint for non-negative values and indices | Chris Robinson | 2023-10-10 | 2 | -210/+210 | |
| | ||||||
* | Use an anonymous namespace instead of static functions | Chris Robinson | 2023-10-10 | 1 | -194/+202 | |
| | ||||||
* | Combine some VADD(VMUL(... to VMADD(... | Chris Robinson | 2023-10-10 | 1 | -43/+43 | |
| | ||||||
* | Use a bool instead of an int for 0/1 | Chris Robinson | 2023-10-09 | 1 | -25/+27 | |
| | | | | Also update some comments. | |||||
* | Cleanup PFFFT | Chris Robinson | 2023-10-09 | 1 | -571/+604 | |
| | | | | | | Make stylization more consistent. Remove SVMUL (they all simulated it with a LD_PS1 on the scalar). Avoid calling LD_PS1 on the same value in a loop. | |||||
* | Avoid std::aligned_storage, it's deprecated in newer C++ | Chris Robinson | 2023-10-08 | 1 | -3/+3 | |
| | ||||||
* | Remove more type-punning from pffft | Chris Robinson | 2023-10-08 | 1 | -52/+63 | |
| | ||||||
* | Clean up some more type-punning in pffft | Chris Robinson | 2023-10-08 | 1 | -22/+42 | |
| | ||||||
* | Mark some functions as maybe_unused | Chris Robinson | 2023-10-08 | 1 | -0/+2 | |
| | | | | For non-SSE-capable targets | |||||
* | Avoid some type-punning and clean up pffft a bit | Chris Robinson | 2023-10-08 | 1 | -161/+148 | |
| | ||||||
* | Update and clarify some comments | Chris Robinson | 2023-10-07 | 2 | -91/+93 | |
| | ||||||
* | Add a generic GCC vector extension fallback for pffft | Chris Robinson | 2023-10-06 | 1 | -13/+80 | |
| | | | | Also combine multiple allocations into one. | |||||
* | Improve NEON shuffling | Chris Robinson | 2023-10-06 | 1 | -21/+3 | |
| | ||||||
* | Fix x86-64 MSVC check | Chris Robinson | 2023-10-06 | 1 | -1/+1 | |
| | ||||||
* | Use PFFFT for the convolution effect | Chris Robinson | 2023-10-06 | 1 | -40/+92 | |
| | ||||||
* | Include a copy of PFFFT | Chris Robinson | 2023-10-06 | 4 | -0/+2241 | |
| | | | | | This is a notably faster FFT implementation for 32-bit float signals, provided under a 3-clause BSD license. | |||||
* | Avoid inline assembly for getting/setting SSE state | Chris Robinson | 2023-10-05 | 1 | -20/+49 | |
| | ||||||
* | Clear the 0 and half-frequency bins for the phase shift filter | Chris Robinson | 2023-10-03 | 1 | -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). | |||||
* | Improve ambisonic rotator coefficient accuracy | Chris Robinson | 2023-10-02 | 1 | -17/+38 | |
| | ||||||
* | Declare a missing variable | Chris Robinson | 2023-10-01 | 1 | -1/+1 | |
| | ||||||
* | Get the default WASAPI device on UWP | Chris Robinson | 2023-10-01 | 1 | -25/+14 | |
| | ||||||
* | Add a wrapper for COM initialization | Chris Robinson | 2023-09-29 | 3 | -34/+62 | |
| | | | | | This helps ensure COM is initialized and deinitialized in order relative to other objects (e.g. ComPtr). | |||||
* | Ensure the WASAPI resample buffer is cleared when mixing starts | Chris Robinson | 2023-09-29 | 1 | -9/+6 | |
| | | | | | Otherwise, stopping and restarting without resetting could leave it with invalid pointers. | |||||
* | Don't inline a couple more template functions | Chris Robinson | 2023-09-26 | 1 | -2/+2 | |
| | | | | | I still wish I didn't have to force noinline just to avoid template functions being more aggressively inlined. | |||||
* | Set the appropriate padding size | Chris Robinson | 2023-09-26 | 1 | -1/+1 | |
| | | | | It's based on the original/stream size, not the ALCdevice's. | |||||
* | Constify some pointers to indicate they won't change | Chris Robinson | 2023-09-25 | 3 | -3/+3 | |
| | ||||||
* | Use std::array instead of a C-style array | Chris Robinson | 2023-09-25 | 1 | -1/+2 | |
| | ||||||
* | Make cppwinrt version configurable (#919) | Deal | 2023-09-26 | 1 | -1/+3 | |
| | ||||||
* | Compile with c++20 support (#920) | Deal | 2023-09-25 | 2 | -6/+8 | |
| | | | | | * Compile with c++20 support * Update CMakeLists.txt | |||||
* | Honor the wasapi allow-resampler option with spatial sound output | Chris Robinson | 2023-09-24 | 1 | -0/+4 | |
| | ||||||
* | Match the output sample rate if not requesting one | Chris Robinson | 2023-09-24 | 1 | -0/+4 | |
| | ||||||
* | Support resampling with WASAPI spatial audio output | Chris Robinson | 2023-09-24 | 1 | -14/+67 | |
| | ||||||
* | Fix cppwinrt exception type capture (#918) | Deal | 2023-09-23 | 1 | -1/+1 | |
| | ||||||
* | Update AppVeyor to use VS 2019 | Chris Robinson | 2023-09-22 | 1 | -2/+2 | |
| | ||||||
* | Avoid casting an integer literal | Chris Robinson | 2023-09-22 | 15 | -33/+38 | |
| | ||||||
* | Shift the appropriate type | Chris Robinson | 2023-09-22 | 2 | -6/+12 | |
| | ||||||
* | UWP: migrate C++/CX to C++/WinRT (#916) | Deal | 2023-09-22 | 3 | -83/+78 | |
| | ||||||
* | Try to get the device period for spatial audio streams | Chris Robinson | 2023-09-21 | 1 | -30/+52 | |
| | ||||||
* | Add a SampleConverter method to convert planar buffer lines | Chris Robinson | 2023-09-21 | 2 | -0/+93 | |
| | ||||||
* | Don't assume the size of AudioObjectType | Chris Robinson | 2023-09-21 | 1 | -1/+1 | |
| | ||||||
* | Again try to fix handling an enum type | Chris Robinson | 2023-09-20 | 1 | -1/+2 | |
| | ||||||
* | Don't assume an enum's underlying type | Chris Robinson | 2023-09-20 | 1 | -1/+1 | |
| | ||||||
* | Fix MSVC compilation | Chris Robinson | 2023-09-20 | 1 | -0/+2 | |
| | | | | MinGW's headers don't seem to define operator| for AudioObjectType. | |||||
* | Preliminary implementation of WASAPI spatial audio playback | Chris Robinson | 2023-09-20 | 3 | -161/+549 | |
| | ||||||
* | Replace some more unnecessary angles with vectors | Chris Robinson | 2023-09-18 | 1 | -47/+77 | |
| | ||||||
* | Fix source span size | Chris Robinson | 2023-09-17 | 1 | -5/+5 | |
| | ||||||
* | Rename noinline to NOINLINE | Chris Robinson | 2023-09-17 | 2 | -5/+5 | |
| | | | | To avoid clashes with compilers that use it as a keyword already | |||||
* | Don't inline some big functions | Chris Robinson | 2023-09-16 | 2 | -40/+35 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 |