Commit graph

315 commits

Author SHA1 Message Date
Ken Cooke
8491254664 Merge branch 'master' of https://github.com/highfidelity/hifi into audio-fixes2 2016-10-03 18:13:43 -07:00
Ken Cooke
46526a309d Increase audio input buffering on Windows 7 2016-10-03 17:46:09 -07:00
Chris Collins
ca1a7135eb Merge pull request #8706 from kencooke/audio-fixes
Improve support for audio when input rate != output rate
2016-10-03 16:46:56 -07:00
Ken Cooke
9590d2eef9 Fix support for audio when input rate != output rate 2016-10-03 09:08:32 -07:00
Clément Brisset
02991bffab Merge pull request #8687 from zzmp/feat/injector-loopback
loopback local injectors on server echo
2016-09-30 11:21:10 -07:00
Zach Pomerantz
768354e49f loopback local injectors on server echo 2016-09-29 15:25:17 -07:00
Ken Cooke
858297241b Even lower audio latency 2016-09-29 12:48:21 -07:00
Zach Pomerantz
efb71c18a1 expose audio injector streams 2016-09-26 18:51:53 -07:00
Zach Pomerantz
055fabf57b fix audio AppendFlag semantics 2016-09-26 18:51:51 -07:00
Zach Pomerantz
dbe3104f09 fix -Wreorder 2016-09-26 17:23:18 -07:00
Zach Pomerantz
f5e1d4dd2b notify on audio stream changes 2016-09-26 15:38:21 -07:00
Zach Pomerantz
b9c4018b8e expose AudioStats to qml/js 2016-09-26 15:35:29 -07:00
Zach Pomerantz
81b6bb3a2d rm unused DEFAULT_GATE_THRESHOLD 2016-09-21 18:04:07 -07:00
Zach Pomerantz
e2ff738fc3 strip unused audio settings
- remove parameters on the jitter buffer algorithm, these are now static
- remove parameters on the output starve detection algorithm, now static
- move interface audio settings to the Developer menu
2016-09-21 17:35:27 -07:00
Ken Cooke
b14f43b11e Merge pull request #8610 from zzmp/test/audio-jitter
add audio jitter simulator testing tool
2016-09-21 16:43:36 -07:00
Chris Collins
3d9f231543 Merge pull request #8609 from zzmp/fix/audio-stats
fix audio network stats
2016-09-19 09:08:35 -07:00
Zach Pomerantz
b6d093889c add AudioConstants::SAMPLE_SIZE 2016-09-16 14:20:50 -07:00
Zach Pomerantz
45b306fc97 fix preference for jitter sim 2016-09-16 12:14:57 -07:00
Zach Pomerantz
80bce953f7 justify jitter simulation 2016-09-16 11:40:37 -07:00
Zach Pomerantz
177466e4c7 calculate unplayed ms on all streams/buffers as max 2016-09-15 17:54:41 -07:00
Zach Pomerantz
53f5899a69 add audio jitter simulator 2016-09-15 14:51:39 -07:00
Zach Pomerantz
9792d025fa clean up audio stats 2016-09-15 13:09:06 -07:00
Seth Alves
4470338663 catagorize some qDebugs 2016-09-14 21:39:45 -07:00
Ken Cooke
ad97a15e8b Handle another case when resampling is not needed 2016-09-14 09:54:15 -07:00
Ken Cooke
e82d751dac Fix typo 2016-09-14 08:25:41 -07:00
Ken Cooke
25920732ec Remove unused buffer 2016-09-14 08:23:53 -07:00
Ken Cooke
96313a421c Cleanup the confusion of using null-resampler for channel conversion 2016-09-14 08:22:18 -07:00
Ken Cooke
c555e369c8 Handle the case when resampling is not needed 2016-09-14 06:37:09 -07:00
Ken Cooke
27d24eb79b Fix compiler warning 2016-09-13 20:56:36 -07:00
Ken Cooke
ed9061040a Better Android settings 2016-09-13 20:16:23 -07:00
Ken Cooke
f1455ab157 Remove unneeded buffers 2016-09-13 20:06:44 -07:00
Ken Cooke
724df38df0 Optimize the audio pipeline. Use float mixBuffer and apply reverb at 24khz 2016-09-13 16:11:06 -07:00
Brad Hefta-Gaub
7c3c05a450 Merge pull request #8584 from zzmp/fix/audio-starve-detection
fix audio client starve detection
2016-09-13 09:08:20 -07:00
Zach Pomerantz
e785c0cdf8 add test for audio jitter 2016-09-08 17:50:11 -07:00
Zach Pomerantz
2a2673d898 bring audio starve check to standard 2016-09-08 15:26:09 -07:00
Zach Pomerantz
d7643ef2a0 fix audio client starve detection 2016-09-08 14:25:33 -07:00
Ken Cooke
1a6af49b3d Support for even more back-end sample rates 2016-08-30 16:10:11 -07:00
Ken Cooke
cb5bded7c1 Add support for more back-end sample rates 2016-08-30 14:37:33 -07:00
Ken Cooke
9187b4aa7d More complete fix for audio threading failures. Qt keeps an internal Q_GLOBAL_STATIC list of devices, which is referenced at device start() but clobbered by availableDevices(). Now protected by a mutex. 2016-08-30 12:57:29 -07:00
Ken Cooke
d2b33e00bd Fix audio startup failures. Directly calling the static method QAudioDeviceInfo::availableDevices() was not thread-safe. 2016-08-30 10:13:08 -07:00
Ken Cooke
28a99a7a03 Merge branch 'master' of https://github.com/highfidelity/hifi into low-latency-audio 2016-08-29 12:38:17 -07:00
Ken Cooke
1ab35797b1 Drastically reduce the audio capture buffering on Windows.
With device detection on another thread and WASAPI back-end, the large capture buffer (resulting from CALLBACK_ACCELERATOR_RATIO) is no longer needed.
2016-08-25 16:09:25 -07:00
Ken Cooke
c0caea1ffd PR feedback 2016-08-24 10:32:29 -07:00
Ken Cooke
b4d143fe13 PR feedback 2016-08-24 10:19:09 -07:00
Ken Cooke
8fbf5a9e8b PR feedback 2016-08-24 10:16:43 -07:00
Ken Cooke
4b2778f02d Re-implement the continuous detection of device changes for all platforms, using a background thread. This prevents the glitches caused by calling checkDevices() on the audio processing thread. 2016-08-20 12:22:47 -07:00
Ken Cooke
3583bdecbb Fix for calculateDeviceToNetworkInputRatio() which was completely broken.
Running the audio back-end at 44.1k now works correctly.
2016-08-18 16:56:26 -07:00
Seth Alves
87dbfa7e47 add -Wsuggest-override to compile flags and deal with fallout 2016-08-18 09:51:41 -07:00
Ken Cooke
7202d132c5 Remove 22050 from the preferred list of back-end sample rates. 2016-08-16 16:57:28 -07:00
Ken Cooke
2326696d54 Disabled the continuous polling for audio device changes on Windows.
It necessitated extra buffering to prevent periodic dropouts in the audio stream.
2016-08-16 16:53:51 -07:00
Brad Hefta-Gaub
ca3a194454 implment coded renegotiation in client if for some reason unexpected audio codecs come in to inbound stream 2016-08-02 15:30:03 -07:00
Brad Hefta-Gaub
20824f038c include codec in audio stream packets so that each side can discard packets that don't match 2016-07-18 21:59:44 -07:00
David Kelly
3df373252f Several minor things
We could only partially fill the _scratchBuffer - .wav files may not
be exactly N frames long.  Doh.

While at it, I needed to call finishLocalInjection() after local
injectors are done, and the access to the injector vector needs to
be locked, given that we do a QtDirectConnection with the networking
and thus the outputLocalInjectors is on a different thread.

The clicking was just 0-ing out the _scratchBuffer.
2016-07-18 14:00:41 -07:00
Brad Hefta-Gaub
dc2741950a Merge pull request #8259 from kencooke/improved-hrtf
Fix the AudioMixer distance attenuation.
2016-07-15 22:36:51 -07:00
Ken Cooke
1ee608ad2c Cleanup 2016-07-15 18:23:12 -07:00
Brad Hefta-Gaub
878a01cbaf Merge pull request #8242 from kencooke/improved-hrtf
Improved HRTF
2016-07-15 09:02:15 -07:00
Ken Cooke
2674df6095 Fix the distance-attenuation model (for injectors only)
The original attenuation model seems wrong, under-attenuating at close distance but completely muting after 45m.

This uses a physics-based model of -6dB per doubling of distance in free space, for the injectors. The AudioMixer model and domain settings still need to be reworked in a future PR.
2016-07-14 18:34:07 -07:00
Brad Davis
44500889f8 Remove 'updating reverb' logspam 2016-07-14 13:34:56 -07:00
Ken Cooke
7a4bdc1779 enable in Interface and AudioMixer, by passing distance between source and listener 2016-07-14 11:30:55 -07:00
Ken Cooke
d7399f5781 Improved HRTF.
Adds a distance filter to model the frequency-dependent attenuation of sound propagation in open air.
Optimized using SIMD and computing all biquads in parallel. Performance impact is almost zero.
Filter updates are continuously interpolated and clean to -90dB.

Not enabled yet (distance hardcoded to 0.0f)
2016-07-14 10:34:42 -07:00
Chris Collins
1c6b5e89ac Merge pull request #8239 from ZappoMan/codecPlugins
fix razor blades in your ears when switching between domains with no codecs installed
2016-07-13 17:25:47 -07:00
Brad Hefta-Gaub
a267843e3e fix razor blades in your ears when switching between domains with no codecs installed 2016-07-13 16:37:30 -07:00
David Kelly
dde4d16759 Merge branch 'master' of github.com:highfidelity/hifi into dk/firstLameAttempt 2016-07-13 15:15:35 -07:00
David Kelly
c951f507e3 Fixed issue with calling setOptions
Since the stereo option is computed from the .wav file, if you call
setOptions later (like the cow.js does), it resets stereo to false.
So, I now just copy the stereo flag into the new options, since the
sound file is the same.

Also, calling AudioClient::outputLocalInjector on the AudioClient
thread now to avoid potential concurrency issues accessing the
vector of injectors.
2016-07-13 11:28:36 -07:00
David Kelly
3955e03aa2 Fix for build error
doh!
2016-07-12 12:15:12 -07:00
Brad Hefta-Gaub
71b6210c4e removed some log spam 2016-07-12 10:18:37 -07:00
David Kelly
c84ef5f626 Stereo injectors now handled same as mono
Except of course no HRTF.
2016-07-11 11:31:47 -07:00
David Kelly
4f80c77b77 PR feedback
simple enough - not sure why I had an issue with this in the first
place.
2016-07-11 10:36:55 -07:00
David Kelly
46dc5bea04 cleanup from PR comments 2016-07-11 09:31:05 -07:00
David Kelly
80d33ee251 Working now as frame-at-a-time
So localOnly sounds get HRTF'd, one network frame at a time.  Less
processing (upsampling, limiting, etc...) than doing this at the
end of the pipeline (in the AudioOutputIODevice::readData call).
2016-07-11 09:11:23 -07:00
Brad Hefta-Gaub
ed9715ae5f some cleanup, proper memory allocation/deallocation 2016-07-10 17:40:58 -07:00
Brad Hefta-Gaub
ba6bb24595 rework plugins to allow different decoder/encoder instances per streams 2016-07-10 16:49:03 -07:00
Brad Hefta-Gaub
a71baf5601 handle codec prioritization, handle multiple codec choices 2016-07-08 21:18:03 -07:00
Brad Hefta-Gaub
126e5c2926 codec pipeline working, zlib example 2016-07-08 14:34:44 -07:00
David Kelly
bc7123d701 comment out logging for now 2016-07-08 13:59:49 -07:00
David Kelly
7a9b3978e9 Better processing of audio
A couple things Ken suggested.  First off, there are now AudioSRC
calls for floats, which simplfied stuff a bit.  Then, I switched to
grabbing network packets first, and only pulling at most that amount
of audio from the local injectors.  That improves things - the
occasional artifacts (when the injectors got more data than the
network for instance) are gone.

Also, fixed build issue (unused variable warning) for mac and android.
2016-07-08 13:01:06 -07:00
Brad Hefta-Gaub
3c6447326e more codec plumbing 2016-07-07 21:24:24 -07:00
David Kelly
600348bf10 Initial cut of htrf for mono localOnly injectors
Probably need to clean up a bit, but wanted to get this out there
for comment on more general issues, etc...

To test, I added a localOnly: true to the cow in the tutorial.
2016-07-07 16:07:41 -07:00
Brad Hefta-Gaub
9333c7dcca Merge branch 'master' of https://github.com/highfidelity/hifi into codecPlugins 2016-07-06 13:26:19 -07:00
Brad Hefta-Gaub
7a4b11ee97 more work on codecs 2016-06-27 13:06:19 -07:00
Brad Hefta-Gaub
d7bffc3eab first cut at negotiating codecs 2016-06-23 17:14:41 -07:00
Brad Hefta-Gaub
6111e4952a fix comments 2016-06-23 10:59:26 -07:00
Brad Hefta-Gaub
be37921845 first cut at codec plugins 2016-06-23 10:42:02 -07:00
Brad Hefta-Gaub
c0be9aec6a cleanup the callers of the resamplers for mic to net and net to speaker, remove loopback resampler 2016-06-23 10:28:29 -07:00
Brad Davis
97e96f7b67 PR comments 2016-03-31 13:19:26 -07:00
Brad Hefta-Gaub
2381ab1cba Merge pull request #7496 from kencooke/master
make self-reverb depend on wetDryMix
2016-03-30 15:44:20 -07:00
Ken Cooke
a51cc9d12a make self-reverb depend on wetDryMix 2016-03-28 16:04:45 -07:00
Atlante45
92ef8cafb1 Make sure pos/rot getters don't crash 2016-03-28 14:37:06 -07:00
Ken Cooke
c6ca984782 Fix Reverb Zone settings to work correctly with new reverb. 2016-03-24 12:59:52 -07:00
Brad Hefta-Gaub
bb1ed2147f revert change that trusted Qt's claim that it supports the format 2016-02-22 11:22:03 -08:00
howard-stearns
e21d9042d0 Remove some logging. 2016-02-19 13:34:06 -08:00
howard-stearns
adb33e7dca Up default initial buffer frame size to the value from before. 2016-02-18 16:32:18 -08:00
howard-stearns
162be13914 Don't keep adding signal connections. More logging. 2016-02-18 16:14:03 -08:00
howard-stearns
547d3d6b9a Merge branch 'audio-output-buffer' of https://github.com/howard-stearns/hifi into audio-output-buffer 2016-02-17 13:57:21 -08:00
howard-stearns
b8b1565470 Don't fake-fail the format test. Trust the os. 2016-02-17 13:46:48 -08:00
Howard Stearns
983a0ccb9b Change internal preference names so that old users pick up the new default values, and change name in dialog. 2016-02-16 18:00:39 -08:00
howard-stearns
d328b82c3c Default output buffer size is 1 frame, and automatic updates don't persist
changes (just in-memory).
2016-02-16 12:09:44 -08:00
Howard Stearns
4255b1f9aa Change output buffer size on correct thread, and turn on automatic resizing on all platforms instead of just mac. 2016-02-16 11:22:01 -08:00
Stephen Birarda
445662f5ae clean sweep of old now unused audio files 2016-02-08 15:38:12 -08:00
Atlante45
ce51350b65 Fix warnings on windows 64bit 2015-12-11 15:42:15 -08:00