Zach Pomerantz
d7085ec685
add audio helpers convertToMix/Scratch
2017-01-20 12:29:44 -05:00
Zach Pomerantz
d1673e554f
simplify audio bytesWritten computation
2017-01-20 12:29:44 -05:00
Zach Pomerantz
0f08abfa14
fix bug in audio samples popped check
2017-01-20 12:29:44 -05:00
Zach Pomerantz
61f7f72c5e
simplify resampling
2017-01-20 12:29:44 -05:00
Zach Pomerantz
42f5af7c39
improve audiostream debug logs
2017-01-20 12:29:44 -05:00
Zach Pomerantz
969d776e1f
queue injector audio after device callbacks
...
Conflicts:
libraries/audio-client/src/AudioClient.cpp
2017-01-20 12:29:44 -05:00
Zach Pomerantz
dee5f63037
rename audio mix/scratch buffers
...
Conflicts:
libraries/audio-client/src/AudioClient.cpp
libraries/audio-client/src/AudioClient.h
2017-01-20 12:29:44 -05:00
Zach Pomerantz
0f1ec63b17
enable injectors in audio device callback
2017-01-20 12:29:44 -05:00
Zach Pomerantz
3a0d874bb5
add injector ring buffer to audio client
2017-01-20 12:29:44 -05:00
Zach Pomerantz
a7ecf41a42
add audio limiting to device callback
2017-01-20 12:29:44 -05:00
Zach Pomerantz
24d53ea13c
rm audio output limiting
2017-01-20 12:29:44 -05:00
Zach Pomerantz
ebe96f9b25
rm injectors from mixed audio processing
2017-01-20 12:29:44 -05:00
Ken Cooke
42e13d1e97
Fix audio failures on systems that return incorrect/unsupported mixFormat
2017-01-14 10:26:13 -08:00
David Kelly
b68a07e930
Merge pull request #9197 from davidkelly/dk/injectorVolume
...
No longer applying volume when reading audio injector buffer
2016-12-16 15:11:33 -08:00
David Kelly
a8157ae2cd
Typo, plus some CR feedback
2016-12-13 17:48:30 -08:00
Zach Fox
7030c7b0a6
Space bubble improvements ( #9142 )
...
* The space bubble around a player's avatar is now visualized. When another avatar enters a player's bubble, The bubble visualization will appear, a soft tone will play, and the "Bubble" HUD button will flash.
* The space bubble radius setting has been removed. Space bubble size now scales based on avatar scale.
* Space bubble collision detection is now more accurate and reliable.
* CTRL + N toggles the bubble.
* The "Bubble" HUD button has been moved to the proper location.
2016-12-12 14:22:54 -08:00
David Kelly
3f3d922eca
No longer applying volume when reading audio injector buffer
...
Since we also apply the gain in HRTF (on both server and client), the
mono sources sort of had volume^2 applied to them.
2016-12-12 12:01:02 -08:00
Ken Cooke
e4b5c14ea3
PR feedback
2016-12-07 10:15:55 -08:00
Ken Cooke
9831d874b5
Remove debugging code
2016-12-06 10:22:58 -08:00
Ken Cooke
975cbd8e44
Replace test renderer with spatialized binaural renderer
2016-12-06 10:12:36 -08:00
Ken Cooke
e93e1a7c4f
Preliminary support for Ambisonic audio injectors.
...
Supports 4-channel WAV files, presumed to be B-format (FuMa) first-order Ambisonic.
Supports WAV with arbitrary sample rate (needs optimization).
Supports soundfield volume and orientation set via script.
Supports localOnly client-side injection using simple (non-spatialized) test renderer.
2016-12-02 18:20:57 -08:00
Ken Cooke
d69d77d0ee
Refactor the audio device format detection. Only use the native format when Qt can correctly determine it.
2016-11-21 21:36:17 -08:00
Ken Cooke
fd08936fb3
Improved failure logs
2016-11-17 13:42:43 -08:00
Ken Cooke
ec53c6a030
Add support for mono or multichannel audio output.
...
At the end of the audio pipeline, optional upmix/downmix to the device channel format.
2016-11-17 06:56:49 -08:00
Ken Cooke
b19a44e046
On Windows, set audio format to match the internal mix format.
...
This works around multichannel bugs in the Qt audio framework.
2016-11-15 10:37:32 -08:00
Ken Cooke
30c189e624
channelCount math cleanup
2016-11-15 09:10:05 -08:00
Seth Alves
137730dc50
coding standard
2016-11-01 11:59:28 -07:00
Seth Alves
ae17135a07
lock around quit flag to avoid shutdown race
2016-11-01 11:14:16 -07:00
Seth Alves
3903a51062
fix a couple of crash-on-exits
2016-10-25 13:58:48 -07:00
Clément Brisset
b63eb6ba9f
Merge pull request #8665 from zzmp/feat/audio-stats
...
move audio stats to QML/JS, with graphs
2016-10-20 16:43:49 -07:00
Anthony J. Thibault
350977f03e
Speculative fix for crash in AudioClient
2016-10-11 10:49:43 -07:00
Zach Pomerantz
5af95c6062
store channels on audio stream
2016-10-05 12:04:24 -07:00
Zach Pomerantz
972a611d03
retain stereo on dead audio resampling
2016-10-04 17:54:20 -07:00
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