Commit graph

1171 commits

Author SHA1 Message Date
Simon Walton
9f9a68188d Merge remote-tracking branch 'upstream/master' into short-id 2018-04-20 11:10:21 -07:00
Simon Walton
93bcd1df20 Fix Linux build for std::call_once with lambda
MacOS & Ubuntu don't like the combination of std::call_once and
lambda w/ reference param, for some reason. Change to pointer
param.
2018-04-04 17:55:45 -07:00
Simon Walton
a370d287c3 Change AudioRingBuffer.cpp to use std::call_once 2018-04-04 16:42:10 -07:00
Simon Walton
ed3347a89b Repeated logging - reviewer fixes 2018-04-04 14:11:10 -07:00
Simon Walton
692ccfc09b Create HIFI_FCDEBUG(_ID) variants that require a category
Original macros use default settings.
2018-04-04 09:49:15 -07:00
Simon Walton
7d16ca9c1c Remove uses of addRepeatedMessageRegex() and its implementation
Change to new log-message ID scheme.
2018-04-03 17:54:01 -07:00
Simon Walton
1b0b280f3a Fix SequenceNumberStats, misc. clean-up 2018-03-29 10:47:11 -07:00
Simon Walton
d3464378b7 Short local source IDs - checkpoint
DS assigns 16-bit IDs as well as UUIDs; ACs track mappings;
nodes use short IDs in packets. Initial setup works; then
fails prob. due to DS UUID.
2018-03-27 13:46:58 -07:00
Ken Cooke
c06d28ee5f Improved quality of the audio resampling filter kernel 2018-03-10 10:34:10 -08:00
Dante Ruiz
3a39fca268 made requested changes 2018-03-09 10:09:51 -08:00
Dante Ruiz
c49d0557fc fixing check box issues 2018-03-09 09:29:37 -08:00
Dante Ruiz
55d8cfd4c1 make sure dont make audio devices that don't use stereo use stereo 2018-03-02 10:56:44 -08:00
Ken Cooke
bc7b983f48 Fast approximation of the azimuth parallax correction 2018-02-28 04:44:20 -08:00
Ken Cooke
41ccf6afd8 Compensate the near-field azimuth correction for the parallax baked into the HRTF dataset 2018-02-27 12:49:32 -08:00
Ken Cooke
bb2f3cac2c Use named constant for the onset of near-field corrections (1 meter) 2018-02-27 08:51:55 -08:00
Ken Cooke
e367167709 New HRTF with near-field audio spatialization 2018-02-22 15:53:28 -08:00
Stephen Birarda
ffd10b79bf refuse to handle positional audio streams with NaN position 2018-02-02 11:21:50 -08:00
Ken Cooke
e2e4e7f423 Re-implement collision sound pitch shifting 2018-01-19 16:03:59 -08:00
Ken Cooke
a421ba7649 Add "pitch" parameter to scriptable audio injector options.
Used in playSound() to pitch-shift the audio when injector is created.
2018-01-19 14:50:51 -08:00
Ken Cooke
660032d8fb Fix bug in how emitAudioPacket() determines mono/stereo.
Compressed bytes were counted as if audio samples.
2018-01-10 06:54:27 -08:00
Ken Cooke
b6a88bbdda Invalid WAV files should always be logged and not played 2017-12-14 10:20:46 -08:00
Ken Cooke
a99b1ffa23 HRTF cleanup 2017-10-29 18:01:43 -07:00
luiscuenca
b7c375f396 Cleaning 2017-10-25 19:09:37 -07:00
luiscuenca
3d3077978e Simplyfied and fixed null pointer 2017-10-25 18:47:10 -07:00
John Conklin II
31b8013ed9 Merge pull request #11538 from kencooke/audio-mac-bugfix2
Additional cleanup of audio noise gate
2017-10-17 11:02:55 -07:00
Ken Cooke
bd82f47c66 Remove debug logging 2017-10-16 12:11:50 -07:00
Ken Cooke
7c14d5bbdf Remove debug logging 2017-10-16 11:43:52 -07:00
Ken Cooke
a702c5a0e4 Fix audio glitches caused by initial burst of SelectedAudioFormat packets.
Temporary codec mismatch is expected during audio codec startup, due to packets already in-flight.
2017-10-16 11:41:40 -07:00
Ken Cooke
e4e37e65e6 Handle packets in-flight during audio codec startup 2017-10-13 08:19:30 -07:00
Ken Cooke
b026a0461d Fix clang warnings for left-shift of signed int 2017-10-10 09:13:06 -07:00
Ken Cooke
4f19366349 Remove debug code 2017-10-06 08:05:55 -07:00
Ken Cooke
c6f3a9d9c3 Better comments 2017-10-06 08:04:18 -07:00
Ken Cooke
516e983dfb Refactor peakhold to avoid mixed signed/unsigned fixed-point math 2017-10-06 08:03:25 -07:00
Ken Cooke
8822b1bfa4 Minor cleanup 2017-10-05 09:49:38 -07:00
Ken Cooke
82d13090f9 Better comments 2017-10-05 09:28:30 -07:00
Ken Cooke
d8341a0929 Work around compiler optimization bug 2017-10-05 09:27:07 -07:00
Ken Cooke
218de29356 disable compiler optimization as temporary fix 2017-10-05 07:39:21 -07:00
Bradley Austin Davis
b93e91b9f3 New android toolchain 2017-09-19 13:45:12 -07:00
Ken Cooke
684b7fee5a DC filter cutoff at 0.5Hz 2017-08-24 11:20:22 -07:00
Ken Cooke
4a253023ee float constants 2017-08-24 10:15:54 -07:00
Ken Cooke
c3ff505b73 More aggressive noise gate threshold 2017-08-24 10:06:41 -07:00
Atlante45
70a5916ef3 Fix debug builds startup crash 2017-07-19 16:18:01 -07:00
Seth Alves
06618e81d0 remove unneeded <> 2017-07-12 13:14:32 -07:00
Seth Alves
ddf2312dc6 code review 2017-07-12 12:45:52 -07:00
Seth Alves
b556ddc0ef remove unneeded AudioInjectorPointer constructor 2017-07-12 07:24:19 -07:00
Seth Alves
084a989a7a stopAndDeleteLater is now just stop 2017-07-11 21:21:42 -07:00
Seth Alves
3897ab2723 don't call deleteLater on smartpointered object 2017-07-11 20:16:00 -07:00
Seth Alves
972dc4d1b2 more const ref 2017-07-11 19:56:34 -07:00
Seth Alves
c52e7e180a use const AudioInjectorPointer& in some places 2017-07-11 19:42:03 -07:00
Seth Alves
81489ea6c4 use QEnableSharedFromThis 2017-07-11 18:44:37 -07:00
Seth Alves
0b2f13dacc don't use deleteLater on smartpointered object 2017-07-11 17:07:44 -07:00
Seth Alves
59c586bc5d remove unused code 2017-07-11 16:58:19 -07:00
Seth Alves
3c8c87cff5 i hate you, milkman dan 2017-07-11 16:48:28 -07:00
Seth Alves
3670a04d8e switch bare pointers to AudioInjector objects to be QSharedPointers 2017-07-11 14:24:58 -07:00
Brad Davis
6fc82bb351 Switch to preprocessor macro for blocking invokes to capture function information 2017-06-30 11:36:24 -07:00
Brad Davis
b52dd7b822 Don't use blocking connections on the main thread 2017-06-29 20:45:17 -07:00
Brad Hefta-Gaub
197006e3d3 Merge pull request #10780 from kencooke/audio-hrtf-avx512
HRTF optimizations
2017-06-22 13:34:05 -07:00
Ken Cooke
af0f460659 Fix extra whitespace 2017-06-22 06:38:13 -07:00
Ken Cooke
5d235f8c52 Fix typo 2017-06-22 06:32:32 -07:00
Ken Cooke
38c87b0f08 Fallback code to allow compiling with VS2013 2017-06-21 13:19:46 -07:00
Ken Cooke
afb26df2de Runtime dispatch for AVX512 optimized HRTF 2017-06-21 11:26:53 -07:00
Ken Cooke
00c904c927 Detect compiler support for SIMD intrinsics in conditional compilation 2017-06-21 09:34:02 -07:00
Ken Cooke
1688ad5f0a HRTF optimized for AVX512 2017-06-20 17:09:38 -07:00
Stephen Birarda
c132e29b06 remove conditional seek from InboundAudioStream 2017-06-14 11:42:19 -07:00
Stephen Birarda
29842c67cc use received message faking for cleaner replication in audio 2017-06-13 18:04:59 -07:00
Stephen Birarda
ab3a0ddba2 don't emit codec mismatch upstream, handle replicated silent frames 2017-06-12 19:49:02 -07:00
seefo
cc57d28ccc Made requested changes to PR10554 2017-05-26 11:49:43 -07:00
seefo
90d5b2a6d4 Removed SoundProcessor's dependence on Sound objects 2017-05-26 10:32:34 -07:00
seefo
32b5ac5020 Moved audio asset processing to a separate thread 2017-05-25 16:10:53 -07:00
Ken Cooke
3d67978caa Delete the old noise gate 2017-05-23 15:53:38 -07:00
Ken Cooke
986d86ec17 Fix nasty preexisting bug in computing numSamples, where sizeof(SAMPLE_SIZE) incorrectly returns 4 instead of 2. 2017-05-23 10:29:43 -07:00
Ken Cooke
746b41e509 Fix typo in comments 2017-05-18 17:30:07 -07:00
Ken Cooke
205b9d4aec Fix compiler warnings 2017-05-18 16:49:02 -07:00
Ken Cooke
18ed3dd6ed Remove debug code 2017-05-18 14:30:25 -07:00
Ken Cooke
6f2a84a084 Add stand-alone DC blocking filter 2017-05-18 14:26:35 -07:00
Ken Cooke
c1cd26b473 New log-domain noise gate with adaptive threshold 2017-05-18 14:21:56 -07:00
Ken Cooke
106dd6ce6a Fast fixed-point log2 approximation 2017-05-18 14:15:10 -07:00
Ken Cooke
cad9eeb8ba Refactor the peak limiter (output is bit-exact) 2017-05-18 14:13:24 -07:00
Zach Pomerantz
c478f1a752 synchronously fill injector buffer on underrun 2017-05-09 16:34:42 -04:00
Zach Pomerantz
48af83a960 guard against audio injector and local buffer datarace 2017-05-05 17:05:40 -04:00
Atlante45
70ece9f0fd Load skybox first and sounds later 2017-04-26 14:57:23 -07:00
Ken Cooke
69863dd735 Fix the crash in Debug builds, caused by undeclared metatype for AudioInjector* 2017-03-30 08:52:04 -07:00
Zach Pomerantz
f43706dfe1 clean AudioNoiseGate 2017-03-15 00:14:55 +00:00
Zach Pomerantz
0abcda86a8 mv AudioNoiseGate to audio 2017-03-15 00:14:55 +00:00
Brad Hefta-Gaub
bdab24d9bf fix spelling 2017-03-09 08:25:56 -08:00
Brad Hefta-Gaub
79d8d90581 CR feedback 2017-03-08 20:35:24 -08:00
Brad Hefta-Gaub
2d595c1f87 CR feedback 2017-03-08 20:29:32 -08:00
Brad Hefta-Gaub
1bdad89cbe properly handle silent packet transitions 2017-03-08 17:27:46 -08:00
Thijs Wenker
13b2b6086f Fix recorder.js playback in interface 2017-02-21 19:47:26 +01:00
Zach Pomerantz
ff56eb24c8 Merge pull request #9537 from zzmp/audio/throttle-filter
Add injector/avatar attenuation to audio-mixer throttling
2017-02-07 20:57:43 +01:00
Ken Cooke
63c2aa1dfc Remove obsoleted code 2017-02-06 12:55:03 -08:00
Ken Cooke
a77e4262e3 Remove obsoleted code 2017-02-06 12:47:28 -08:00
Ken Cooke
49605d52e0 Remove debug code 2017-02-06 10:42:32 -08:00
Ken Cooke
8033f932a6 Simulate 1% random packet-loss, for debug/test 2017-02-06 10:16:25 -08:00
Ken Cooke
4acb99cd4f Use interpolated audio (codec packet-loss concealment) or zero samples (if no codec) when audio packets are lost. This audio is still processed by the audio pipeline to avoid clicks/pops. 2017-02-06 09:29:39 -08:00
Zach Pomerantz
1f56814714 Merge branch 'master' of https://github.com/highfidelity/hifi into audio/throttle-filter 2017-01-31 19:35:27 +00:00
Zach Pomerantz
24ca765a39 add hrtf gain getter 2017-01-27 14:36:59 -05:00
Zach Pomerantz
1c5228cb6d fix AudioRingBuffer::appendData 2017-01-26 19:16:02 -05:00
Zach Pomerantz
3d526a1024 Merge branch 'master' of github.com:highfidelity/hifi into audio/threaded-local 2017-01-26 18:56:58 -05:00
Atlante45
f540c94113 Merge branch 'master' of https://github.com/highfidelity/hifi into ess-pr 2017-01-25 13:06:49 -08:00
Atlante45
3f8b2f9cbb Fix invalid volume values in injector options 2017-01-23 11:49:07 -08:00
Zach Pomerantz
061668cba4 use lock-free pipe for local audio in device callback 2017-01-22 00:25:08 -05:00
Zach Pomerantz
bb247fe8a3 rename AudioMixRingBuffer 2017-01-20 14:48:54 -05:00
Zach Pomerantz
75281099bd add conformant explicit instantiation for AudioRingBuffers 2017-01-20 14:33:54 -05:00
Stephen Birarda
1b778a3ee0 fail quietly if local injection cannot happen 2017-01-20 10:42:07 -08:00
Zach Pomerantz
02e62938a4 add AudioRingMixBuffer 2017-01-20 12:29:44 -05:00
Zach Pomerantz
95a7b38ea4 templatize AudioRingBuffer 2017-01-20 12:29:44 -05:00
Zach Fox
b0b6aeac6c Ken's feedback 2017-01-13 13:00:03 -08:00
Ken Cooke
083c7bc523 Add a local HRTF gain adjustment. Gain adjustments are persistent and properly interpolated. 2017-01-11 10:05:39 -08:00
Ken Cooke
afacb59999 Use logarithmic quantization of injector "volume" over the wire.
Allow gains > 1.0 (up to +30dB)
Better quantization at low levels (uniform steps in dB)
2017-01-04 15:38:26 -08:00
Ken Cooke
a42ac89a6d Faster HRTF
New AVX2 implementation of FIR_1x4() achieves 24 FLOPS per clock on HSW/BDW/SKL
Removed old AVX implementation
32-byte alignment of SIMD buffers and tables
Fixed the poorly optimized code produced by GCC -O2
2016-12-30 13:47:31 -08:00
Andrew Meadows
b56a15b60a Merge pull request #9273 from kencooke/audio-ambisonic-src2
Improved audio resampler
2016-12-27 17:07:56 -08:00
Ken Cooke
a2ea6bf36e Improved audio resampler
Added LQ mode (2x faster).
Added HQ mode (2x slower), intended for offline resampling.
Default (MQ) quality is slightly improved (512 filter phases in irrational mode).
2016-12-24 11:10:35 -08:00
Ken Cooke
fc2c2a1906 fix compiler warnings 2016-12-24 10:06:30 -08:00
Ken Cooke
f5d52c3d3b 64-bit code optimizations
Use size_t for inner-loop array indexing, to avoid extraneous MOVSXD instructions when compiled with MSVC x64.
2016-12-24 09:00:23 -08:00
Ken Cooke
b878051cd9 Ambisonic limiter, with gain linking between all channels to preserve imaging 2016-12-24 08:42:56 -08:00
Brad Hefta-Gaub
dbbed462b4 cleanup naked qDebug() calls 2016-12-19 22:24:25 -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
Ken Cooke
b4994a3d89 Ambisonic resampler, optimized using AVX2.
int16_t and float versions.
Removed unused SSE2 version.
Removed unused getExactInput().
Refactored to remove nested #ifdefs.
2016-12-14 15:18:41 -08:00
David Kelly
a8157ae2cd Typo, plus some CR feedback 2016-12-13 17:48:30 -08:00
David Kelly
d6b99ce57e Removed volume from AudioInjectorLocalBuffer
Since it doesn't use it.  Now clamping at 0-1 in the
AudioInjector::getVolume() call.  This is better -- one spot so it now
always gets clamped.
2016-12-13 17:34:56 -08:00
Zach Fox
44c6eb303b Fix the bug 2016-12-13 12:46:31 -08:00
Clément Brisset
050c0fe14a Merge pull request #9188 from kencooke/audio-wav-parser
Fix and improve the WAV file loader
2016-12-12 17:51:20 -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
0f10975a59 Robust WAV parser.
Skips extraneous chunks, handles WAVE_FORMAT_EXTENSIBLE, supports arbitrary sample rates.
2016-12-07 08:44:10 -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
452f081366 Add support for WAV assets with arbitrary sample rate, not just 48khz. Fast path when already 24khz. 2016-11-30 14:56:11 -08:00
Ken Cooke
7ad384d731 reformat to meet Coding Standard, more explicit license 2016-11-30 10:44:27 -08:00
Ken Cooke
812d28dbff Fix compiler warnings 2016-11-29 14:39:49 -08:00
Ken Cooke
68085947a0 replace tabs with spaces 2016-11-29 14:12:41 -08:00
Ken Cooke
5d05fd389f First-order Ambisonic renderer, optimized for AVX2 2016-11-29 12:53:19 -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
Zach Pomerantz
3bea1069f2 fix unit conversion for audio fade factor 2016-10-21 16:10:33 -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
Zach Pomerantz
afce8c4a45 STEREO_FACTOR -> AudioConstants::STEREO 2016-10-05 13:02:28 -07:00
Zach Pomerantz
5af95c6062 store channels on audio stream 2016-10-05 12:04:24 -07:00
Zach Pomerantz
05aded5c9d differentiate smaples/frames from dropped audio 2016-10-04 18:45:03 -07:00
Zach Pomerantz
00fabb77b4 use proper audio frame naming 2016-10-04 18:27:56 -07:00
Zach Pomerantz
972a611d03 retain stereo on dead audio resampling 2016-10-04 17:54:20 -07:00
Zach Pomerantz
768354e49f loopback local injectors on server echo 2016-09-29 15:25:17 -07:00
Zach Pomerantz
055fabf57b fix audio AppendFlag semantics 2016-09-26 18:51:51 -07:00
Brad Hefta-Gaub
ee6719f94a Merge pull request #8652 from zzmp/fix/audio-injector
fix injector restart fail on lack of local interface
2016-09-23 16:07:16 -07:00
Zach Pomerantz
912db1c0e1 silence audiostream logging 2016-09-23 15:32:23 -07:00
Chris Collins
be33524990 Merge pull request #8636 from zzmp/clean/audio-config
strip unused audio settings, hide the rest
2016-09-23 15:08:48 -07:00
Zach Pomerantz
faba165408 fix injector fail on lack of local if
- consolidate codepaths for new/restarted injections
- allow network injection without local injection
2016-09-23 15:03:38 -07:00
Zach Pomerantz
09a96796de bring audio stream initializers to standard 2016-09-23 11:58:15 -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
9e2ec27b29 always play audio injectors locally 2016-09-21 17:20:51 -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
0d3a9af6a6 wait 10s before growing jitter 2016-09-16 12:03:54 -07:00
Zach Pomerantz
177466e4c7 calculate unplayed ms on all streams/buffers as max 2016-09-15 17:54:41 -07:00
Zach Pomerantz
9792d025fa clean up audio stats 2016-09-15 13:09:06 -07:00
Ken Cooke
3a41b285a0 Fix local audio injectors, that got disabled somehow 2016-09-13 17:21:48 -07:00
Brad Hefta-Gaub
dbf29ba79d Merge pull request #8569 from jherico/gli
Stuttering: Upgrade GLM & add GLI integration
2016-09-09 12:11:08 -07:00
Brad Davis
ecfe56085d GLM update and GLI integration 2016-09-09 10:18:15 -07:00
Zach Pomerantz
7b8f616099 add audiostream (jitter) logging 2016-09-08 17:23:56 -07:00
Brad Hefta-Gaub
a40a9f1d73 Merge pull request #8575 from kencooke/neon_optimization
Added ARM NEON optimized audio sample rate conversion
2016-09-08 09:58:47 -07:00
Ken Cooke
9457d49103 Merge branch 'master' of https://github.com/highfidelity/hifi into low-latency-audio 2016-09-06 20:56:20 -07:00
Ken Cooke
284bbfdf06 Remove extraneous code 2016-09-06 17:09:59 -07:00
Ken Cooke
b47000eab2 Added ARM NEON optimized audio sample rate conversion 2016-09-06 16:53:06 -07:00
Brad Hefta-Gaub
a51f66e9ff Merge pull request #8553 from zzmp/clean/audio-ring-buffer
clean and comment AudioRingBuffer
2016-09-02 20:16:06 -07:00
Stephen Birarda
dae40c944b fix audio and audio-client compile for android 2016-08-31 16:55:19 -07:00
Zach Pomerantz
4d4a68d706 add FIXME about loudness in AudioRingBuffer 2016-08-31 14:44:45 -07:00
Zach Pomerantz
ba96ab25dc inline some AudioRingBuffer definitions 2016-08-31 14:43:44 -07:00
Zach Pomerantz
b740b9802a clean up AudioRingBuffer 2016-08-31 13:57:56 -07:00
Zach Pomerantz
488f49fc40 rm AudioRingBuffer random access mode 2016-08-31 11:37:05 -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
Seth Alves
722e88253d missed one 2016-08-18 09:59:40 -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
46c94a938e Updated HRTF to process in 240-sample blocks 2016-08-18 08:29:32 -07:00
Ken Cooke
f80304d68e Change audio pipelines to process in exactly 10ms blocks (240 samples instead of 256).
This produces an integral number of samples when resampled to 44.1k or 48k, allowing a 44.1k back-end to work correctly without extra buffering or dynamic buffers sizes.
2016-08-18 08:27:20 -07:00
Ken Cooke
d9f12e44dc Add resampler support for downsampling with variable-input constant-output buffering mode 2016-08-16 16:47:55 -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 Davis
89d9affb41 Merge remote-tracking branch 'upstream/stable' 2016-07-22 19:47:31 -07:00
David Kelly
3d3a7a8820 Merge branch 'stable' of github.com:highfidelity/hifi into dk/hotfixForAudio 2016-07-22 18:40:06 -07:00
David Kelly
8b8a98bfcc Acutally audio was really broken
Seems there were 2 issues:
* If you couldn't inject locally (say, no audio interface
  because you are an assignment client), we would not do the
  network injection at all.  That's bad.
* When we don't have a codec, like when using an injector, we
  were serializing the empty string in some problematic way.  I
  just use the built-in serialization, and it seems fine.

I tested this by first playing a sound in the console (or maybe you
want to tip some cows, that is ok too).  Then in _another_ interface
client on another machine in the same domain, I better hear the
sound.

Then, I added a script to play audio as a persistent script, which
just loops forever and ever.  You should hear that on both interface
clients also.

A detailed test plan to follow.

Also: using @zappoman serialization code, which is safer than using
the Qt code which does magical things for nulls.  Good to do this cuz
you know, things happen...
2016-07-22 18:33:38 -07:00
David Kelly
4b48cc7c2e Acutally audio was really broken
Seems there were 2 issues:
* If you couldn't inject locally (say, no audio interface
  because you are an assignment client), we would not do the
  network injection at all.  That's bad.
* When we don't have a codec, like when using an injector, we
  were serializing the empty string in some problematic way.  I
  just use the built-in serialization, and it seems fine.

I tested this by first playing a sound in the console (or maybe you
want to tip some cows, that is ok too).  Then in _another_ interface
client on another machine in the same domain, I better hear the
sound.

Then, I added a script to play audio as a persistent script, which
just loops forever and ever.  You should hear that on both interface
clients also.

A detailed test plan to follow.

Also: using @zappoman serialization code, which is safer than using
the Qt code which does magical things for nulls.  Good to do this cuz
you know, things happen...
2016-07-22 17:47:24 -07:00
Brad Hefta-Gaub
bb8224be8c fix silence on no codec after previous codec has been set 2016-07-21 13:57:11 -07:00
David Kelly
7b2d5e7fab Potential cause of that buzzsaw when resetting 2016-07-20 10:41:16 -07:00
Brad Hefta-Gaub
1ee5023f6d fix warnings 2016-07-19 08:33:54 -07:00
Brad Hefta-Gaub
c484fec51d cleanup 2016-07-18 22:54:57 -07:00
Brad Hefta-Gaub
dbf60a594c Merge branch 'master' of https://github.com/highfidelity/hifi into addCodecNameToStream 2016-07-18 22:43:16 -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
David Kelly
2a89fa25bb Removing comments
Since I looked into it, seems ok
2016-07-18 16:22:12 -07:00
David Kelly
df615b1503 NotFinished never should have had its own bit
Since there is a Finished flag too.  So now, it is just 0, used as
a starting point, and we check for !hasState(Finished).  <sigh>
2016-07-18 16:02:02 -07:00
David Kelly
8c0eb1e4d2 Fixed some bad logic
When I "fixed" my or instead of and issue, I did it in the wrong
direction.  But it looked right :)  Now it is.  Sigh.  Long story
how it got there, but it seems good now.
2016-07-15 19:48:15 -07:00
David Kelly
fb99828e30 PR feedback
Code a bit more readable.  Sadly (and I guess it makes sense), a
enum class XXX is not a class, so you cannot have member functions
for it.  I can imagine no way to have a vtable if you are really
representing it as a uint8_t or whatever.  So, I put a stateHas
function in the AudioInjector instead.  Definite improvement.
2016-07-15 17:09:27 -07:00
David Kelly
8df4ed01d9 fixed typo
which oddly I was sure I already did.  Seems I didn't push it?  OK
now it is pushed.
2016-07-15 16:22:41 -07:00
David Kelly
0fcc427d41 Merge branch 'master' of github.com:highfidelity/hifi into dk/localNoEcho 2016-07-15 11:01:42 -07:00
David Kelly
e1212c54cb Updated to deal with streaming out of both buffers
So gotta keep track of when finished streaming to network and
locally separately.  That means the State needed to be more of a
bitflag and less of an enum.
2016-07-15 09:55:50 -07:00
Ken Cooke
d84c7524bf Remove global HRTF headroom.
The initial HRTF reduced overall gain by -6dB to avoid clipping at spectral peaks. With the addition of a peak limiter, this is no longer necessary. Changing to 0dB improves the loudness match between spatialized and unspatialized sounds.
2016-07-14 14:56:58 -07:00
Ken Cooke
fa55fc84f5 Optimized compute of distance filters using log-quantized lookup tables.
Magnitude error < 0.25dB for entire parameter space.
2016-07-14 12:04:05 -07:00
Ken Cooke
c7c02d7a59 Fix compiler warning 2016-07-14 11:24:48 -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