Commit graph

118 commits

Author SHA1 Message Date
Clement
5102702910 Warn mixer about stopped injectors 2019-04-04 18:55:35 -07:00
SamGondelman
300dd39abf fix script engine shutdown 2019-03-13 12:23:31 -07:00
Sam Gondelman
f013b9af2b
fix warnings 2019-03-13 00:24:19 -07:00
SamGondelman
609c4ab52e try to fix audio injector threading issues 2019-03-12 18:41:43 -07:00
Ken Cooke
fa08e42da6 Restore legacy attenuation behavior for system sounds and scripts that do not set position.
JS detects when "position" was not set by the script.
C++ explicitly sets .positionSet=false when not set (for system sounds).
Local rendering uses a direct mix (no attenuation/HRTF) when not set.
2019-01-29 11:21:02 -08:00
Atlante45
31033ad685 Update TTS audio API use 2018-11-14 15:42:39 -08:00
Clement
7192aed131 Rework audio data memory ownership model 2018-11-14 14:45:18 -08:00
Atlante45
70a5916ef3 Fix debug builds startup crash 2017-07-19 16:18:01 -07:00
Seth Alves
084a989a7a stopAndDeleteLater is now just stop 2017-07-11 21:21:42 -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
59c586bc5d remove unused code 2017-07-11 16:58:19 -07:00
Seth Alves
3670a04d8e switch bare pointers to AudioInjector objects to be QSharedPointers 2017-07-11 14:24:58 -07:00
Zach Pomerantz
48af83a960 guard against audio injector and local buffer datarace 2017-05-05 17:05:40 -04:00
Ken Cooke
69863dd735 Fix the crash in Debug builds, caused by undeclared metatype for AudioInjector* 2017-03-30 08:52:04 -07: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
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
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
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
9e2ec27b29 always play audio injectors locally 2016-09-21 17:20:51 -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
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
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
c84ef5f626 Stereo injectors now handled same as mono
Except of course no HRTF.
2016-07-11 11:31:47 -07:00
David Kelly
46dc5bea04 cleanup from PR comments 2016-07-11 09:31:05 -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
Atlante45
96ee33e80e Fix avatars collision sounds 2016-05-05 14:55:28 -07:00
Atlante45
6d1b7f1d37 Wrap sound script object to hold a strong ref 2016-04-06 13:04:18 -07:00
Stephen Birarda
311f1ac0e3 fix for overflow on time of next frame 2016-01-28 15:38:33 -08:00
Ryan Huffman
a3b2dd2295 Add proper loop handling in injector 2016-01-27 10:14:05 -08:00
Ryan Huffman
641a6e9c30 Fix injector handling for when it falls behind 2016-01-26 09:29:02 -08:00
Stephen Birarda
2aa56b5384 include memory header for unique_ptr 2015-11-17 17:26:45 -08:00
Stephen Birarda
35dd5fb564 include NLPacket in AudioInjector for unique_ptr 2015-11-17 17:26:07 -08:00
Stephen Birarda
cf2ad9a877 remove atomic include from AudioInjector 2015-11-17 17:07:29 -08:00
Stephen Birarda
62b218632d don't use unneeded atomic for AudioInjector State 2015-11-17 17:06:21 -08:00
Stephen Birarda
ab5c8e072f handle blocked AudioInjectorManager for restart 2015-11-17 16:31:18 -08:00
Stephen Birarda
d764ff2e87 remove static variables in AudioInjector.cpp 2015-11-17 15:12:04 -08:00
Stephen Birarda
7da6ec46c4 more handling of various AudioInjector states 2015-11-17 14:20:59 -08:00
Stephen Birarda
80115d38e9 tweak the AudioInjectorManager for injector threading 2015-11-16 18:53:09 -08:00
Stephen Birarda
aa77c4894c add an AudioInjectorManager for more efficient threading 2015-11-16 16:04:10 -08:00
Howard Stearns
d003ec9c58 Delete collision sounds (and their threads) after use.
This has been broken ever since I added avatar collision sounds around https://github.com/highfidelity/hifi/pull/5159 or so.
2015-08-31 15:49:17 -07:00
Stephen Birarda
e93b360908 expose options property to AI script interface 2015-08-20 12:12:43 -07:00
Howard Stearns
2d277a2abd Fix https://app.asana.com/0/30233891560551/41734486809354/f 2015-07-17 11:28:25 -07:00
Howard Stearns
dc10e15e96 Put the common stuff on AudioInjector rather than AudioClient, so that assignment-client (which depends on script-engine) does not need to depend on audio-client. 2015-06-19 14:20:00 -07:00
Howard Stearns
564b0b48ef Alternate version that uses signal rather than polling. 2015-06-08 14:29:43 -07:00
Stephen Birarda
8ede9fb39b fix stereo to stereo resampling 2015-03-10 15:50:30 -07:00
Stephen Birarda
43e777163e use a QPointer to trigger delayed delete 2015-02-11 19:15:33 -08:00