1/* 2 * Copyright (C) 2015 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17#ifndef ANDROID_CHANNELS_H_ 18#define ANDROID_CHANNELS_H_ 19 20#include <system/audio.h> 21#include <SLES/OpenSLES.h> 22 23#define SL_ANDROID_SPEAKER_COUNT_MAX FCC_8 24#define SL_ANDROID_INDEXED_SPEAKER_MASK_ALL ((SLuint32) \ 25 ((1 << SL_ANDROID_SPEAKER_COUNT_MAX) - 1)) 26#define SL_ANDROID_POSITIONAL_SPEAKER_MASK_ALL \ 27 ( SL_SPEAKER_FRONT_LEFT \ 28 | SL_SPEAKER_FRONT_RIGHT \ 29 | SL_SPEAKER_FRONT_CENTER \ 30 | SL_SPEAKER_LOW_FREQUENCY \ 31 | SL_SPEAKER_BACK_LEFT \ 32 | SL_SPEAKER_BACK_RIGHT \ 33 | SL_SPEAKER_FRONT_LEFT_OF_CENTER \ 34 | SL_SPEAKER_FRONT_RIGHT_OF_CENTER \ 35 | SL_SPEAKER_BACK_CENTER \ 36 | SL_SPEAKER_SIDE_LEFT \ 37 | SL_SPEAKER_SIDE_RIGHT \ 38 | SL_SPEAKER_TOP_CENTER \ 39 | SL_SPEAKER_TOP_FRONT_LEFT \ 40 | SL_SPEAKER_TOP_FRONT_CENTER \ 41 | SL_SPEAKER_TOP_FRONT_RIGHT \ 42 | SL_SPEAKER_TOP_BACK_LEFT \ 43 | SL_SPEAKER_TOP_BACK_CENTER \ 44 | SL_SPEAKER_TOP_BACK_RIGHT ) 45 46// Channel count and channel mask definitions 47 48#define SL_ANDROID_SPEAKER_QUAD (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT \ 49 | SL_SPEAKER_BACK_LEFT | SL_SPEAKER_BACK_RIGHT) 50 51#define SL_ANDROID_SPEAKER_5DOT1 (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT \ 52 | SL_SPEAKER_FRONT_CENTER | SL_SPEAKER_LOW_FREQUENCY| SL_SPEAKER_BACK_LEFT \ 53 | SL_SPEAKER_BACK_RIGHT) 54 55#define SL_ANDROID_SPEAKER_7DOT1 (SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_SIDE_LEFT \ 56 | SL_SPEAKER_SIDE_RIGHT) 57 58extern SLuint32 sles_channel_out_mask_from_count(unsigned channelCount); 59extern SLuint32 sles_channel_in_mask_from_count(unsigned channelCount); 60extern SLuint32 sles_channel_count_from_mask(SLuint32 mask); 61extern SLboolean sles_is_channel_mask_valid(SLuint32 mask); 62 63extern audio_channel_representation_t sles_to_audio_channel_mask_representation(SLuint32 mask); 64extern audio_channel_mask_t sles_to_audio_output_channel_mask(SLuint32 mask); 65extern audio_channel_mask_t sles_to_audio_input_channel_mask(SLuint32 mask); 66 67#define SL_ANDROID_UNKNOWN_CHANNELMASK 0 68 69#endif // ANDROID_CHANNELS_H_ 70