OpenSLES_Android.h revision 5b09aa864215690580b18eb802927e8cc7eb4861
13a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*
23a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * Copyright (C) 2010 The Android Open Source Project
33a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren *
43a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * Licensed under the Apache License, Version 2.0 (the "License");
53a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * you may not use this file except in compliance with the License.
63a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * You may obtain a copy of the License at
73a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren *
83a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren *      http://www.apache.org/licenses/LICENSE-2.0
93a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren *
103a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * Unless required by applicable law or agreed to in writing, software
113a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * distributed under the License is distributed on an "AS IS" BASIS,
123a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * See the License for the specific language governing permissions and
143a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren * limitations under the License.
153a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren */
163a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
173a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#ifndef OPENSL_ES_ANDROID_H_
183a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define OPENSL_ES_ANDROID_H_
1954dfa5d90e49037eba05f5278076b45428b2bd11Chris Wren
2054dfa5d90e49037eba05f5278076b45428b2bd11Chris Wren#ifdef __cplusplus
213a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenextern "C" {
223a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
233a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
243a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/* Android common types                                                      */
253a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
263a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
273a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrentypedef sl_int64_t             SLAint64;           /* 64 bit signed integer */
283a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
293a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
303a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
31d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren/* Android Stream Type interface                                             */
32d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren/*---------------------------------------------------------------------------*/
333a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
343a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/** Stream types */
35d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren// FIXME verify those are all the ones we need
363a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren// FIXME verify we want to use the same values as in android::AudioSystem
373a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*      same as android.media.AudioManager.STREAM_VOICE_CALL */
383a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_ANDROID_STREAM_VOICE        ((SLuint32) 0x00000000)
393a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*      same as android.media.AudioManager.STREAM_SYSTEM */
403a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_ANDROID_STREAM_SYSTEM       ((SLuint32) 0x00000001)
413a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*      same as android.media.AudioManager.STREAM_RING */
423a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_ANDROID_STREAM_RING         ((SLuint32) 0x00000002)
433a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*      same as android.media.AudioManager.STREAM_MUSIC */
443a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_ANDROID_STREAM_MEDIA        ((SLuint32) 0x00000003)
453a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*      same as android.media.AudioManager.STREAM_ALARM */
463a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_ANDROID_STREAM_ALARM        ((SLuint32) 0x00000004)
473a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*      same as android.media.AudioManager.STREAM_NOTIFICATION */
483a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_ANDROID_STREAM_NOTIFICATION ((SLuint32) 0x00000005)
493a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
503a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
513a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenextern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDSTREAMTYPE;
523a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
533a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/** Android Stream Type interface methods */
543a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
553a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenstruct SLAndroidStreamTypeItf_;
56ed5cc0e1f7648962f5c93e1277d282be75bcd537Chris Wrentypedef const struct SLAndroidStreamTypeItf_ * const * SLAndroidStreamTypeItf;
573a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
583a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
593a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenstruct SLAndroidStreamTypeItf_ {
603a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*SetStreamType) (
613a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren        SLAndroidStreamTypeItf self,
623a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren        SLuint32 type
633a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    );
643a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*GetStreamType) (
653a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren        SLAndroidStreamTypeItf self,
663a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren        SLuint32 *pType
673a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    );
683a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren};
693a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
703a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
713a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
723a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/* Android Effect interface                                                  */
733a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
743a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
753a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenextern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECT;
763a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
773a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/** Android Effect interface methods */
783a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
793a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenstruct SLAndroidEffectItf_;
803a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrentypedef const struct SLAndroidEffectItf_ * const * SLAndroidEffectItf;
813a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
82d6479ec5eec13914f656f6be996d95fe1610fd57Alan Viverette
833a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenstruct SLAndroidEffectItf_ {
843a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
853a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*CreateEffect) (SLAndroidEffectItf self,
86d6479ec5eec13914f656f6be996d95fe1610fd57Alan Viverette            SLInterfaceID effectId);
873a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
883a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*ReleaseEffect) (SLAndroidEffectItf self,
89617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette            SLInterfaceID effectId);
90d6479ec5eec13914f656f6be996d95fe1610fd57Alan Viverette
91617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette    SLresult (*SetEnabled) (SLAndroidEffectItf self,
92617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette            SLInterfaceID effectId,
93617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette            SLboolean enabled);
94617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette
95617feb99a06e7ffb3894e86a286bf30e085f321aAlan Viverette    SLresult (*IsEnabled) (SLAndroidEffectItf self,
963a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLInterfaceID effectId,
973a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLboolean *pEnabled);
983a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
993a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*SendCommand) (SLAndroidEffectItf self,
1003a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLInterfaceID effectId,
1013a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLuint32 command,
102d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren            SLuint32 commandSize,
103d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren            void *pCommandData,
104d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren            SLuint32 *replySize,
105d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren            void *pReplyData);
106d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren};
107d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren
108d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren
109d84e5937468f6ebf2313ccd5ae54d5405f5e9cdeChris Wren/*---------------------------------------------------------------------------*/
1103a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/* Android Effect Capabilities interface                                     */
1113a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
1123a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1133a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenextern SLAPIENTRY const SLInterfaceID SL_IID_ANDROIDEFFECTCAPABILITIES;
1143a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1153a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/** Android Effect Capabilities interface methods */
1163a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1173a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenstruct SLAndroidEffectCapabilitiesItf_;
1183a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrentypedef const struct SLAndroidEffectCapabilitiesItf_ * const * SLAndroidEffectCapabilitiesItf;
1193a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1203a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1213a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrenstruct SLAndroidEffectCapabilitiesItf_ {
1223a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1233a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*QueryNumEffects) (SLAndroidEffectCapabilitiesItf self,
1243a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLuint32 *pNumSupportedEffects);
1253a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1263a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1273a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLresult (*QueryEffect) (SLAndroidEffectCapabilitiesItf self,
1283a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLuint32 index,
1293a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLInterfaceID *pEffectType,
1303a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLInterfaceID *pEffectImplementation,
1313a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            const SLchar *pName,
1323a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren            SLuint16 *pNameSize);
1333a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren};
1343a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1353a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1363a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
1373a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/* Android File Descriptor Data Locator                                      */
1383a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/*---------------------------------------------------------------------------*/
1393a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/** Addendum to Data locator macros  */
1403a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_DATALOCATOR_ANDROIDFD        ((SLuint32) 0x00000009)
1413a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1423a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#define SL_DATALOCATOR_ANDROIDFD_USE_FILE_SIZE ((SLAint64) 0xFFFFFFFFFFFFFFFFll)
1433a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1443a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren/** File Descriptor-based data locator definition where locatorType must be SL_DATALOCATOR_ANDROIDFD */
1453a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wrentypedef struct SLDataLocator_AndroidFD_ {
1463a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLuint32        locatorType;
1473a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLint32         fd;
1483a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLAint64        offset;
1493a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren    SLAint64        length;
1503a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren} SLDataLocator_AndroidFD;
1513a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1523a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren
1533a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren}
1543a59d6e26dbec61ede7d6f87d966698e27c91d78Chris Wren#endif /* __cplusplus */
155c7088da5858969325c580989d74e0f00cb6e0be1Dan Sandler
156c7088da5858969325c580989d74e0f00cb6e0be1Dan Sandler#endif /* OPENSL_ES_ANDROID_H_ */
157c7088da5858969325c580989d74e0f00cb6e0be1Dan Sandler