Table of Contents

Target Platform(s):

include/AK/SoundEngine/Platforms/Android/AkAndroidSoundEngine.h

Go to the documentation of this file.
00001 /*******************************************************************************
00002 The content of this file includes portions of the AUDIOKINETIC Wwise Technology
00003 released in source code form as part of the SDK installer package.
00004 
00005 Commercial License Usage
00006 
00007 Licensees holding valid commercial licenses to the AUDIOKINETIC Wwise Technology
00008 may use this file in accordance with the end user license agreement provided 
00009 with the software or, alternatively, in accordance with the terms contained in a
00010 written agreement between you and Audiokinetic Inc.
00011 
00012 Apache License Usage
00013 
00014 Alternatively, this file may be used under the Apache License, Version 2.0 (the 
00015 "Apache License"); you may not use this file except in compliance with the 
00016 Apache License. You may obtain a copy of the Apache License at 
00017 http://www.apache.org/licenses/LICENSE-2.0.
00018 
00019 Unless required by applicable law or agreed to in writing, software distributed
00020 under the Apache License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES
00021 OR CONDITIONS OF ANY KIND, either express or implied. See the Apache License for
00022 the specific language governing permissions and limitations under the License.
00023 
00024   Version: <VERSION>  Build: <BUILDNUMBER>
00025   Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc.
00026 *******************************************************************************/
00027 
00028 // AkAndroidSoundEngine.h
00029 
00030 /// \file 
00031 /// Main Sound Engine interface, specific Android.
00032 
00033 #pragma once
00034 
00035 #include <AK/SoundEngine/Common/AkTypes.h>
00036 #include <AK/Tools/Common/AkPlatformFuncs.h>
00037 #include <SLES/OpenSLES.h>
00038 #include "SLES/OpenSLES_Android.h"
00039 #include <jni.h>
00040 
00041 
00042 /// Platform specific initialization settings
00043 /// \sa AK::SoundEngine::Init
00044 /// \sa AK::SoundEngine::GetDefaultPlatformInitSettings
00045 /// - \ref soundengine_initialization_advanced_soundengine_using_memory_threshold
00046 struct AkPlatformInitSettings
00047 {
00048     // Threading model.
00049     AkThreadProperties  threadLEngine;          ///< Lower engine threading properties
00050     AkThreadProperties  threadOutputMgr;        ///< Ouput thread threading properties
00051     AkThreadProperties  threadBankManager;      ///< Bank manager threading properties (its default priority is AK_THREAD_PRIORITY_NORMAL)
00052     AkThreadProperties  threadMonitor;          ///< Monitor threading properties (its default priority is AK_THREAD_PRIORITY_ABOVENORMAL). This parameter is not used in Release build.    
00053     
00054     // Memory.
00055     AkReal32            fLEngineDefaultPoolRatioThreshold;  ///< 0.0f to 1.0f value: The percentage of occupied memory where the sound engine should enter in Low memory mode. \ref soundengine_initialization_advanced_soundengine_using_memory_threshold
00056     AkUInt32            uLEngineDefaultPoolSize;///< Lower Engine default memory pool size
00057 
00058     AkUInt32            uSampleRate;            ///< Sampling Rate.  Set to 0 to get the native sample rate.  Default value is 0.
00059     AkUInt16            uNumRefillsInVoice;     ///< Number of refill buffers in voice buffer.  Defaults to 4.
00060     AkChannelMask       uChannelMask;           ///< use AK_SPEAKER_SETUP_STEREO
00061     bool                bRoundFrameSizeToHWSize;///< Used when hardware-preferred frame size and user-preferred frame size (AkInitSettings.uNumSamplesPerFrame) are not compatible.  
00062                                                 /// If true (default) the sound engine will initialize to a multiple of the HW setting, close to the user setting.
00063                                                 /// If false, the user setting is used as is, regardless of the HW preference (might incur a performance hit).
00064 
00065     SLObjectItf         pSLEngine;              ///< OpenSL engine reference for sharing between various audio components.
00066     JavaVM*             pJavaVM;                ///< Active JavaVM for the app, used for internal system calls.  Usually provided through the android_app structure given at startup or the NativeActivity. This parameter needs to be set to allow the sound engine initialization.
00067     jobject             jNativeActivity;        ///< NativeActivity instance for this application. Usually provided through the android_app structure, or through other means if your application has an overridden activity.
00068 };
00069 
00070 struct AkInitSettings;
00071 
00072 namespace AK
00073 {
00074     namespace SoundEngine
00075     {
00076         /// Get instance of OpenSL created by the sound engine at initialization.
00077         /// \return NULL if sound engine is not initialized
00078         AK_EXTERNAPIFUNC( SLObjectItf, GetWwiseOpenSLInterface )();
00079 
00080         /// Gets specific settings for the fast audio path on Android.  Call this function after AK::SoundEngine::GetDefaultSettings and AK::SoundEngine::GetPlatformDefaultSettings to modify settings for the fast path.
00081         /// in_pfSettings.pJavaVM and in_pfSettings.jNativeActivity must be filled properly prior to calling GetFastPathSettings.
00082         /// The fast path constraints are:
00083         /// -The sample rate must match the hardware native sample rate 
00084         /// -The number of samples per frame must be a multiple of the hardware buffer size.
00085         /// Not fulfilling these constraints makes the audio hardware less efficient.
00086         /// In general, using the fast path means a higher CPU usage.  Complex audio designs may not be feasible while using the fast path.
00087         AKRESULT GetFastPathSettings(AkInitSettings &in_settings, AkPlatformInitSettings &in_pfSettings);
00088     };
00089 };