aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Don't return whether the bsinc filter cuts or notChris Robinson2018-01-102-23/+9
|
* Make a function pointer staticChris Robinson2018-01-101-1/+1
|
* Use one macro to handle both resample padding sizesChris Robinson2018-01-095-28/+27
|
* Combine the chorus and flanger processing functionsChris Robinson2018-01-095-453/+171
| | | | | | | Given that they're nearly identical, it should be relatively simple to use the same effect state to process either of them, similar to the reverbs. The big differences seem to be the delay range (much shorter with flanger) and the defaults.
* Rename the device's temp buffer storage to be more genericChris Robinson2018-01-093-12/+13
|
* Remove standard reverb specific processing functionsChris Robinson2018-01-076-154/+40
|
* Move the UNEXPECTED macro to the main header and rename itChris Robinson2018-01-073-7/+10
|
* Ensure the chorus delay and depth leave enough padding for resamplingChris Robinson2018-01-072-14/+26
| | | | Also use cubic resampling for the modulated tap. Applies to flanger too.
* Use a separate function to get the cubic valueChris Robinson2018-01-073-9/+11
|
* Only print the time in alffplay when it changesChris Robinson2018-01-071-4/+11
|
* Use a -40dB drop for bsinc12Chris Robinson2018-01-071-2/+2
| | | | | | | This improves the transition width at the cost of slightly more audible high- frequency noise (nothing compared to linear or cubic, but still some). The previous transition band caused a noticeable loss in higher frequencies, making lower sample rate sources sound exceptionally dull or muffled.
* Remove the sinc4 tableChris Robinson2018-01-073-53/+4
|
* Replace the sinc4 resampler with cubicChris Robinson2018-01-0711-298/+25
| | | | | | | Turns out the C version of the cubic resampler is just slightly faster than even the SSE3 version of the FIR4 resampler. This is likely due to not using a 64KB random-access lookup table along with unaligned loads, both offseting the gains from SSE.
* Fix a temp buffer leak in alffplayChris Robinson2018-01-051-2/+2
|
* Handle the audio clock diff as nanoseconds in alffplayChris Robinson2018-01-051-8/+6
|
* Test the correct offset for the loop start rangeChris Robinson2018-01-041-1/+1
|
* Use the correct start point when loopingChris Robinson2018-01-041-2/+2
|
* Use separate outputs for the vector reverse and scatter functionsChris Robinson2018-01-041-29/+23
|
* Avoid the modulated output tap for late reverbChris Robinson2018-01-041-28/+14
| | | | | | And fix the output filtering. The modulation code is still there since it's (probably) technically correct, but the interaction with the feedback loop and filtering on the output caused improper behavior which needs to be sorted out.
* Use a non-recursive mutex for alffplay's source lockChris Robinson2018-01-031-11/+14
|
* Don't offset the reverb modulation sinusChris Robinson2018-01-021-1/+1
|
* Use a float literal for float mathChris Robinson2018-01-021-2/+2
|
* Use ALC_SOFT_device_clock in alffplayChris Robinson2018-01-021-12/+86
|
* Reset CompLen when loading loop repeats in the mixerChris Robinson2018-01-021-0/+1
|
* Improve starting synchronization in alffplayChris Robinson2018-01-021-19/+60
| | | | | It waits until the internal buffers are filled before starting playback, then triggering the audio and video to start as close together as possible.
* Inline and simplify some codeChris Robinson2018-01-011-29/+23
|
* Don't leak the AVIOContextChris Robinson2018-01-011-1/+8
|
* Fix a couple alffplay comments still referencing AlureChris Robinson2018-01-011-4/+4
|
* Make smart pointer wrappers for some ffmpeg typesChris Robinson2018-01-011-72/+81
|
* Print the running time and duration in alffplayChris Robinson2018-01-011-1/+42
|
* Use aliases to simplify some time type namesChris Robinson2018-01-011-67/+61
|
* Wrap av_gettime to ensure it's interpreted as microsecondsChris Robinson2018-01-011-7/+10
|
* Rename the do_direct_out variableChris Robinson2018-01-011-3/+3
|
* Use a less-intense memory order to check for quittingChris Robinson2018-01-011-9/+9
|
* Check for AL_SOFT_direct_channels once when initializingChris Robinson2018-01-011-10/+8
|
* Declare the total buffer time instead of buffer countChris Robinson2018-01-011-10/+15
|
* Use a std::array for the buffers in alffplayChris Robinson2018-01-011-8/+7
|
* Use inline member initialization where possibleChris Robinson2018-01-011-86/+69
|
* Make more values global constChris Robinson2018-01-011-19/+18
|
* Use a global to specify alffplay's audio sync thresholdChris Robinson2017-12-311-15/+11
|
* Avoid dereferencing a NULL pointerChris Robinson2017-12-311-1/+2
| | | | | | Even though it's taking the address of a member, it's still technically a derefernce and thus undefined behavior. sizeof doesn't "execute" the expression, so derefering in it instead is fine.
* Clear the buffer queue when underrunChris Robinson2017-12-311-1/+3
|
* Wake up the packet send loop when more frames are neededChris Robinson2017-12-311-38/+50
|
* Readd AL_SOFT_source_latency support to alffplayChris Robinson2017-12-301-12/+17
|
* Use standard duration types for stream clocksChris Robinson2017-12-301-105/+122
|
* Improve the alffplay queue for FFmpeg's send/receive APIChris Robinson2017-12-301-152/+139
| | | | | | | | The packet handling thread now calls avcodec_send_packet to give compressed data to libavcodec, while the audio/video threads call avcodec_receive_frame to handle decoded frames. The packet thread still maintains local queues for each stream to avoid starving an A/V thread when the other doesn't want another frame yet.
* Update resampler padding checksChris Robinson2017-12-291-3/+3
|
* Fix up a commentChris Robinson2017-12-241-7/+5
|
* Don't make a pass-through macro for FadedDelayLineOutChris Robinson2017-12-241-8/+7
|
* Use linear interpolation for reverb modulationChris Robinson2017-12-241-76/+130
| | | | | | The core LateReverb_* functions are explicitly written out now, since the tapping and blending done by the Faded version is a bit more complex and it's not so easy to ensure proper optimizing on the Unfaded version.