Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | Fix some integer truncation warnings in MSVC | Chris Robinson | 2019-04-12 | 1 | -1/+1 |
| | |||||
* | Remove a couple unused member variables | Chris Robinson | 2019-03-30 | 1 | -1/+0 |
| | |||||
* | Use a temporary buffer for HRTF filter accumulation | Chris Robinson | 2019-03-29 | 1 | -0/+2 |
| | | | | | Similar to the history buffer, to avoid using the state buffer as a ring buffer. | ||||
* | Simplify calculating azimuth and elevation indices for HRTF | Chris Robinson | 2019-03-14 | 1 | -1/+1 |
| | |||||
* | Reverse the HRTF field array | Chris Robinson | 2019-02-27 | 1 | -1/+6 |
| | | | | | | Most often a sound's distance will be beyond the farthest field measurement, so It's more efficient to have the farthest field first and avoid looping through the whole field array for them. | ||||
* | Rename MAX_AMBI_COEFFS and MAX_AMBI2D_COEFFS | Chris Robinson | 2019-02-19 | 1 | -1/+1 |
| | |||||
* | Use std::arrays for HRIR coeffs and values | Chris Robinson | 2019-02-07 | 1 | -6/+11 |
| | |||||
* | Pass the distance to GetHrtfCoeffs | Chris Robinson | 2019-01-28 | 1 | -1/+1 |
| | |||||
* | Collect HRTF field info into a struct | Chris Robinson | 2019-01-28 | 1 | -2/+6 |
| | |||||
* | Make IncRef and DecRef member functions | Chris Robinson | 2019-01-24 | 1 | -2/+6 |
| | |||||
* | Use a flexible array for DirectHrtfState and ALvoice | Chris Robinson | 2019-01-12 | 1 | -4/+10 |
| | |||||
* | Make Create methods for structs with flexible array members ... | Chris Robinson | 2019-01-08 | 1 | -0/+2 |
| | | | | ... that are used with unique_ptr. | ||||
* | Cleanup some includes | Chris Robinson | 2018-12-25 | 1 | -2/+8 |
| | |||||
* | Rename a couple HRTF structs | Chris Robinson | 2018-12-22 | 1 | -7/+7 |
| | |||||
* | Don't convert the HRTF decoder virtual speaker positions to radians | Chris Robinson | 2018-12-21 | 1 | -2/+3 |
| | |||||
* | Avoid static global initialization functions | Chris Robinson | 2018-12-08 | 1 | -2/+0 |
| | |||||
* | Make a DirectHrtfState constructor to try appeasing MSVC | Chris Robinson | 2018-11-22 | 1 | -2/+4 |
| | |||||
* | Use unique_ptr for DirectHrtfState | Chris Robinson | 2018-11-22 | 1 | -0/+3 |
| | |||||
* | Clean up some unnecessary specifiers | Chris Robinson | 2018-11-22 | 1 | -6/+6 |
| | |||||
* | Use a standard string for the enumerated HRTF names | Chris Robinson | 2018-11-18 | 1 | -1/+0 |
| | |||||
* | Use a regular vector for the enumerated HRTF list | Chris Robinson | 2018-11-18 | 1 | -10/+3 |
| | |||||
* | Pass a normal const char* to EnumerateHrtf | Chris Robinson | 2018-11-15 | 1 | -2/+1 |
| | |||||
* | Convert panning.c to C++ | Chris Robinson | 2018-11-03 | 1 | -0/+8 |
| | |||||
* | Add a RESTRICT macro to help with C++ compatibility | Chris Robinson | 2018-10-29 | 1 | -2/+2 |
| | |||||
* | Don't hardcode the max channels for HRTF B-Format decoding | Chris Robinson | 2018-05-26 | 1 | -6/+0 |
| | |||||
* | Fix a function comment | Chris Robinson | 2018-05-15 | 1 | -2/+3 |
| | |||||
* | Use a proper struct for specifying angular points | Chris Robinson | 2018-02-18 | 1 | -1/+6 |
| | |||||
* | Use an alternate ambisonic HRTF decode layout | Chris Robinson | 2018-02-13 | 1 | -1/+1 |
| | | | | | | Similar to the previous, but includes the top and bottom HRTF responses. The higher-order decode (for the "basic" HRTF output) also now uses 2H1P mixed- order instead of 2H1V, which seems more stable. | ||||
* | Use an alternate virtual layout for Ambisonic HRTF decoding | Chris Robinson | 2018-02-10 | 1 | -1/+1 |
| | | | | | This uses 16 channels, an 8-channel octagon + 8-channel cube, which should improve horizontal resolution without affecting vertical too much. | ||||
* | Move some HRTF structures to hrtf.h | Chris Robinson | 2018-01-11 | 1 | -0/+31 |
| | |||||
* | Store the HRTF distance in the Hrtf handle | Chris Robinson | 2017-10-23 | 1 | -0/+2 |
| | |||||
* | Don't bother returning the IR length for B-Format decoding | Chris Robinson | 2017-07-31 | 1 | -2/+1 |
| | |||||
* | Remove unused macros | Chris Robinson | 2017-07-25 | 1 | -4/+0 |
| | |||||
* | Store the HRTF coeffs as a stereo pair | Chris Robinson | 2017-04-07 | 1 | -2/+2 |
| | | | | | This will make it easier to handle HRTF data sets that have separate left and right ear responses. Will need an mhr version update to take advantage of that. | ||||
* | Reference count HRTFs and unload them when unused | Chris Robinson | 2017-04-06 | 1 | -0/+5 |
| | |||||
* | Load HRTF files as needed | Chris Robinson | 2017-04-05 | 1 | -6/+3 |
| | | | | | Currently only applies to external files, rather than embedded datasets. Also, HRTFs aren't unloaded after being loaded, until library shutdown. | ||||
* | Store the loaded hrtf entry container in the enumerated hrtf entry | Chris Robinson | 2017-04-05 | 1 | -9/+17 |
| | |||||
* | Store the HRTF's filename separate from the entry storage | Chris Robinson | 2017-04-05 | 1 | -3/+0 |
| | |||||
* | Load HRTF coefficients as pre-normalized floats | Chris Robinson | 2017-03-31 | 1 | -1/+1 |
| | |||||
* | Rework HRTF coefficient fading | Chris Robinson | 2017-03-11 | 1 | -1/+1 |
| | | | | | | | | | | | | | | | This improves fading between HRIRs as sources pan around. In particular, it improves the issue with individual coefficients having various rounding errors in the stepping values, as well as issues with interpolating delay values. It does this by doing two mixing passes for each source. First using the last coefficients that fade to silence, and then again using the new coefficients that fade from silence. When added together, it creates a linear fade from one to the other. Additionally, the gain is applied separately so the individual coefficients don't step with rounding errors. Although this does increase CPU cost since it's doing two mixes per source, each mix is a bit cheaper now since the stepping is simplified to a single gain value, and the overall quality is improved. | ||||
* | Allocate as many channels for DirectHrtfState as needed | Chris Robinson | 2017-03-11 | 1 | -1/+1 |
| | |||||
* | Move the B-Format HRTF virtual speaker stuff to InitHrtfPanning | Chris Robinson | 2017-01-18 | 1 | -15/+12 |
| | | | | | This keeps the decoder matrices and coefficient mapping together for if it changes in the future. | ||||
* | Use ALsizei for sizes and offsets with the mixer | Chris Robinson | 2017-01-16 | 1 | -3/+3 |
| | | | | | | Unsigned 32-bit offsets actually have some potential overhead on 64-bit targets for pointer/array accesses due to rules on integer wrapping. No idea how much impact it has in practice, but it's nice to be correct about it. | ||||
* | Use second-order ambisonics for basic HRTF rendering | Chris Robinson | 2017-01-15 | 1 | -1/+1 |
| | | | | | | This should improve positional quality for relatively low cost. Full HRTF rendering still only uses first-order since the only use of the dry buffer there is for first-order content (B-Format buffers, effects). | ||||
* | Don't interpolate between nearest HRIRs | Chris Robinson | 2016-10-09 | 1 | -1/+1 |
| | | | | | | | | It still fades between HRIRs when it changes, but now it selects the nearest one instead of blending the nearest four. Due to the minimum-phase nature of the HRIRs, interpolating between delays lead to some oddities which are exasperated by the fading (and the fading is needed to avoid clicks and pops, and smooth out changes). | ||||
* | Decode directly from B-Format to HRTF instead of a cube | Chris Robinson | 2016-08-11 | 1 | -0/+7 |
| | | | | | | | | | | | | | | | | | | | | | Last time this attempted to average the HRIRs according to their contribution to a given B-Format channel as if they were loudspeakers, as well as averaging the HRIR delays. The latter part resulted in the loss of the ITD (inter-aural time delay), a key component of HRTF. This time, the HRIRs are averaged similar to above, except instead of averaging the delays, they're applied to the resulting coefficients (for example, a delay of 8 would apply the HRIR starting at the 8th sample of the target HRIR). This does roughly double the IR length, as the largest delay is about 35 samples while the filter is normally 32 samples. However, this is still smaller the original data set IR (which was 256 samples), it also only needs to be applied to 4 channels for first-order ambisonics, rather than the 8-channel cube. So it's doing twice as much work per sample, but only working on half the number of samples. Additionally, since the resulting HRIRs no longer rely on an extra delay line, a more efficient HRTF mixing function can be made that doesn't use one. Such a function can also avoid the per-sample stepping parameters the original uses. | ||||
* | Avoid function calls to get the HRTF sample rate and IR size | Chris Robinson | 2016-07-07 | 1 | -4/+14 |
| | |||||
* | Improve radius behavior with scaling of ambisonic coefficients | Chris Robinson | 2016-04-24 | 1 | -1/+1 |
| | |||||
* | Remove an unused declaration | Chris Robinson | 2016-02-20 | 1 | -2/+0 |
| | |||||
* | Include the HRTF filename in the HRTF memory chunk | Chris Robinson | 2016-02-20 | 1 | -1/+0 |
| |