aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSachiyo Sugimoto <sachiyo@google.com>2019-08-24 00:05:44 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2019-08-24 00:05:44 +0000
commit1a6d21d0e81efe7bd5af5d746ef7979d94eb0c29 (patch)
tree503f4edf215b08b9bb58b5d83cb29061790f4f06
parenta34d637b1d0264d83216a8ebde6916c93216a8da (diff)
parent85ed8e48a665908ca6698372f7ce5cbec63ccf40 (diff)
downloadplatform_compatibility_cdd-1a6d21d0e81efe7bd5af5d746ef7979d94eb0c29.tar.gz
platform_compatibility_cdd-1a6d21d0e81efe7bd5af5d746ef7979d94eb0c29.tar.bz2
platform_compatibility_cdd-1a6d21d0e81efe7bd5af5d746ef7979d94eb0c29.zip
Merge "CDD: Add requirements for audio signal integrity" into qt-dev
-rw-r--r--5_multimedia/5_10_professional-audio.md3
-rw-r--r--5_multimedia/5_6_audio-latency.md4
-rw-r--r--7_hardware-compatibility/7_8_audio.md132
3 files changed, 135 insertions, 4 deletions
diff --git a/5_multimedia/5_10_professional-audio.md b/5_multimedia/5_10_professional-audio.md
index e9f0f0b0..eaf0537b 100644
--- a/5_multimedia/5_10_professional-audio.md
+++ b/5_multimedia/5_10_professional-audio.md
@@ -45,8 +45,7 @@ when both are active.
* SHOULD document audio latency measurements over all paths.
* SHOULD minimize jitter in audio buffer completion callback entry times, as this
affects usable percentage of full CPU bandwidth by the callback.
-* SHOULD provide zero audio underruns (output) or overruns (input) under normal use
-at reported latency.
+* SHOULD provide zero audio glitches under normal use at reported latency.
* SHOULD provide zero inter-channel latency difference.
* SHOULD minimize MIDI mean latency over all transports.
* SHOULD minimize MIDI latency variability under load (jitter) over all transports.
diff --git a/5_multimedia/5_6_audio-latency.md b/5_multimedia/5_6_audio-latency.md
index 8f04f1fb..bc14b838 100644
--- a/5_multimedia/5_6_audio-latency.md
+++ b/5_multimedia/5_6_audio-latency.md
@@ -42,6 +42,10 @@ within [Android NDK](https://developer.android.com/ndk/index.html).
stream and the estimated time when that frame enters or leaves the
audio processing pipeline on the associated endpoint. See also
[AudioTimestamp](https://developer.android.com/reference/android/media/AudioTimestamp).
+* **glitch**. A temporary interruption or incorrect sample value in the audio signal,
+typically caused by a
+[buffer underrun](https://en.wikipedia.org/wiki/Buffer_underrun) for output,
+buffer overrun for input, or any other source of digital or analog noise.
If device implementations declare `android.hardware.audio.output`, they
MUST meet or exceed the following requirements:
diff --git a/7_hardware-compatibility/7_8_audio.md b/7_hardware-compatibility/7_8_audio.md
index b1ec1188..689963eb 100644
--- a/7_hardware-compatibility/7_8_audio.md
+++ b/7_hardware-compatibility/7_8_audio.md
@@ -114,5 +114,133 @@ If [`PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND`](
http://developer.android.com/reference/android/media/AudioManager.html#PROPERTY_SUPPORT_SPEAKER_NEAR_ULTRASOUND)
is "true":
-* [C-2-1] The speaker's mean response in 18.5 kHz - 20 kHz MUST be no lower
-than 40 dB below the response at 2 kHz.
+* [C-2-1] The speaker's mean response in 18.5 kHz - 20 kHz MUST be no lower than 40 dB below the response at 2 kHz.
+
+### 7.8.4\. Signal Integrity
+
+Device implementations:
+* SHOULD provide a glitch-free audio signal path for both input
+ and output streams on handheld devices, as defined by zero glitches
+ measured during a test of one minute per path.
+ Test using [OboeTester]
+ (https://github.com/google/oboe/tree/master/apps/OboeTester)
+ “Automated Glitch Test”.
+
+The test requires an [audio loopback dongle]
+(https://source.android.com/devices/audio/latency/loopback),
+used directly in a 3.5mm jack, and/or in combination with a USB-C to 3.5mm adapter.
+All audio output ports SHOULD be tested.
+
+OboeTester currently supports AAudio paths, so the
+following combinations SHOULD be tested for glitches using AAudio:
+
+<table>
+ <tr>
+ <th>Perf Mode
+ <th>Sharing
+ <th>Out Sample Rate
+ <th>In Chans
+ <th>Out Chans
+ </tr>
+ <tr>
+ <td>LOW_LATENCY</td>
+ <td>EXCLUSIVE</td>
+ <td>UNSPECIFIED</td>
+ <td>1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>LOW_LATENCY</td>
+ <td>EXCLUSIVE</td>
+ <td>UNSPECIFIED</td>
+ <td>2</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>LOW_LATENCY</td>
+ <td>SHARED</td>
+ <td>UNSPECIFIED</td>
+ <td>1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>LOW_LATENCY</td>
+ <td>SHARED</td>
+ <td>UNSPECIFIED</td>
+ <td>2</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>NONE</td>
+ <td>SHARED</td>
+ <td>48000</td>
+ <td>1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>NONE</td>
+ <td>SHARED</td>
+ <td>48000</td>
+ <td>2</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>NONE</td>
+ <td>SHARED</td>
+ <td>44100</td>
+ <td>1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>NONE</td>
+ <td>SHARED</td>
+ <td>44100</td>
+ <td>2</td>
+ <td>1</td>
+ </tr>
+ <tr>
+ <td>NONE</td>
+ <td>SHARED</td>
+ <td>16000</td>
+ <td>1</td>
+ <td>2</td>
+ </tr>
+ <tr>
+ <td>NONE</td>
+ <td>SHARED</td>
+ <td>16000</td>
+ <td>2</td>
+ <td>1</td>
+ </tr>
+</table>
+
+A reliable stream SHOULD meet the following criteria for Signal to Noise
+Ratio (SNR) and Total Harmonic Distortion (THD) for 2000 Hz sine.
+
+<table>
+ <tr>
+ <th>Transducer</th>
+ <th>THD</th>
+ <th>SNR</th>
+ </tr>
+ <tr>
+ <td>primary built-in speaker, measured using an external reference microphone</td>
+ <td>&lt; 3.0%</td>
+ <td>&gt;= 50 dB</td>
+ </tr>
+ <tr>
+ <td>primary built-in microphone, measured using an external reference speaker</td>
+ <td>&lt; 3.0%</td>
+ <td>&gt;= 50 dB</td>
+ </tr>
+ <tr>
+ <td>built-in analog 3.5 mm jacks, tested using loopback adapter</td>
+ <td>&lt; 1%</td>
+ <td>&gt;= 60 dB</td>
+ </tr>
+ <tr>
+ <td>USB adapters supplied with the phone, tested using loopback adapter</td>
+ <td>&lt; 1.0%</td>
+ <td>&gt;= 60 dB</td>
+ </tr>
+</table>