This happens when the listener and a PannerNode are at the same position, and
a cone gain has been specified.
The issue is that our implementation of 3d vector normalization does not
special-case vectors that have all components at zero, that dividing by zero
results in infinity, and multiplying by infinity produces NaN.
This end up setting the volume member for the output AudioChunk to NaN, and this
breaks everything downstream, of course. In practice, silence is output, with
some clicks (on linux/pulse at least).
MozReview-Commit-ID: 8u54LixvYMu
--HG--
extra : rebase_source : 3b37970b42e5c60cd6e39d3197b580edc63b5ac9
float(numeric_limits<int>::max()) can round up and so this inequality was
false even when f was (float)0x80000000 (without rounding) and could not be
represented by an int.
--HG--
extra : rebase_source : 758b66fcab9ec540cf444e573f7f3a7bf9c06ba2
Web audio should also notify AudioChannelService about its audible state change.
MozReview-Commit-ID: BtjUkHKPETg
--HG--
extra : rebase_source : 809549258b652cb1e531dedfd6aee869d32aa4e4
Spec (being written): https://github.com/WebAudio/web-audio-api/issues/1139
Bug 1343550 - Prevent touching promises when shutting down an AudioContext, when the global is going away soon. r=baku
MozReview-Commit-ID: F6en9KEbNNf
--HG--
extra : rebase_source : 04076caa38bba980cdff776b5997f33e24516d9e
extra : intermediate-source : 4f2cd3f715a218dc3bca55e89720b6aa1040d35c
extra : source : 69cd9c72bd4ed419e3f7f7b5ab64ee0fa8bd89a2
This also removes the extra logging I added in loadFile which did not end up
helping anything after all.
MozReview-Commit-ID: FZT5ZShhcG0
--HG--
extra : rebase_source : f5eca9ae169c99dabfbb02dd148b66524325d352
It seems like adding these extra "todos" decreases the frequency of this
intermittent. I think it makes sense to land these temporarily while we look
for a root cause.
MozReview-Commit-ID: 4RiXtT3yBzG
--HG--
extra : rebase_source : fc107091d0a34943df3bf3ca579d978b97de877f
Changed |print("enum ID : uint32_t {", file=output)| to |print("enum HistogramID : uint32_t {", file=output)| at line 53 of the file |toolkit/components/telemetry/gen-histogram-enum.py|, and then replaced all the textual occurrences of |Telemetry::ID| to |Telemetry::HistogramID| and |ID| to |HistogramID| in 43 other files.
In websites such as Facebook Live, timeout chains are used to drive the
playback of a video or something similar in JavaScript. Throttling the
minimum timeout values a tab playing a video from such websites in the
background could make the timeout based scheduling of video playback to
not work correctly, and cause audio buffer under-runs that are audible.
In order to address this, other major browsers don't throttle timeouts
in tabs that are playing audio. This brings us to parity to other
browsers (even though we already do this for websites that use Web Audio
since we've had similar bug reports using the Web Audio API.)
The current audio agent setup that drives the tab audio notification
icons is currently tracking whether a Window is playing audio. We use
this setup to decide whether to throttle timeouts when a window goes
into background.
Continuing the work of replacing MIME strings with MediaContainerType, starting
from MediaResource and following the dependencies.
Most changes are mechanical: Just change ns*String into MediaContainerType, and
MIME string literals into MEDIAMIMETYPE("a/b").
Some checks for empty/invalid strings and lowercase comparisons can go, thanks
to the always-valid always-lowercase-MIME invariants of MediaContainerType.
One special case in is MediaSourceResource, which used to have an empty string
as its type (because its own type is not relevant, but its SourceBuffers carry
types). Because the inherited GetContentType *must* be overridden, and must
return a MediaContainerType, we needed a valid type even though it should not
be seen in the real world. I've chosen "application/x.mediasource" for that.
MozReview-Commit-ID: 1aCH75Kh2e6
--HG--
extra : rebase_source : 0d9cd9b69c264e5dcfc3845f80ee107f4bcbcd9a