AudioFormat.java revision d9ae1c573e37e245c7f4f0480a8fa925e57bd49d
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.media; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The AudioFormat class is used to access a number of audio format and 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * channel configuration constants. They are for instance used 225b86de94a163ce4c52ab08a9820f9d78414e1767Scott Main * in {@link AudioTrack} and {@link AudioRecord}. 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class AudioFormat { 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //--------------------------------------------------------- 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // Constants 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project //-------------------- 309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Invalid audio data format */ 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ENCODING_INVALID = 0; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Default audio data format */ 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ENCODING_DEFAULT = 1; 34635fefec06458224750170e7ce127bc2c8e4215bDan Tasse /** Audio data format: PCM 16 bit per sample. Guaranteed to be supported by devices. */ 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ENCODING_PCM_16BIT = 2; // accessed by native code 36635fefec06458224750170e7ce127bc2c8e4215bDan Tasse /** Audio data format: PCM 8 bit per sample. Not guaranteed to be supported by devices. */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int ENCODING_PCM_8BIT = 3; // accessed by native code 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Invalid audio channel configuration */ 40a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_INVALID instead */ 41a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Default audio channel configuration */ 43a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_OUT_DEFAULT or CHANNEL_IN_DEFAULT instead */ 44a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_DEFAULT = 1; 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Mono audio configuration */ 46a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_OUT_MONO or CHANNEL_IN_MONO instead */ 47a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_MONO = 2; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Stereo (2 channel) audio configuration */ 49a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_OUT_STEREO or CHANNEL_IN_STEREO instead */ 50a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_STEREO = 3; 519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 52a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** Invalid audio channel mask */ 533026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_INVALID = 0; 54a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** Default audio channel mask */ 553026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_DEFAULT = 1; 563026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent 57d9ae1c573e37e245c7f4f0480a8fa925e57bd49dJean-Michel Trivi // Channel mask definitions below are translated to the native values defined in 58d9ae1c573e37e245c7f4f0480a8fa925e57bd49dJean-Michel Trivi // in /system/core/include/system/audio.h in the JNI code of AudioTrack 593026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_LEFT = 0x4; 603026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_RIGHT = 0x8; 613026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_CENTER = 0x10; 623026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_LOW_FREQUENCY = 0x20; 633026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_BACK_LEFT = 0x40; 643026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_BACK_RIGHT = 0x80; 653026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x100; 663026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x200; 673026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_BACK_CENTER = 0x400; 68ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 69ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_SIDE_LEFT = 0x800; 70ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 71ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_SIDE_RIGHT = 0x1000; 72ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 73ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_CENTER = 0x2000; 74ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 75ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_FRONT_LEFT = 0x4000; 76ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 77ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_FRONT_CENTER = 0x8000; 78ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 79ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_FRONT_RIGHT = 0x10000; 80ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 81ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_BACK_LEFT = 0x20000; 82ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 83ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_BACK_CENTER = 0x40000; 84ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 85ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_BACK_RIGHT = 0x80000; 86ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi 87a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_MONO = CHANNEL_OUT_FRONT_LEFT; 88a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_STEREO = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT); 89a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_QUAD = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 90a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT); 91a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_SURROUND = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 92a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_BACK_CENTER); 93a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_5POINT1 = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 94a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_LOW_FREQUENCY | CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT); 95a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_7POINT1 = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 96a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_LOW_FREQUENCY | CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT | 97a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_LEFT_OF_CENTER | CHANNEL_OUT_FRONT_RIGHT_OF_CENTER); 98ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 99ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_7POINT1_SURROUND = ( 100ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_FRONT_RIGHT | 101ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_SIDE_LEFT | CHANNEL_OUT_SIDE_RIGHT | 102ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT | 103ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_LOW_FREQUENCY); 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1053026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_DEFAULT = 1; 1063026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_LEFT = 0x4; 1073026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_RIGHT = 0x8; 1083026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_FRONT = 0x10; 1093026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_BACK = 0x20; 1103026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_LEFT_PROCESSED = 0x40; 1113026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_RIGHT_PROCESSED = 0x80; 1123026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_FRONT_PROCESSED = 0x100; 1133026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_BACK_PROCESSED = 0x200; 1143026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_PRESSURE = 0x400; 1153026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_X_AXIS = 0x800; 1163026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_Y_AXIS = 0x1000; 1173026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_Z_AXIS = 0x2000; 1183026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_VOICE_UPLINK = 0x4000; 1193026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_VOICE_DNLINK = 0x8000; 120a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_IN_MONO = CHANNEL_IN_FRONT; 121a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_IN_STEREO = (CHANNEL_IN_LEFT | CHANNEL_IN_RIGHT); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 123a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent} 124