Increase sample rate checking range for AudioTracks
Associated with sampling rate ratio changes.
Can modify testPlayStreamData to force playback of different sample rates.
Change-Id: Ibda8b3607e651e9a77345a899f8c4092cbb90a55
diff --git a/tests/tests/media/src/android/media/cts/AudioTrackTest.java b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
index 783233d..026647a 100644
--- a/tests/tests/media/src/android/media/cts/AudioTrackTest.java
+++ b/tests/tests/media/src/android/media/cts/AudioTrackTest.java
@@ -1320,7 +1320,7 @@
final double rad = 2 * Math.PI * frequency / sampleRate;
short[] vai = new short[bufferSamples];
for (int j = 0; j < vai.length; j++) {
- vai[j] = (short) (Math.sin(j * rad) * Short.MAX_VALUE);
+ vai[j] = (short)(Math.sin(j * rad) * Short.MAX_VALUE);
}
return vai;
}
@@ -1329,8 +1329,8 @@
final double frequency) {
final double rad = 2 * Math.PI * frequency / sampleRate;
float[] vaf = new float[bufferSamples];
- for (int j = 0; j < bufferSamples; j++) {
- vaf[j] = (float) (Math.sin(j * rad));
+ for (int j = 0; j < vaf.length; j++) {
+ vaf[j] = (float)(Math.sin(j * rad));
}
return vaf;
}
@@ -1338,12 +1338,13 @@
public void testPlayStreamData() throws Exception {
// constants for test
final String TEST_NAME = "testPlayStreamData";
- final int TEST_FORMAT_ARRAY[] = { // should hear 6 tones played 3 times
+ final int TEST_FORMAT_ARRAY[] = { // should hear 8 increasing frequency tones, 3 times
AudioFormat.ENCODING_PCM_8BIT,
AudioFormat.ENCODING_PCM_16BIT,
AudioFormat.ENCODING_PCM_FLOAT,
};
final int TEST_SR_ARRAY[] = {
+ 4000,
22050,
44100,
48000,
@@ -1356,14 +1357,16 @@
final int TEST_STREAM_TYPE = AudioManager.STREAM_MUSIC;
for (int TEST_FORMAT : TEST_FORMAT_ARRAY) {
- double frequency = 800; // frequency changes for each test
+ double frequency = 400; // frequency changes for each test
for (int TEST_SR : TEST_SR_ARRAY) {
for (int TEST_CONF : TEST_CONF_ARRAY) {
// -------- initialization --------------
- int minBufferSize = AudioTrack.getMinBufferSize(TEST_SR,
+ final int minBufferSize = AudioTrack.getMinBufferSize(TEST_SR,
TEST_CONF, TEST_FORMAT); // in bytes
- int bufferSamples = 12 * minBufferSize
+ final int bufferSamples = 12 * minBufferSize
/ AudioFormat.getBytesPerSample(TEST_FORMAT);
+ final int channelCount = Integer.bitCount(TEST_CONF);
+ final double testFrequency = frequency / channelCount;
AudioTrack track = new AudioTrack(TEST_STREAM_TYPE, TEST_SR,
TEST_CONF, TEST_FORMAT, minBufferSize, TEST_MODE);
assertTrue(TEST_NAME, track.getState() == AudioTrack.STATE_INITIALIZED);
@@ -1375,7 +1378,7 @@
case AudioFormat.ENCODING_PCM_8BIT: {
byte data[] = createSoundDataInByteArray(
bufferSamples, TEST_SR,
- frequency);
+ testFrequency);
while (written < data.length) {
int ret = track.write(data, written,
Math.min(data.length - written, minBufferSize));
@@ -1390,7 +1393,7 @@
case AudioFormat.ENCODING_PCM_16BIT: {
short data[] = createSoundDataInShortArray(
bufferSamples, TEST_SR,
- frequency);
+ testFrequency);
while (written < data.length) {
int ret = track.write(data, written,
Math.min(data.length - written, minBufferSize));
@@ -1405,7 +1408,7 @@
case AudioFormat.ENCODING_PCM_FLOAT: {
float data[] = createSoundDataInFloatArray(
bufferSamples, TEST_SR,
- frequency);
+ testFrequency);
while (written < data.length) {
int ret = track.write(data, written,
Math.min(data.length - written, minBufferSize),
@@ -1425,7 +1428,7 @@
Thread.sleep(WAIT_MSEC);
// -------- tear down --------------
track.release();
- frequency += 200; // increment test tone frequency
+ frequency += 100; // increment test tone frequency
}
}
}