Add a silent audio sink to consume WebAudio data on silence detection.

The current android implementation of WebAudio is not power friendly.
It holds the AudioMix wakelock, and causes a lot of battery consumption even if tab is backgrounded.
When an AudioContext is created, WebAudio will start enqueueing data to the output device.
This happens even when no data is decoded or no audio buffer is appended.
This CL adds a SilentAudioSink to consume data when consecutive empty audio buffers are received.
In the idle mode, the player will no longer enqueue data to the output device.
It regularly check the received data and exits the idle mode if non-empty data are encountered.
The intervals to check the data is calculated by the consumption time of the last received buffer.

BUG=470153

Review URL: https://codereview.chromium.org/1195633003

Cr-Commit-Position: refs/heads/master@{#335799}
5 files changed