Commit graph

635 commits

Author SHA1 Message Date
milad nazeri
1121fe8da0 fix tabs 2018-04-23 21:47:53 -07:00
milad nazeri
4ac06fe99f Updating previous jsdocs 2018-04-22 22:22:33 -07:00
milad nazeri
e9b9c05b5d removed cruft 2018-04-22 08:51:47 -07:00
SamGondelman
3b4b43cf66 try to fix audio crash on startup 2018-04-20 10:23:47 -07:00
Ken Cooke
bcf893db18
Merge pull request #12586 from kencooke/audio-peakmeters-fix
Fix crash when closing the Audio menu
2018-03-13 07:52:37 -07: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
Ken Cooke
91b7acec1f Fix crash when closing the Audio menu. On some machines, checkPeakValues takes long enough that timer callbacks overlap and activeClients gets clobbered while in use. 2018-03-07 11:06:53 -08:00
John Conklin II
7bc3848c36
Merge pull request #12533 from druiz17/stereo-checkbox
Adding Stereo checkbox in Audio settings
2018-03-05 12:45:01 -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
Sam Gateau
88ecfe7895
Merge pull request #12464 from jherico/android_dev
Android Master
2018-03-01 17:22:34 -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
f25b8e8df0 Refactor distance attenuation for near-field HRTF.
Adds near-field attenuation from 0.125m to 1m, calibrated to 0dB at 1m. Overload will trigger dynamic range compression at the peak-limiter.
2018-02-22 16:05:01 -08:00
Gabriel Calero
a2f6548d1d Make slot declarations non-conditional 2018-02-12 13:45:56 -03:00
Gabriel Calero
a91118027d Remove dead code and extra logs 2018-01-26 18:14:43 -03:00
Gabriel Calero
ed1abb3a41 Restoring adaptive audio buffer management 2018-01-15 18:30:32 -03:00
Gabriel Calero
f889782250 Merge remote-tracking branch 'github/android' into android_audio_fixes 2018-01-15 18:28:31 -03:00
Cristian Luis Duarte
21f1c0e275 Android: Make audioInputStateChanged watcher work so it can restart input audio if it stops without a reason. Implement a mechanism that counts last reads in an interval and restart input audio in case of low reads -in these cases (happens particularly on Huawei) there is no call to the audioInputStateChanged method- (Android only) 2018-01-13 06:42:16 -03:00
Ken Cooke
dfc8c86571 Fix bug when calling switchOutputToAudioDevice() with the active device.
Pass QAudioDeviceInfo by value to avoid getting clobbered.
2018-01-11 18:22:34 -08:00
Ken Cooke
db6e70cb24 Fix bug when calling switchInputToAudioDevice() with the active device.
Pass QAudioDeviceInfo by value to avoid getting clobbered.
2018-01-11 18:14:16 -08:00
Ken Cooke
7c5085bd24 Handle stereo changes while active, by restarting the codec on both ends 2018-01-11 16:10:50 -08:00
Ken Cooke
6a2e3cc272 Enable stereo codecs for AvatarAudioStream 2018-01-10 15:14:18 -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
luiscuenca
8abe8b9879 move save logic to audioclient 2017-12-05 18:22:14 -08:00
luiscuenca
20d6615417 emit only when recording 2017-12-05 16:13:44 -08:00
luiscuenca
4030688e7a added record wav files 2017-12-03 11:54:37 -07:00
luiscuenca
027d2d323c Measure tool and corrections 2017-11-26 22:28:34 -07:00
Bradley Austin Davis
e42068f681 Merge branch 'master' into android_new 2017-09-26 14:31:29 -07:00
Bradley Austin Davis
b93e91b9f3 New android toolchain 2017-09-19 13:45:12 -07:00
vladest
6c32783a09 Merge branch 'master' into audio_devices_split 2017-09-19 17:43:03 +02:00
Brad Hefta-Gaub
c5098abfb9 Merge pull request #10937 from kencooke/zzmp-audio/peak-values
Add peak values for all input devices in selection dialog
2017-09-07 11:58:50 -07:00
vladest
6f0229f450 Reworked according to designers request. Do not fall back to default audion output 2017-08-22 23:26:27 +02:00
Ken Cooke
ee752df653 fix typo 2017-08-09 20:11:52 -07:00
Ken Cooke
bcdf13c59c Add explicit shutdown request, since null device means something else 2017-08-09 19:40:07 -07:00
Ken Cooke
ee6d4dfc14 If real input device fails to start, use dummy input 2017-08-09 17:50:20 -07:00
Ken Cooke
fc5b4be459 bugfix 2017-08-09 16:59:02 -07:00
Ken Cooke
9c6b7306c4 Re-implement callback to Use common handleAudioInput() 2017-08-09 16:58:12 -07:00
Ken Cooke
7daa3ecff3 Handle dummy input callbacks 2017-08-09 15:54:14 -07:00
Ken Cooke
6f2cc9cfeb When no input device, create dummy input to generate callbacks 2017-08-09 14:01:17 -07:00
Brad Davis
1ecca9fd29 Merge branch 'master' into zzmp-audio/peak-values 2017-08-06 17:21:00 -07:00
Ken Cooke
6ea4ed80cd Suppress initial PacketType::SilentAudioFrame on audio gate startup 2017-08-03 09:19:08 -07:00
Brad Davis
9f13533560 Ensure input and output device containers are protected by mutex 2017-07-18 08:58:17 -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
3670a04d8e switch bare pointers to AudioInjector objects to be QSharedPointers 2017-07-11 14:24:58 -07:00
Ken Cooke
d6eb731f3a Merge branch 'master' into audio/peak-values 2017-07-10 21:55:11 -07:00
Brad Davis
8372d73fec Additional thread safety 2017-06-30 09:15:06 -07:00
Brad Davis
b52dd7b822 Don't use blocking connections on the main thread 2017-06-29 20:45:17 -07:00
Zach Pomerantz
ed49f80322 fix peak check secs->msecs 2017-06-29 17:32:52 -04:00
Ken Cooke
0dbb7a71f3 CR fix: comments instead of ref code 2017-06-28 11:32:24 -07:00
Zach Pomerantz
3f57e5eb4d implement peakValueListChanged 2017-06-27 17:51:44 -04:00
Ken Cooke
ad970c9f5c fast compute of HRTF azimuth 2017-06-27 13:45:18 -07:00
Zach Pomerantz
b46219241c add peakValueListChanged scaffolding 2017-06-26 22:44:31 -04:00
Zach Pomerantz
497ee3a522 add Audio.inputLevel 2017-06-19 17:07:43 -07:00
Brad Davis
ed6620fc51 Merge pull request #10718 from jherico/frame_thread
Cleanup and refactoring
2017-06-19 13:31:44 -07:00
Brad Davis
a69cf31f4b PR feedback and cmake fixes 2017-06-16 16:59:58 -07:00
Zach Pomerantz
3093a73ce1 Merge branch 'master' of github.com:highfidelity/hifi into audio/parity 2017-06-15 15:04:06 -04:00
ZappoMan
d352163d77 fix no audio device from previously removed audio device 2017-06-15 09:24:14 -07:00
Zach Pomerantz
9017738a8d start device check timer 2017-06-13 18:00:41 -04:00
Zach Pomerantz
0e2976620d start device check timer 2017-06-13 18:00:09 -04:00
Zach Pomerantz
a8f69bb2e0 Merge branch 'master' of github.com:highfidelity/hifi into audio/parity 2017-06-13 17:41:52 -04:00
Zach Pomerantz
4a39798a97 sticky audio selection 2017-06-13 14:38:52 -04:00
Zach Pomerantz
b37a0239b0 up to reverb (needs cherry-picking) 2017-06-12 18:00:52 -04:00
Chris Collins
4b6c13bc1f Merge pull request #10646 from ZappoMan/debugAudioProblems
Fix for no-audio on clean install
2017-06-10 11:32:42 -10:00
ZappoMan
6fe20f90a3 add better debugging for audio problems
use OS default device if settings have no values
2017-06-09 13:36:12 -07:00
Bradley Austin Davis
fc6a278217 Fixing dangling thread issues, consolidating thread management 2017-06-06 15:02:16 -07:00
Zach Pomerantz
954e4979f8 expose Audio.devices.input/output 2017-05-31 20:14:58 -04:00
Ken Cooke
0fe404adbb Merge branch 'master' of https://github.com/highfidelity/hifi into audio-noisegate-new 2017-05-23 17:31:03 -07:00
Ken Cooke
6b740e855d Optimize the loudness computation
NOTES:
Loudness is now measured post-gating, for improved metering.
Keep original algorithm, since other code depends on loudness behavior.
2017-05-23 14:31:24 -07:00
Ken Cooke
a6a29786ae Cleanup 2017-05-23 12:53:39 -07:00
Ken Cooke
8608695695 Remove old noise gate 2017-05-23 12:52:29 -07:00
Ken Cooke
175d1be7ca Implement state-machine to detect gate opening/closing. Fixes bugs with mute. 2017-05-23 12:32:41 -07:00
Ken Cooke
850dbd76c9 Integrate new noise gate 2017-05-23 11:12:36 -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
71de3d5ca1 Instantiate new gate with the correct number of channels 2017-05-23 08:40:15 -07:00
Zach Pomerantz
c5a0a1af2f Merge pull request #10429 from zzmp/audio/close-device
Close audio device when switching outputs
2017-05-18 17:18:53 -04:00
Vladyslav Stelmakhovskyi
045e93fb95 Code style fixes #2 2017-05-11 21:49:07 +02:00
Vladyslav Stelmakhovskyi
4290eb21ea Fixed possible crashes/freezes on input audio switch 2017-05-11 15:41:07 +02:00
Vladyslav Stelmakhovskyi
e4d9772bbc Fixed crashes/freezes on audio switch 2017-05-11 15:20:36 +02:00
Vladyslav Stelmakhovskyi
2328da3c48 Merge branch 'master' into audio-source-sync 2017-05-10 21:22:40 +02:00
Vladyslav Stelmakhovskyi
2d46f9d30e Move most of the logic to C++ model, speed up initialization. Reduce number of AudioClient blocking calls to minimum 2017-05-10 21:21:39 +02:00
Zach Pomerantz
5a11911e1d close audio device when switching 2017-05-09 19:38:52 -04:00
Zach Pomerantz
219062b76a Merge branch 'master' of github.com:highfidelity/hifi into fix/audio-underrun 2017-05-09 17:32:24 -04:00
Zach Pomerantz
c478f1a752 synchronously fill injector buffer on underrun 2017-05-09 16:34:42 -04:00
Zach Pomerantz
73a3bf413b update local audio thread name 2017-05-08 20:14:09 -04:00
Zach Pomerantz
b6f652e0ea use network period multiple for local audio buffer 2017-05-08 20:05:14 -04:00
Zach Pomerantz
defc3c1c4f Merge branch 'master' of github.com:highfidelity/hifi into fix/audio-bg-join 2017-05-08 19:55:10 -04:00
Vladyslav Stelmakhovskyi
d0111ac0bb Merge branch 'master' into audio-source-sync 2017-05-08 20:09:34 +02:00
Zach Pomerantz
7db404eba0 recast avoid overwriting buffer logic 2017-05-05 18:16:48 -04:00
Zach Pomerantz
ed3fc004a6 avoid assignment-as-test 2017-05-05 18:15:56 -04:00
Zach Pomerantz
48af83a960 guard against audio injector and local buffer datarace 2017-05-05 17:05:40 -04:00
Zach Pomerantz
cdf6c332a6 prevent overflow of local injectors buffer 2017-05-05 16:29:52 -04:00
Zach Pomerantz
e882e7b648 rm extra lock in audio read 2017-05-05 15:37:01 -04:00
Zach Pomerantz
ca7cd61c64 Merge branch 'master' of github.com:highfidelity/hifi into fix/audio-bg-join 2017-05-05 13:04:01 -04:00
Vladyslav Stelmakhovskyi
d18ac6dd49 Reimplemented Tablet Audio screen using C++ model 2017-04-28 23:02:28 +02:00
Stephen Birarda
da1d93b86c fix emission of inputReceived in AudioClient 2017-04-25 15:41:37 -07:00
Zach Pomerantz
e9c5b86003 use mutex, not cv 2017-04-25 16:02:43 -04:00
Zach Pomerantz
c27dd446eb rename to standard 2017-04-25 14:59:30 -04:00
Zach Pomerantz
4a26785eda cleanup Audio bg threads in cleanupBeforeQuit 2017-04-24 18:21:27 -04:00
Zach Pomerantz
cd2665fc55 standardize Audio bg thread joins 2017-04-24 18:10:50 -04:00
Zach Pomerantz
b6d111369f Merge pull request #9935 from zzmp/fix/audio-initialization
Fix data race in audio output initialization
2017-03-21 00:23:28 -04:00
Zach Pomerantz
20ea13e00a Merge pull request #9897 from zzmp/record/noise-gate
Add AudioNoiseGate to recordings played through Interface
2017-03-21 00:21:20 -04:00
Zach Pomerantz
a68146e7d9 mv audio output init to output thread 2017-03-17 15:31:00 -04:00
Ken Cooke
652c80057e Merge pull request #9924 from zzmp/fix/noise-delay
Use single frame buffer for local audio injectors
2017-03-17 11:24:02 -07:00
Zach Pomerantz
db956f4cc3 use single frame buffer for local audio 2017-03-16 18:06:18 -04:00
Zach Pomerantz
789bb7c855 rename audio(Mic)OutboundPPS 2017-03-15 13:30:39 -04:00
Zach Pomerantz
2d0e11e2d1 add AudioNoiseGate to recording 2017-03-15 13:30:39 -04:00
Zach Pomerantz
b1e5e43faa mv AudioNoiseGate to audio 2017-03-15 00:15:33 +00:00
Zach Pomerantz
0abcda86a8 mv AudioNoiseGate to audio 2017-03-15 00:14:55 +00:00
ZappoMan
956fdd0933 CR feedback 2017-03-13 12:06:38 -07:00
ZappoMan
099ee1db7f CR feedback 2017-03-13 12:05:42 -07:00
ZappoMan
3e020ede78 CR feedback 2017-03-13 11:58:43 -07:00
Brad Hefta-Gaub
a38965d628 add more audio stats 2017-03-11 09:50:30 -08:00
Brad Hefta-Gaub
eaea718de1 add various scriping interfaces for managing the audio scope and detecting noise gate transitions 2017-03-10 17:08:19 -08:00
Brad Hefta-Gaub
69fdea3621 fix typo in comment 2017-03-10 11:44:53 -08:00
Brad Hefta-Gaub
a4eac3cbc0 Merge branch 'master' of https://github.com/highfidelity/hifi into fadeInWhenOpeningNoiseGate
Conflicts:
	libraries/audio-client/src/AudioNoiseGate.cpp
2017-03-10 11:43:30 -08:00
Brad Hefta-Gaub
2d595c1f87 CR feedback 2017-03-08 20:29:32 -08:00
Brad Hefta-Gaub
7acfcf6750 fade in and out when opening/closing the noise gate 2017-03-08 18:15:32 -08:00
Brad Hefta-Gaub
60daaba525 small cleanup 2017-03-08 17:30:44 -08:00
Brad Hefta-Gaub
1bdad89cbe properly handle silent packet transitions 2017-03-08 17:27:46 -08:00
Chris Collins
de84e07281 Merge pull request #9714 from thoys/fix-recorder-js-playback
Fix recorder.js playback in interface
2017-02-23 09:59:37 -08:00
Thijs Wenker
5033e7be11 CR fixes 2017-02-23 18:22:36 +01:00
Thijs Wenker
72eb797910 remove unused encoder (was for testing) 2017-02-21 20:22:29 +01:00
Thijs Wenker
13b2b6086f Fix recorder.js playback in interface 2017-02-21 19:47:26 +01:00
Anthony J. Thibault
856a38af0c Fix for audio, toolbar and tablet on macos. 2017-02-17 17:08:23 -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
72f8fa49f9 inline audio convertToFloat 2017-01-20 18:38:21 -05:00
Zach Pomerantz
df051ff8df maintain network audio in int16_t 2017-01-20 18:37:46 -05:00
Zach Pomerantz
685483b924 do not omit local audio when echoing server audio 2017-01-20 17:52:03 -05:00
Zach Pomerantz
bb247fe8a3 rename AudioMixRingBuffer 2017-01-20 14:48:54 -05:00
Zach Pomerantz
280ed04f74 fix unused warning for channel up/downmix 2017-01-20 14:43:41 -05:00
Zach Pomerantz
5927c089ac use AudioRingMixBuffer as LocalInjectorsStream 2017-01-20 12:29:44 -05:00
Zach Pomerantz
4f7f3c2a60 mv localInjectorsBuffer to float-based localInjectorsStream
The localInjectorsBuffer is based on
AudioRingBuffer, which only accounts for int16_t.
Local injectors are mixed, and so they can exceed
std::numeric_limits<int16_t> before limiting.
This will allow them to remain as float until
limiting (in the device callback) - once the new
stream is implemented.
2017-01-20 12:29:44 -05:00
Zach Pomerantz
c5415f9624 clean audio client logs 2017-01-20 12:29:44 -05:00
Zach Pomerantz
7261b5285e omit all injector samples on server echo 2017-01-20 12:29:44 -05:00
Zach Pomerantz
492795f7e5 audio client cosmetics 2017-01-20 12:29:44 -05:00
Zach Pomerantz
4c7c7ee3cc mv audio injector preparation to own thread 2017-01-20 12:29:44 -05:00
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
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