Commit graph

743 commits

Author SHA1 Message Date
Zach Pomerantz
2f457ae891 add packet queue to AudioMixerClientData 2017-02-14 20:46:27 +00:00
Ken Cooke
bf077e6fdb Merge pull request #9623 from zzmp/audio/should-ignore
Optimize ignore zone checks for audio mixer
2017-02-14 06:18:54 -08:00
Brad Hefta-Gaub
d24ed62116 Merge pull request #9660 from zzmp/audio/silent-stats
Add silent_packets stat to audio mixer
2017-02-13 13:07:07 -08:00
Zach Pomerantz
e1cf04e0f0 add silent_packets stat to audio mixer 2017-02-13 20:18:16 +00:00
Zach Pomerantz
9d830d7ea9 log AVX2 support in audio-mixer 2017-02-09 18:56:49 +00:00
Zach Pomerantz
553fffd8ae time mix instead of throttle with HIFI_AUDIO_MIXER_DEBUG 2017-02-07 21:49:23 +00:00
Zach Pomerantz
ee699d3fa6 Revert 'use tbb::atomic for cp' 2017-02-07 20:40:06 +00:00
Zach Pomerantz
5e9fb17949 use tbb::atomic for cp 2017-02-07 15:01:23 -05:00
Zach Pomerantz
ad7c01e86e modularize audio ignore zone computations 2017-02-07 15:01:22 -05:00
Zach Pomerantz
308e3cab71 fix memoized ignoreZone assertion for initialization 2017-02-07 15:01:22 -05:00
Zach Pomerantz
d42b6a64c4 use threadsafe map for audio node ignore cache 2017-02-07 15:01:22 -05:00
Zach Pomerantz
4bcc9d3072 bail audio mix if node is not initialized 2017-02-07 15:01:22 -05:00
Zach Pomerantz
093f748d7d make auto stream explicit 2017-02-07 15:01:22 -05:00
Zach Pomerantz
e7cf84324b abstract audio ignore caching 2017-02-07 15:01:22 -05:00
Zach Pomerantz
207d2e78f0 fix should ignore opts 2017-02-07 15:01:21 -05:00
Zach Pomerantz
310c8b18ee add caching over symmetric nodes for audio shouldIgnore 2017-02-07 15:01:21 -05:00
Zach Pomerantz
8a42755e8f mv shouldIgnore from AudioMixerSlave to ClientData 2017-02-07 15:01:21 -05:00
Zach Pomerantz
3c1cf504d0 rename getIgnoreBox to getIgnoreZone to prevent confusion 2017-02-07 15:01:21 -05:00
Zach Pomerantz
9bcc5c95b4 reduce stream lock usage in AudioMixerClientData::getIgnoreBox 2017-02-07 15:01:21 -05:00
Zach Pomerantz
569ae113a0 memoize audio ignore box in AudioMixerClientData 2017-02-07 15:01:21 -05:00
Zach Pomerantz
9b0190f1cf add ns/throttle to audio mixer debug stats 2017-02-06 20:31:19 +00:00
Zach Pomerantz
eb00c7ba11 group constants in audio mixer gain computation 2017-01-30 17:48:03 +00:00
Zach Pomerantz
e7e550d78c add injector attenuation to audio gain appx 2017-01-27 16:18:10 -05:00
Zach Pomerantz
2da4dce8be rm statics from audio-mixer mixing 2017-01-27 15:46:25 -05:00
Zach Pomerantz
fe1847f965 clean up audio-mixer computeGain helper 2017-01-27 15:46:12 -05:00
Zach Pomerantz
ca727b7920 inline audio mix helpers 2017-01-27 15:28:43 -05:00
Zach Pomerantz
c4190ad4c4 add hrtf adjustment to throttle gain appx 2017-01-27 15:26:49 -05:00
Zach Pomerantz
7bcf136dc9 modularize audio throttle gain appx 2017-01-27 15:26:32 -05:00
Zach Pomerantz
d82c8b251a use sleep_for to avoid WIN32 sleep_until bug 2017-01-27 13:22:50 -05:00
Chris Collins
c0ee091946 Merge pull request #9502 from zzmp/audio/throttle
Throttle audio with PI controller, by node
2017-01-26 14:25:44 -08:00
Brad Hefta-Gaub
0582aca598 Merge pull request #9511 from kunalgosar/master
change server to default to not auto-muting
2017-01-26 10:59:50 -08:00
Zach Pomerantz
fb31254f57 add proportional term to audio-mixer throttling controller 2017-01-25 21:18:03 +00:00
Zach Pomerantz
46afa7e764 DRY audio-mixer all-stream mixes 2017-01-25 21:18:03 +00:00
Zach Pomerantz
1153c1900f reorder AudioMixerSlave::prepareMix to be sequential 2017-01-25 21:18:03 +00:00
Zach Pomerantz
66c82f3193 clean AudioMixerSlave::addStreamToMix 2017-01-25 21:18:03 +00:00
Zach Pomerantz
6cfaa624a5 mv helpers from AudioMixerSlave 2017-01-25 21:18:03 +00:00
Atlante45
f540c94113 Merge branch 'master' of https://github.com/highfidelity/hifi into ess-pr 2017-01-25 13:06:49 -08:00
kunalgosar
7b896f961b change server to default to not auto-muting 2017-01-25 13:00:57 -08:00
Zach Pomerantz
9bdea98d21 clean AudioMixerSlave::mix 2017-01-25 19:24:12 +00:00
Zach Pomerantz
275e337a80 rm unused LOUDNESS_TO_DISTANCE_RATIO 2017-01-25 18:55:54 +00:00
Zach Pomerantz
4ac0df8f8d throttle audio by node, not stream 2017-01-25 00:19:38 +00:00
Zach Pomerantz
b7148b338d change audio-mixer backoff threshold 2017-01-25 00:19:28 +00:00
Zach Pomerantz
997c015b7f start audio-mix timestamp now 2017-01-24 21:30:07 +00:00
Zach Pomerantz
2bc725e2be change audio-mixer throttling to integral-based linear throttle/backoff 2017-01-24 21:30:05 +00:00
Zach Pomerantz
b028d84aab fix audio-mixer sleep 2017-01-24 21:29:20 +00:00
Zach Pomerantz
09f41bff00 improve audio-mixer timings 2017-01-24 21:29:20 +00:00
Zach Pomerantz
39acba5455 throttle audio streams by count using PI controller 2017-01-23 21:30:41 -05:00
Zach Pomerantz
3c9c78ae14 add threadcount to audio-mixer stats 2017-01-23 15:50:54 -05:00
Zach Pomerantz
eba96c45d7 fix warnings for signed comp in AudioMixerSlavePool 2017-01-20 12:25:22 -05:00
Atlante45
529286b2ea More EntityScriptServer work 2017-01-17 13:47:45 -08:00
Zach Fox
b0b6aeac6c Ken's feedback 2017-01-13 13:00:03 -08:00
Zach Fox
dcff873cd4 Modify slider function 2017-01-13 12:57:35 -08:00
Zach Fox
8bb200902f First pass 2017-01-13 12:57:35 -08:00
Zach Fox
afa6d54ac4 Actually fix the behavior... 2017-01-06 14:20:25 -08:00
Zach Fox
dec41f67cc Fix bugs and generally fix behavior 2017-01-06 13:58:23 -08:00
Ken Cooke
719c89e800 Shared implementation of fastLog2f() and fastExp2f() moved to AudioHelpers.h 2017-01-04 20:06:46 -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
Zach Pomerantz
5969c1eb06 ensure all accesses of audio pool num are guarded 2016-12-08 14:12:16 -05:00
Zach Pomerantz
eafbeb6d44 Revert "avoid pessimizing audio slave lock contention"
This reverts commit 3508e71753.
2016-12-08 14:10:00 -05:00
Zach Pomerantz
3508e71753 avoid pessimizing audio slave lock contention 2016-12-08 01:53:25 +00:00
Zach Pomerantz
6e0ad5a7ed initialize audio threads 2016-12-08 01:52:58 +00:00
Zach Pomerantz
ce9346f524 fix thread cleanup of audio pool 2016-12-07 18:43:02 -05:00
Zach Pomerantz
d2ed3caf02 respect audio thread pool size setting 2016-12-07 13:40:22 -05:00
Zach Pomerantz
c4e435a166 simplify locks in AudioMixerSlavePool 2016-12-07 01:17:34 +00:00
Zach Pomerantz
b2f995d3df algorithm->nestedEach in LimitedNodeList 2016-12-07 00:03:30 +00:00
Zach Pomerantz
28960681d9 limit audio pool to sane thread count 2016-12-06 23:57:38 +00:00
Zach Pomerantz
259775e163 clarify lock requirement in audio slave pool 2016-12-06 23:56:11 +00:00
Zach Pomerantz
2fc904b990 fix typos 2016-12-06 23:54:13 +00:00
Zach Pomerantz
557ab43f0f add a timeout for errant audio slave threads 2016-12-06 23:53:16 +00:00
Zach Pomerantz
132e9bd644 add timings to AudioMixer 2016-12-06 23:51:06 +00:00
Zach Pomerantz
2a6e46aa0c rm static buffer from AudioMixerSlave 2016-12-06 20:15:39 +00:00
Zach Pomerantz
d899391a1a fix audio hist array initializer for WIN32 2016-12-02 04:12:44 +00:00
Zach Pomerantz
800744a139 fix audio pool shutdown and add single threading 2016-12-01 23:03:37 +00:00
Zach Pomerantz
78bc5cf502 fix audio pool resizing 2016-12-01 21:25:56 +00:00
Zach Pomerantz
2c42bb0aa8 time audio mixing frames 2016-11-30 18:18:36 -05:00
Zach Pomerantz
8a6dcdeb68 mix audio with single node list read lock 2016-11-30 16:37:34 -05:00
Zach Pomerantz
b4638105e3 expose audio mixer threads to gui 2016-11-29 13:32:10 -05:00
Zach Pomerantz
7a440def87 add AudioMixerSlavePool 2016-11-28 17:59:29 -05:00
Zach Pomerantz
41ef105456 clean up AudioMixerSlave 2016-11-28 17:07:24 -05:00
Zach Pomerantz
bf137cd589 break AudioMixer slave/stats into own files 2016-11-28 16:50:47 -05:00
Zach Pomerantz
2e619b230d add AudioMixerStats 2016-11-28 16:50:42 -05:00
Zach Pomerantz
192f4791d5 move mixing into AudioMixerSlave 2016-11-28 16:50:26 -05:00
Zach Pomerantz
891084e9db modularize audio mixing code 2016-11-28 16:48:53 -05:00
Zach Pomerantz
028ac5264f consolidate AudioMixer slots 2016-11-28 16:26:53 -05:00
Zach Pomerantz
0170379d3c rm unused vars 2016-11-27 18:09:05 -05:00
Brad Hefta-Gaub
fe709f51de personal space feature 2016-11-19 16:30:15 -08:00
Stephen Birarda
dadcaa9959 don't send audio/avatar data for ignoree to ignored node 2016-11-14 10:12:36 -08:00
David Kelly
6063a63f44 cr feedback 2016-11-11 14:23:59 -08:00
David Kelly
9c8f22e0e7 straight to audio mixer
since we can get the canKick there too.  (doh)
2016-11-11 09:30:58 -08:00
David Kelly
80d4033767 oops forgot one thing... 2016-11-10 17:13:50 -08:00
David Kelly
285520dff7 Initial cut
No script work yet, just first stab at underpinnings
2016-11-10 16:24:35 -08:00
Stephen Birarda
f56a5d1d98 elevate permissions required for mute environment 2016-11-10 09:23:01 -08:00
David Kelly
21d1f40f59 Seems we were not deleting the right hrtfs when a node is killed
Simple fix, just make sure we delete the hrtfs associated with the
killedNode.  The test is to delete some nodes (agents) and make sure
nothing bad happens to audio mixer, or the audio itself.
2016-11-04 13:15:02 -07:00
David Kelly
920cd90afa CR feedback 2016-11-03 13:23:05 -07:00
David Kelly
ec0382daf7 PR feedback
Completely deleting hrtfs incorrectly.  This seems to be better, we
only want to delete HRTF for the QUuid() stream for the killed node in each
node's list of HRTFs.
2016-11-01 18:29:31 -07:00
David Kelly
0b80610e65 Needed to properly remove hrtfs for avatar audio 2016-11-01 15:09:14 -07:00
David Kelly
e63e9bc017 Remove HRTFs for Avatar too
Turns out there was already a function for that, if you just call
removeHRTFForStream without a 2nd param, it appears to just delete
the audio with uuid of QUuid() which is the avatar's mic.  That is
what we want, so cool.
2016-10-31 13:25:22 -07:00
David Kelly
80e38c395e Send KillAvatar to AudioMixer too
So it can remove the listening agent avatar audio streams.  Otherwise
they stick around forever, and eventually swamp the audio mixer.
2016-10-31 10:35:16 -07:00
David Kelly
e3a22618d1 CR feedback 2016-10-27 17:49:43 -07:00
David Kelly
52a14bf5c3 Merge branch 'master' of github.com:highfidelity/hifi into dk/moreACAudioArtifacts 2016-10-27 16:52:25 -07:00
David Kelly
292dd67433 cleanup 2016-10-27 16:04:30 -07:00
Howard Stearns
d2b83b47ba Merge pull request #8936 from zzmp/clean/audio-mixer
clean audio mixer
2016-10-27 15:57:16 -07:00
David Kelly
5e4f539144 AudioMixer flushes now
And protected agent from case with no codec
2016-10-27 14:46:04 -07:00
Zach Pomerantz
a7d54b8e0a rm unused lastCutoffRatio 2016-10-27 14:38:17 -07:00
Zach Pomerantz
c14a928db5 convert size_t to int 2016-10-27 14:34:10 -07:00
Zach Pomerantz
32040a9047 add stat for streams in audio mixer 2016-10-27 13:55:17 -07:00
Zach Pomerantz
20bac5aeef clean up broadcastMixes 2016-10-27 13:47:00 -07:00
Zach Pomerantz
9e9f8666ce clean up handleMismatchAudioFormat comment 2016-10-27 13:46:53 -07:00
Zach Pomerantz
04e5d8e302 initialize audio client data 2016-10-27 13:46:42 -07:00
Zach Pomerantz
3e16dabb75 fix audio mixer throttling 2016-10-27 13:46:33 -07:00
David Kelly
6a61762659 First try
AudioMixer has same issue transitioning from silence to encoded
audio and back, it seems.  This makes that go away, but I don't
like it.  Better to support a flush function in the encoder but
for now lets do this and be sure it is the entire issue.
2016-10-26 17:41:34 -07:00
David Kelly
bdcb58bf8b Merge pull request #8847 from sethalves/fix-audio-mixer-data-race-1
fix some data-races in logging system
2016-10-21 15:33:40 -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
Seth Alves
af5be8d1d9 reduce data-races in logging 2016-10-18 15:59:00 -07:00
Seth Alves
0c6dedff45 avoid various data-races related to stats collection and delivery 2016-10-18 13:05:53 -07:00
Zach Pomerantz
43c40aa090 avoid repetition with fade on injectors 2016-09-29 15:25:41 -07:00
Zach Pomerantz
055fabf57b fix audio AppendFlag semantics 2016-09-26 18:51:51 -07:00
Zach Pomerantz
d3132d8746 denote terminal audio stats packet 2016-09-26 16:50:51 -07:00
Zach Pomerantz
b9c4018b8e expose AudioStats to qml/js 2016-09-26 15:35:29 -07:00
Zach Pomerantz
562e8e0c65 disable excessive audio settings logging 2016-09-23 11:58:02 -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
Zach Pomerantz
177466e4c7 calculate unplayed ms on all streams/buffers as max 2016-09-15 17:54:41 -07:00
Seth Alves
87dbfa7e47 add -Wsuggest-override to compile flags and deal with fallout 2016-08-18 09:51:41 -07:00
Brad Hefta-Gaub
7cbc0bcabe Merge pull request #8366 from kencooke/master
optimized distance-attnuation calculation
2016-08-05 16:45:35 -07:00
Ken Cooke
7629e34586 optimized distance-attnuation calculation 2016-08-04 11:05:34 -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
c6ffd81c4b some cleanup 2016-07-18 22:42:38 -07:00
Brad Hefta-Gaub
2e63aba8c9 when getting unexpected codec in the mixer, send a message to the client to select a different codec 2016-07-18 22:29:05 -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
Ken Cooke
59ac2a789f Fix the AudioMixer distance attenuation.
The zone settings are still used, and still match the documentation where 0 = no attenuation and 1 = max attenuation.  The default is now 0.5 which corresponds to -6dB per doubling of distance. This is the attenuation for a spherical wave in the free field.
2016-07-15 18:07:19 -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
Stephen Birarda
b68958317a re-send ignore requests when mixers are re-added 2016-07-13 15:06:31 -07:00
Stephen Birarda
095bd7e6c8 cleanup logging, move packet parsing to mixers 2016-07-13 15:06:31 -07:00
Stephen Birarda
a134ac72de add packet type and plumbing for node ignore 2016-07-13 15:06:31 -07:00
Brad Hefta-Gaub
6d7c8d5759 fix crash in audio-mixer if no plugins installed 2016-07-12 16:11:43 -07:00
Brad Hefta-Gaub
71b6210c4e removed some log spam 2016-07-12 10:18:37 -07:00
Brad Hefta-Gaub
7d608ba592 groundwork for injector support 2016-07-10 21:01:20 -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
Brad Hefta-Gaub
3c6447326e more codec plumbing 2016-07-07 21:24:24 -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
f65f99a3e0 fix warning 2016-05-29 12:34:57 -07:00
Brad Hefta-Gaub
7fd531541c simplify 2016-05-29 12:08:10 -07:00
Brad Hefta-Gaub
1e7cd06d0e add audio peak limiter to audio mixer 2016-05-28 20:34:27 -07:00
Stephen Birarda
93cf5a1035 fixes for CR comments 2016-04-18 16:53:02 -07:00
Stephen Birarda
1d256be7ee fix random stats sending for AudioMixer clients 2016-04-18 16:04:20 -07:00