1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/*
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  this work for additional information regarding copyright ownership.
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  the License.  You may obtain a copy of the License at
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  See the License for the specific language governing permissions and
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *  limitations under the License.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage javax.sound.sampled;
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Collections;
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.HashMap;
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.util.Map;
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class AudioFormat {
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static class Encoding {
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public static final Encoding ALAW = new Encoding("ALAW"); //$NON-NLS-1$
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public static final Encoding PCM_SIGNED = new Encoding("PCM_SIGNED"); //$NON-NLS-1$
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public static final Encoding PCM_UNSIGNED = new Encoding("PCM_UNSIGNED"); //$NON-NLS-1$
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public static final Encoding ULAW = new Encoding("ULAW"); //$NON-NLS-1$
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        private String name;
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public Encoding(String name) {
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            this.name = name;
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @Override
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public boolean equals(Object another) {
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (this == another) {
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                return true;
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            if (another == null || !(another instanceof Encoding)) {
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                return false;
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            }
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Encoding obj = (Encoding) another;
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return name == null ? obj.name == null : name.equals(obj.name);
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @Override
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public final int hashCode() {
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return name == null ? 0 : name.hashCode();
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        @Override
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        public final String toString() {
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return name;
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected boolean bigEndian;
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected int channels;
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected Encoding encoding;
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected float frameRate;
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected int frameSize;
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected float sampleRate;
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    protected int sampleSizeInBits;
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private HashMap<String, Object> prop;
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public AudioFormat(AudioFormat.Encoding encoding,
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            float sampleRate,
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int sampleSizeInBits,
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int channels,
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int frameSize,
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            float frameRate,
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean bigEndian) {
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.encoding = encoding;
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.sampleRate = sampleRate;
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.sampleSizeInBits = sampleSizeInBits;
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.channels = channels;
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameSize = frameSize;
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameRate = frameRate;
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.bigEndian = bigEndian;
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public AudioFormat(AudioFormat.Encoding encoding,
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            float sampleRate,
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int sampleSizeInBits,
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int channels,
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int frameSize,
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            float frameRate,
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean bigEndian,
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            Map<String,Object> properties) {
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.encoding = encoding;
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.sampleRate = sampleRate;
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.sampleSizeInBits = sampleSizeInBits;
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.channels = channels;
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameSize = frameSize;
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameRate = frameRate;
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.bigEndian = bigEndian;
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        prop = new HashMap<String, Object>();
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        prop.putAll(properties);
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public AudioFormat(float sampleRate,
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int sampleSizeInBits,
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            int channels,
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean signed,
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            boolean bigEndian) {
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.encoding = (signed?  Encoding.PCM_SIGNED : Encoding.PCM_UNSIGNED);
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.sampleRate = sampleRate;
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.sampleSizeInBits = sampleSizeInBits;
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.channels = channels;
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameSize = sampleSizeInBits >> 3;
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if ((sampleSizeInBits & 0x7) != 0) {
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            this.frameSize++;
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameSize *= channels;
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.frameRate = sampleRate;
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.bigEndian = bigEndian;
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Encoding getEncoding() {
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return encoding;
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public float getSampleRate() {
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return sampleRate;
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public int getSampleSizeInBits() {
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return sampleSizeInBits;
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public int getChannels() {
154f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return channels;
155f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
156f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
157f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public int getFrameSize() {
158f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return frameSize;
159f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
160f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
161f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public float getFrameRate() {
162f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return frameRate;
163f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
164f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
165f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public boolean isBigEndian() {
166f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return bigEndian;
167f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
168f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
169f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Map<String,Object> properties() {
170f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (prop != null) {
171f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return Collections.unmodifiableMap(prop);
172f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        } else {
173f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return Collections.emptyMap();
174f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
175f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
176f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
177f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Object getProperty(String key) {
178f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (prop == null) {
179f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return null;
180f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
181f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return prop.get(key);
182f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
183f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
184f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public boolean matches(AudioFormat format) {
185f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (!encoding.equals(format.getEncoding()) ||
186f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                channels != format.getChannels() ||
187f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                sampleSizeInBits != format.getSampleSizeInBits() ||
188f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                frameSize != format.getFrameSize()) {
189f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return false;
190f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
191f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (format.getSampleRate() != AudioSystem.NOT_SPECIFIED &&
192f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                sampleRate != format.getSampleRate()) {
193f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return false;
194f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
195f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
196f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (format.getFrameRate() != AudioSystem.NOT_SPECIFIED &&
197f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                frameRate != format.getFrameRate()) {
198f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return false;
199f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
200f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
201f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if ((sampleSizeInBits > 8)
202f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project                && (bigEndian != format.isBigEndian())) {
203f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return false;
204f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
205f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return true;
206f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
207f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
208f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
209f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public String toString() {
210f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
211f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        String ch;
212f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        switch (channels) {
213f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        case 1:
214f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            ch = "mono,"; //$NON-NLS-1$
215f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            break;
216f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        case 2:
217f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            ch = "stereo,"; //$NON-NLS-1$
218f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        default:
219f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            ch = channels + " channels, "; //$NON-NLS-1$
220f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
221f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
222f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return encoding + " " + sampleRate + " Hz, " + sampleSizeInBits + " bit, " //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
223f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            + ch + frameSize + " bytes/frame, " + frameRate + " frames/second"; //$NON-NLS-1$ //$NON-NLS-2$
224f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
225f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
226f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
227