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; 345c17a820f9e46e0756c11795b3e6f89105f2f539Glenn Kasten // These two values must be kept in sync with JNI code for AudioTrack, AudioRecord 35635fefec06458224750170e7ce127bc2c8e4215bDan Tasse /** Audio data format: PCM 16 bit per sample. Guaranteed to be supported by devices. */ 365c17a820f9e46e0756c11795b3e6f89105f2f539Glenn Kasten public static final int ENCODING_PCM_16BIT = 2; 37635fefec06458224750170e7ce127bc2c8e4215bDan Tasse /** Audio data format: PCM 8 bit per sample. Not guaranteed to be supported by devices. */ 385c17a820f9e46e0756c11795b3e6f89105f2f539Glenn Kasten public static final int ENCODING_PCM_8BIT = 3; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Invalid audio channel configuration */ 41a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_INVALID instead */ 42a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_INVALID = 0; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Default audio channel configuration */ 44a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_OUT_DEFAULT or CHANNEL_IN_DEFAULT instead */ 45a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_DEFAULT = 1; 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Mono audio configuration */ 47a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_OUT_MONO or CHANNEL_IN_MONO instead */ 48a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_MONO = 2; 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** Stereo (2 channel) audio configuration */ 50a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** @deprecated use CHANNEL_OUT_STEREO or CHANNEL_IN_STEREO instead */ 51a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent @Deprecated public static final int CHANNEL_CONFIGURATION_STEREO = 3; 529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 53a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** Invalid audio channel mask */ 543026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_INVALID = 0; 55a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent /** Default audio channel mask */ 563026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_DEFAULT = 1; 573026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent 58d9ae1c573e37e245c7f4f0480a8fa925e57bd49dJean-Michel Trivi // Channel mask definitions below are translated to the native values defined in 59d9ae1c573e37e245c7f4f0480a8fa925e57bd49dJean-Michel Trivi // in /system/core/include/system/audio.h in the JNI code of AudioTrack 603026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_LEFT = 0x4; 613026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_RIGHT = 0x8; 623026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_CENTER = 0x10; 633026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_LOW_FREQUENCY = 0x20; 643026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_BACK_LEFT = 0x40; 653026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_BACK_RIGHT = 0x80; 663026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x100; 673026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x200; 683026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_OUT_BACK_CENTER = 0x400; 69ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 70ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_SIDE_LEFT = 0x800; 71ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 72ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_SIDE_RIGHT = 0x1000; 73ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 74ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_CENTER = 0x2000; 75ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 76ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_FRONT_LEFT = 0x4000; 77ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 78ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_FRONT_CENTER = 0x8000; 79ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 80ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_FRONT_RIGHT = 0x10000; 81ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 82ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_BACK_LEFT = 0x20000; 83ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 84ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_BACK_CENTER = 0x40000; 85ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 86ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_TOP_BACK_RIGHT = 0x80000; 87ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi 88a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_MONO = CHANNEL_OUT_FRONT_LEFT; 89a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_STEREO = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT); 90a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_QUAD = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 91a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT); 92a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_SURROUND = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 93a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_BACK_CENTER); 94a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_5POINT1 = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 95a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_LOW_FREQUENCY | CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT); 96a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_OUT_7POINT1 = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT | 97a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_LOW_FREQUENCY | CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT | 98a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent CHANNEL_OUT_FRONT_LEFT_OF_CENTER | CHANNEL_OUT_FRONT_RIGHT_OF_CENTER); 99ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi /** @hide */ 100ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi public static final int CHANNEL_OUT_7POINT1_SURROUND = ( 101ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_FRONT_RIGHT | 102ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_SIDE_LEFT | CHANNEL_OUT_SIDE_RIGHT | 103ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT | 104ff7656c9de4e6ca0ec13da2b99593be71dcfd796Jean-Michel Trivi CHANNEL_OUT_LOW_FREQUENCY); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1063026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_DEFAULT = 1; 1073026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_LEFT = 0x4; 1083026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_RIGHT = 0x8; 1093026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_FRONT = 0x10; 1103026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_BACK = 0x20; 1113026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_LEFT_PROCESSED = 0x40; 1123026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_RIGHT_PROCESSED = 0x80; 1133026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_FRONT_PROCESSED = 0x100; 1143026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_BACK_PROCESSED = 0x200; 1153026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_PRESSURE = 0x400; 1163026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_X_AXIS = 0x800; 1173026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_Y_AXIS = 0x1000; 1183026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_Z_AXIS = 0x2000; 1193026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_VOICE_UPLINK = 0x4000; 1203026a023b8979b7ddcb3fe97bbc45531c89fda92Eric Laurent public static final int CHANNEL_IN_VOICE_DNLINK = 0x8000; 121a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_IN_MONO = CHANNEL_IN_FRONT; 122a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent public static final int CHANNEL_IN_STEREO = (CHANNEL_IN_LEFT | CHANNEL_IN_RIGHT); 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 124a553c25b33c99b345cf1c8688f8df0ed8df14e5aEric Laurent} 125