Version

menu_open
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  threadBankManager;      ///< Bank manager threading properties (its default priority is AK_THREAD_PRIORITY_NORMAL)
00051     AkThreadProperties  threadMonitor;          ///< Monitor threading properties (its default priority is AK_THREAD_PRIORITY_ABOVENORMAL). This parameter is not used in Release build.    
00052     
00053     // Memory.
00054     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
00055     AkUInt32            uLEngineDefaultPoolSize;///< Lower Engine default memory pool size
00056 
00057     AkUInt32            uSampleRate;            ///< Sampling Rate.  Set to 0 to get the native sample rate.  Default value is 0.
00058     AkUInt16            uNumRefillsInVoice;     ///< Number of refill buffers in voice buffer.  Defaults to 4.
00059     AkChannelMask       uChannelMask;           ///< use AK_SPEAKER_SETUP_STEREO
00060     bool                bRoundFrameSizeToHWSize;///< Used when hardware-preferred frame size and user-preferred frame size (AkInitSettings.uNumSamplesPerFrame) are not compatible.  
00061                                                 /// If true (default) the sound engine will initialize to a multiple of the HW setting, close to the user setting.
00062                                                 /// If false, the user setting is used as is, regardless of the HW preference (might incur a performance hit).
00063 
00064     SLObjectItf         pSLEngine;              ///< OpenSL engine reference for sharing between various audio components.
00065     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.
00066     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.
00067                                                 ///< This is optional.  However, not providing this object will prevent the background music muting when player start his own music in an external player.
00068 };
00069 
00070 struct AkInitSettings;
00071 
00072 /// Used with \ref AK::SoundEngine::AddSecondaryOutput to specify the type of secondary output.
00073 enum AkAudioOutputType
00074 {
00075     AkOutput_None = 0,      ///< Used for uninitialized type, do not use.
00076     AkOutput_Dummy,         ///< Dummy output, simply eats the audio stream and outputs nothing.
00077     AkOutput_Main,          ///< Main output.  This cannot be used with AddSecondaryOutput, but can be used to query information about the main output (GetSpeakerConfiguration for example).   
00078     AkOutput_NumBuiltInOutputs,     ///< Do not use.
00079     AkOutput_Plugin         ///< Specify if using Audio Device Plugin Sink.
00080 };
00081 
00082 namespace AK
00083 {
00084     namespace SoundEngine
00085     {
00086         /// Get instance of OpenSL created by the sound engine at initialization.
00087         /// \return NULL if sound engine is not initialized
00088         AK_EXTERNAPIFUNC( SLObjectItf, GetWwiseOpenSLInterface )();
00089 
00090         /// 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.
00091         /// in_pfSettings.pJavaVM and in_pfSettings.jNativeActivity must be filled properly prior to calling GetFastPathSettings.
00092         /// The fast path constraints are:
00093         /// -The sample rate must match the hardware native sample rate 
00094         /// -The number of samples per frame must be a multiple of the hardware buffer size.
00095         /// Not fulfilling these constraints makes the audio hardware less efficient.
00096         /// In general, using the fast path means a higher CPU usage.  Complex audio designs may not be feasible while using the fast path.
00097         AKRESULT GetFastPathSettings(AkInitSettings &in_settings, AkPlatformInitSettings &in_pfSettings);
00098     };
00099 };

Was this page helpful?

Need Support?

Questions? Problems? Need more info? Contact us, and we can help!

Visit our Support page

Tell us about your project. We're here to help.

Register your project and we'll help you get started with no strings attached!

Get started with Wwise