Mixing audio with different latency requirements.
Follow-up is introducing mixing for audio other than media elements (under finch).
** Helper changes:
1) AudioDeviceFactory: Added separate categories for WebAudio source basing on expected output latency. Not used by WebAudio right now, but they give a sense of what to expect in the nearest future regarding output latency requirements. (May be dropped for now).
2) AudioLatency class is introduced; latency-based output buffer size calculation is moved into it.
** Mixing changes:
3) AudioRendererMixerPool/AudioRendererMixerManager:
* latency requirement is introduced as one more ARMInput parameter; now it’s a part of ARM key. The mixing strategy (see ARM key comparison) is that only inputs with the same latency requirements can be mixed together; LATENCY_EXACT_MS inputs are mixed only with the likewise and only if they have the same buffer duration.
* ARMM adjusts mixer output buffer siza based on input latency and output sample rate.
BUG=560378,564472
Review-Url: https://codereview.chromium.org/2067863003
Cr-Commit-Position: refs/heads/master@{#403120}
26 files changed