1*b7c941bbSAndroid Build Coastguard Worker /*
2*b7c941bbSAndroid Build Coastguard Worker * Copyright (C) 2016 The Android Open Source Project
3*b7c941bbSAndroid Build Coastguard Worker *
4*b7c941bbSAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
5*b7c941bbSAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
6*b7c941bbSAndroid Build Coastguard Worker * You may obtain a copy of the License at
7*b7c941bbSAndroid Build Coastguard Worker *
8*b7c941bbSAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0
9*b7c941bbSAndroid Build Coastguard Worker *
10*b7c941bbSAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
11*b7c941bbSAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
12*b7c941bbSAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b7c941bbSAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
14*b7c941bbSAndroid Build Coastguard Worker * limitations under the License.
15*b7c941bbSAndroid Build Coastguard Worker */
16*b7c941bbSAndroid Build Coastguard Worker
17*b7c941bbSAndroid Build Coastguard Worker #include "OpenSLESUtils.h"
18*b7c941bbSAndroid Build Coastguard Worker
19*b7c941bbSAndroid Build Coastguard Worker #include <SLES/OpenSLES.h>
20*b7c941bbSAndroid Build Coastguard Worker #include <SLES/OpenSLES_Android.h>
21*b7c941bbSAndroid Build Coastguard Worker
22*b7c941bbSAndroid Build Coastguard Worker /*
23*b7c941bbSAndroid Build Coastguard Worker * OSLES Helpers
24*b7c941bbSAndroid Build Coastguard Worker */
25*b7c941bbSAndroid Build Coastguard Worker static const char* errStrings[] = {
26*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_SUCCESS", // 0)
27*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_PRECONDITIONS_VIOLATE", // 1
28*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_PARAMETER_INVALID", // 2
29*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_MEMORY_FAILURE", // 3
30*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_RESOURCE_ERROR", // 4
31*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_RESOURCE_LOST", // 5
32*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_IO_ERROR", // 6
33*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_BUFFER_INSUFFICIENT", // 7
34*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_CONTENT_CORRUPTED", // 8
35*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_CONTENT_UNSUPPORTED", // 9
36*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_CONTENT_NOT_FOUND", // 10
37*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_PERMISSION_DENIED", // 11
38*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_FEATURE_UNSUPPORTED", // 12
39*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_INTERNAL_ERROR", // 13
40*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_UNKNOWN_ERROR", // 14
41*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_OPERATION_ABORTED", // 15
42*b7c941bbSAndroid Build Coastguard Worker "SL_RESULT_CONTROL_LOST" // 16
43*b7c941bbSAndroid Build Coastguard Worker };
44*b7c941bbSAndroid Build Coastguard Worker
getSLErrStr(int code)45*b7c941bbSAndroid Build Coastguard Worker const char * getSLErrStr(int code) {
46*b7c941bbSAndroid Build Coastguard Worker return errStrings[code];
47*b7c941bbSAndroid Build Coastguard Worker }
48*b7c941bbSAndroid Build Coastguard Worker
49*b7c941bbSAndroid Build Coastguard Worker // These will wind up in <SLES/OpenSLES_Android.h>
50*b7c941bbSAndroid Build Coastguard Worker #define SL_ANDROID_SPEAKER_QUAD (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT \
51*b7c941bbSAndroid Build Coastguard Worker | SL_SPEAKER_BACK_LEFT | SL_SPEAKER_BACK_RIGHT)
52*b7c941bbSAndroid Build Coastguard Worker
53*b7c941bbSAndroid Build Coastguard Worker #define SL_ANDROID_SPEAKER_5DOT1 (SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT \
54*b7c941bbSAndroid Build Coastguard Worker | SL_SPEAKER_FRONT_CENTER | SL_SPEAKER_LOW_FREQUENCY| SL_SPEAKER_BACK_LEFT \
55*b7c941bbSAndroid Build Coastguard Worker | SL_SPEAKER_BACK_RIGHT)
56*b7c941bbSAndroid Build Coastguard Worker
57*b7c941bbSAndroid Build Coastguard Worker #define SL_ANDROID_SPEAKER_7DOT1 (SL_ANDROID_SPEAKER_5DOT1 | SL_SPEAKER_SIDE_LEFT \
58*b7c941bbSAndroid Build Coastguard Worker |SL_SPEAKER_SIDE_RIGHT)
59*b7c941bbSAndroid Build Coastguard Worker
chanCountToChanMask(int chanCount)60*b7c941bbSAndroid Build Coastguard Worker int chanCountToChanMask(int chanCount) {
61*b7c941bbSAndroid Build Coastguard Worker int channelMask = 0;
62*b7c941bbSAndroid Build Coastguard Worker
63*b7c941bbSAndroid Build Coastguard Worker switch (chanCount) {
64*b7c941bbSAndroid Build Coastguard Worker case 1:
65*b7c941bbSAndroid Build Coastguard Worker channelMask = SL_SPEAKER_FRONT_CENTER;
66*b7c941bbSAndroid Build Coastguard Worker break;
67*b7c941bbSAndroid Build Coastguard Worker
68*b7c941bbSAndroid Build Coastguard Worker case 2:
69*b7c941bbSAndroid Build Coastguard Worker channelMask = SL_SPEAKER_FRONT_LEFT | SL_SPEAKER_FRONT_RIGHT;
70*b7c941bbSAndroid Build Coastguard Worker break;
71*b7c941bbSAndroid Build Coastguard Worker
72*b7c941bbSAndroid Build Coastguard Worker case 4: // Quad
73*b7c941bbSAndroid Build Coastguard Worker channelMask = SL_ANDROID_SPEAKER_QUAD;
74*b7c941bbSAndroid Build Coastguard Worker break;
75*b7c941bbSAndroid Build Coastguard Worker
76*b7c941bbSAndroid Build Coastguard Worker case 6: // 5.1
77*b7c941bbSAndroid Build Coastguard Worker channelMask = SL_ANDROID_SPEAKER_5DOT1;
78*b7c941bbSAndroid Build Coastguard Worker break;
79*b7c941bbSAndroid Build Coastguard Worker
80*b7c941bbSAndroid Build Coastguard Worker case 8: // 7.1
81*b7c941bbSAndroid Build Coastguard Worker channelMask = SL_ANDROID_SPEAKER_7DOT1;
82*b7c941bbSAndroid Build Coastguard Worker break;
83*b7c941bbSAndroid Build Coastguard Worker }
84*b7c941bbSAndroid Build Coastguard Worker return channelMask;
85*b7c941bbSAndroid Build Coastguard Worker }
86