Table of Contents

Target Platform(s):


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.
00005 Commercial License Usage
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.
00012 Apache License Usage
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 
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.
00024   Version: <VERSION>  Build: <BUILDNUMBER>
00025   Copyright (c) <COPYRIGHTYEAR> Audiokinetic Inc.
00026 *******************************************************************************/
00028 // AkAndroidSoundEngine.h
00030 /// \file 
00031 /// Main Sound Engine interface, specific Android.
00033 #pragma once
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>
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.    
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
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).
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                                                 ///< This is optional.  However, not providing this object will prevent the background music muting when player start his own music in an external player.
00069 };
00071 struct AkInitSettings;
00073 namespace AK
00074 {
00075     namespace SoundEngine
00076     {
00077         /// Get instance of OpenSL created by the sound engine at initialization.
00078         /// \return NULL if sound engine is not initialized
00079         AK_EXTERNAPIFUNC( SLObjectItf, GetWwiseOpenSLInterface )();
00081         /// 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.
00082         /// in_pfSettings.pJavaVM and in_pfSettings.jNativeActivity must be filled properly prior to calling GetFastPathSettings.
00083         /// The fast path constraints are:
00084         /// -The sample rate must match the hardware native sample rate 
00085         /// -The number of samples per frame must be a multiple of the hardware buffer size.
00086         /// Not fulfilling these constraints makes the audio hardware less efficient.
00087         /// In general, using the fast path means a higher CPU usage.  Complex audio designs may not be feasible while using the fast path.
00088         AKRESULT GetFastPathSettings(AkInitSettings &in_settings, AkPlatformInitSettings &in_pfSettings);
00089     };
00090 };