Chris Robinson
4cc1c64646
Replace the sinc4 resampler with cubic
...
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.
2018-01-07 05:32:07 -08:00
Chris Robinson
0e1fd34c89
Fix a temp buffer leak in alffplay
2018-01-05 20:41:55 -08:00
Chris Robinson
10f2531b6c
Handle the audio clock diff as nanoseconds in alffplay
2018-01-05 05:41:57 -08:00
Chris Robinson
ecd327e5e1
Test the correct offset for the loop start range
2018-01-04 21:21:48 -08:00
Chris Robinson
510bccb6ac
Use the correct start point when looping
2018-01-04 20:21:46 -08:00
Chris Robinson
32330c5eef
Use separate outputs for the vector reverse and scatter functions
2018-01-04 20:04:39 -08:00
Chris Robinson
e00ef16893
Avoid the modulated output tap for late reverb
...
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.
2018-01-04 19:17:16 -08:00
Chris Robinson
fd8143fea0
Use a non-recursive mutex for alffplay's source lock
2018-01-03 19:05:25 -08:00
Chris Robinson
08a4840298
Don't offset the reverb modulation sinus
2018-01-02 19:52:57 -08:00
Chris Robinson
a16f933e3a
Use a float literal for float math
2018-01-02 19:44:31 -08:00
Chris Robinson
9d61f429a5
Use ALC_SOFT_device_clock in alffplay
2018-01-02 19:32:28 -08:00
Chris Robinson
b8de63d608
Reset CompLen when loading loop repeats in the mixer
2018-01-02 19:29:58 -08:00
Chris Robinson
dcc0f6e25d
Improve starting synchronization in alffplay
...
It waits until the internal buffers are filled before starting playback, then
triggering the audio and video to start as close together as possible.
2018-01-02 03:31:12 -08:00
Chris Robinson
21684fac69
Inline and simplify some code
2018-01-01 22:28:28 -08:00
Chris Robinson
329333ca8b
Don't leak the AVIOContext
2018-01-01 19:16:05 -08:00
Chris Robinson
91e20dc12e
Fix a couple alffplay comments still referencing Alure
2018-01-01 18:54:15 -08:00
Chris Robinson
aecfa0b426
Make smart pointer wrappers for some ffmpeg types
2018-01-01 18:47:48 -08:00
Chris Robinson
9675068706
Print the running time and duration in alffplay
2018-01-01 16:15:32 -08:00
Chris Robinson
cbd55ad31e
Use aliases to simplify some time type names
2018-01-01 02:26:39 -08:00
Chris Robinson
5eb1753d31
Wrap av_gettime to ensure it's interpreted as microseconds
2018-01-01 01:39:28 -08:00
Chris Robinson
e277f5e268
Rename the do_direct_out variable
2018-01-01 01:14:53 -08:00
Chris Robinson
145bf52b7a
Use a less-intense memory order to check for quitting
2018-01-01 01:13:32 -08:00
Chris Robinson
fe7bdc93eb
Check for AL_SOFT_direct_channels once when initializing
2018-01-01 01:07:29 -08:00
Chris Robinson
d889435334
Declare the total buffer time instead of buffer count
2018-01-01 01:04:47 -08:00
Chris Robinson
dad17a7d91
Use a std::array for the buffers in alffplay
2018-01-01 00:32:27 -08:00
Chris Robinson
830adf6ae8
Use inline member initialization where possible
2018-01-01 00:17:40 -08:00
Chris Robinson
babfa70cab
Make more values global const
2018-01-01 00:02:51 -08:00
Chris Robinson
258eadd003
Use a global to specify alffplay's audio sync threshold
2017-12-31 23:44:33 -08:00
Chris Robinson
6dd1643a70
Avoid dereferencing a NULL pointer
...
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.
2017-12-31 23:19:41 -08:00
Chris Robinson
48916ebd76
Clear the buffer queue when underrun
2017-12-31 16:29:52 -08:00
Chris Robinson
506d316f55
Wake up the packet send loop when more frames are needed
2017-12-31 16:11:00 -08:00
Chris Robinson
490b71378e
Readd AL_SOFT_source_latency support to alffplay
2017-12-30 23:12:19 -08:00
Chris Robinson
0e8b0c520e
Use standard duration types for stream clocks
2017-12-30 22:46:09 -08:00
Chris Robinson
0136df1e62
Improve the alffplay queue for FFmpeg's send/receive API
...
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.
2017-12-30 20:34:33 -08:00
Chris Robinson
98731bb574
Update resampler padding checks
2017-12-29 16:28:49 -08:00
Chris Robinson
27dfb7fd11
Fix up a comment
2017-12-24 20:41:20 -08:00
Chris Robinson
6457df54bb
Don't make a pass-through macro for FadedDelayLineOut
2017-12-24 20:41:20 -08:00
Chris Robinson
07f3ed0419
Use linear interpolation for reverb modulation
...
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.
2017-12-24 20:40:53 -08:00
Chris Robinson
dabb99de8d
Don't offset the chorus/flanger delay and LFO
...
The delay being added to the scaled LFO will ensure a proper positive result
regardless.
2017-12-24 20:40:33 -08:00
Chris Robinson
254ebe5f96
Fade between depths in the reverb modulator
2017-12-24 16:23:30 -08:00
Chris Robinson
b32a366137
Use a separate unmodulated feedback tap for reverb
2017-12-24 14:21:13 -08:00
Chris Robinson
3633b65e04
Only link to the common lib when building as shared
2017-12-23 21:23:32 -08:00
Chris Robinson
ce74098b40
Clarify some reverb values
2017-12-23 21:13:57 -08:00
Chris Robinson
5769efe48e
Reorder some global variables
2017-12-23 18:50:38 -08:00
Chris Robinson
02051ab51a
Cleanup reverb modulation scaling
2017-12-23 14:18:14 -08:00
Chris Robinson
02c0620141
Add missing integer queries
2017-12-21 11:46:01 -08:00
Chris Robinson
d7895db166
Fix the lfo_offset for a 0-rate flanger
2017-12-19 19:15:34 -08:00
Chris Robinson
0f84e32520
Use MixSamples for the echo output
2017-12-19 15:13:11 -08:00
Chris Robinson
1a911be617
Update the chorus and flanger state struct less often
2017-12-19 15:12:06 -08:00
Chris Robinson
a0565dc9bb
Make the echo effect only apply feedback to repeated samples
2017-12-19 14:11:37 -08:00