xref: /aosp_15_r20/cts/tests/tests/media/audio/jni/OpenSLESUtils.cpp (revision b7c941bb3fa97aba169d73cee0bed2de8ac964bf)
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