xref: /aosp_15_r20/external/oboe/src/opensles/OpenSLESUtilities.cpp (revision 05767d913155b055644481607e6fa1e35e2fe72c)
1*05767d91SRobert Wu /*
2*05767d91SRobert Wu  * Copyright 2017 The Android Open Source Project
3*05767d91SRobert Wu  *
4*05767d91SRobert Wu  * Licensed under the Apache License, Version 2.0 (the "License");
5*05767d91SRobert Wu  * you may not use this file except in compliance with the License.
6*05767d91SRobert Wu  * You may obtain a copy of the License at
7*05767d91SRobert Wu  *
8*05767d91SRobert Wu  *      http://www.apache.org/licenses/LICENSE-2.0
9*05767d91SRobert Wu  *
10*05767d91SRobert Wu  * Unless required by applicable law or agreed to in writing, software
11*05767d91SRobert Wu  * distributed under the License is distributed on an "AS IS" BASIS,
12*05767d91SRobert Wu  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*05767d91SRobert Wu  * See the License for the specific language governing permissions and
14*05767d91SRobert Wu  * limitations under the License.
15*05767d91SRobert Wu  */
16*05767d91SRobert Wu 
17*05767d91SRobert Wu #include "OpenSLESUtilities.h"
18*05767d91SRobert Wu 
19*05767d91SRobert Wu namespace oboe {
20*05767d91SRobert Wu 
21*05767d91SRobert Wu /*
22*05767d91SRobert Wu  * OSLES Helpers
23*05767d91SRobert Wu  */
24*05767d91SRobert Wu 
getSLErrStr(SLresult code)25*05767d91SRobert Wu const char *getSLErrStr(SLresult code) {
26*05767d91SRobert Wu     switch (code) {
27*05767d91SRobert Wu         case SL_RESULT_SUCCESS:
28*05767d91SRobert Wu             return "SL_RESULT_SUCCESS";
29*05767d91SRobert Wu         case SL_RESULT_PRECONDITIONS_VIOLATED:
30*05767d91SRobert Wu             return "SL_RESULT_PRECONDITIONS_VIOLATED";
31*05767d91SRobert Wu         case SL_RESULT_PARAMETER_INVALID:
32*05767d91SRobert Wu             return "SL_RESULT_PARAMETER_INVALID";
33*05767d91SRobert Wu         case SL_RESULT_MEMORY_FAILURE:
34*05767d91SRobert Wu             return "SL_RESULT_MEMORY_FAILURE";
35*05767d91SRobert Wu         case SL_RESULT_RESOURCE_ERROR:
36*05767d91SRobert Wu             return "SL_RESULT_RESOURCE_ERROR";
37*05767d91SRobert Wu         case SL_RESULT_RESOURCE_LOST:
38*05767d91SRobert Wu             return "SL_RESULT_RESOURCE_LOST";
39*05767d91SRobert Wu         case SL_RESULT_IO_ERROR:
40*05767d91SRobert Wu             return "SL_RESULT_IO_ERROR";
41*05767d91SRobert Wu         case SL_RESULT_BUFFER_INSUFFICIENT:
42*05767d91SRobert Wu             return "SL_RESULT_BUFFER_INSUFFICIENT";
43*05767d91SRobert Wu         case SL_RESULT_CONTENT_CORRUPTED:
44*05767d91SRobert Wu             return "SL_RESULT_CONTENT_CORRUPTED";
45*05767d91SRobert Wu         case SL_RESULT_CONTENT_UNSUPPORTED:
46*05767d91SRobert Wu             return "SL_RESULT_CONTENT_UNSUPPORTED";
47*05767d91SRobert Wu         case SL_RESULT_CONTENT_NOT_FOUND:
48*05767d91SRobert Wu             return "SL_RESULT_CONTENT_NOT_FOUND";
49*05767d91SRobert Wu         case SL_RESULT_PERMISSION_DENIED:
50*05767d91SRobert Wu             return "SL_RESULT_PERMISSION_DENIED";
51*05767d91SRobert Wu         case SL_RESULT_FEATURE_UNSUPPORTED:
52*05767d91SRobert Wu             return "SL_RESULT_FEATURE_UNSUPPORTED";
53*05767d91SRobert Wu         case SL_RESULT_INTERNAL_ERROR:
54*05767d91SRobert Wu             return "SL_RESULT_INTERNAL_ERROR";
55*05767d91SRobert Wu         case SL_RESULT_UNKNOWN_ERROR:
56*05767d91SRobert Wu             return "SL_RESULT_UNKNOWN_ERROR";
57*05767d91SRobert Wu         case SL_RESULT_OPERATION_ABORTED:
58*05767d91SRobert Wu             return "SL_RESULT_OPERATION_ABORTED";
59*05767d91SRobert Wu         case SL_RESULT_CONTROL_LOST:
60*05767d91SRobert Wu             return "SL_RESULT_CONTROL_LOST";
61*05767d91SRobert Wu         default:
62*05767d91SRobert Wu             return "Unknown SL error";
63*05767d91SRobert Wu     }
64*05767d91SRobert Wu }
65*05767d91SRobert Wu 
OpenSLES_createExtendedFormat(SLDataFormat_PCM format,SLuint32 representation)66*05767d91SRobert Wu SLAndroidDataFormat_PCM_EX OpenSLES_createExtendedFormat(
67*05767d91SRobert Wu         SLDataFormat_PCM format, SLuint32 representation) {
68*05767d91SRobert Wu     SLAndroidDataFormat_PCM_EX format_pcm_ex;
69*05767d91SRobert Wu     format_pcm_ex.formatType = SL_ANDROID_DATAFORMAT_PCM_EX;
70*05767d91SRobert Wu     format_pcm_ex.numChannels = format.numChannels;
71*05767d91SRobert Wu     format_pcm_ex.sampleRate = format.samplesPerSec;
72*05767d91SRobert Wu     format_pcm_ex.bitsPerSample = format.bitsPerSample;
73*05767d91SRobert Wu     format_pcm_ex.containerSize = format.containerSize;
74*05767d91SRobert Wu     format_pcm_ex.channelMask = format.channelMask;
75*05767d91SRobert Wu     format_pcm_ex.endianness = format.endianness;
76*05767d91SRobert Wu     format_pcm_ex.representation = representation;
77*05767d91SRobert Wu     return format_pcm_ex;
78*05767d91SRobert Wu }
79*05767d91SRobert Wu 
OpenSLES_ConvertFormatToRepresentation(AudioFormat format)80*05767d91SRobert Wu SLuint32 OpenSLES_ConvertFormatToRepresentation(AudioFormat format) {
81*05767d91SRobert Wu     switch(format) {
82*05767d91SRobert Wu         case AudioFormat::I16:
83*05767d91SRobert Wu             return SL_ANDROID_PCM_REPRESENTATION_SIGNED_INT;
84*05767d91SRobert Wu         case AudioFormat::Float:
85*05767d91SRobert Wu             return SL_ANDROID_PCM_REPRESENTATION_FLOAT;
86*05767d91SRobert Wu         case AudioFormat::I24:
87*05767d91SRobert Wu         case AudioFormat::I32:
88*05767d91SRobert Wu         case AudioFormat::IEC61937:
89*05767d91SRobert Wu         case AudioFormat::Invalid:
90*05767d91SRobert Wu         case AudioFormat::Unspecified:
91*05767d91SRobert Wu         default:
92*05767d91SRobert Wu             return 0;
93*05767d91SRobert Wu     }
94*05767d91SRobert Wu }
95*05767d91SRobert Wu 
96*05767d91SRobert Wu } // namespace oboe
97