summaryrefslogtreecommitdiffstats
path: root/core/jni/android_media_AudioSystem.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'core/jni/android_media_AudioSystem.cpp')
-rw-r--r--core/jni/android_media_AudioSystem.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 91b3278..1acf867 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -154,6 +154,11 @@ static struct {
jmethodID postDynPolicyEventFromNative;
} gDynPolicyEventHandlerMethods;
+static struct {
+ jmethodID postEffectSessionEventFromNative;
+} gEffectSessionEventHandlerMethods;
+
+
static Mutex gLock;
enum AudioError {
@@ -386,6 +391,24 @@ android_media_AudioSystem_dyn_policy_callback(int event, String8 regId, int val)
}
+static void
+android_media_AudioSystem_effect_session_callback(int event, audio_stream_type_t stream,
+ audio_unique_id_t sessionId, bool added)
+{
+ JNIEnv *env = AndroidRuntime::getJNIEnv();
+ if (env == NULL) {
+ return;
+ }
+
+ jclass clazz = env->FindClass(kClassPathName);
+
+ env->CallStaticVoidMethod(clazz, gEffectSessionEventHandlerMethods.postEffectSessionEventFromNative,
+ event, stream, sessionId, added);
+
+ env->DeleteLocalRef(clazz);
+
+}
+
static jint
android_media_AudioSystem_setDeviceConnectionState(JNIEnv *env, jobject thiz, jint device, jint state, jstring device_address, jstring device_name)
{
@@ -1487,6 +1510,12 @@ android_media_AudioSystem_registerDynPolicyCallback(JNIEnv *env, jobject thiz)
AudioSystem::setDynPolicyCallback(android_media_AudioSystem_dyn_policy_callback);
}
+static void
+android_media_AudioSystem_registerEffectSessionCallback(JNIEnv *env, jobject thiz)
+{
+ AudioSystem::setEffectSessionCallback(android_media_AudioSystem_effect_session_callback);
+}
+
static jint convertAudioMixToNative(JNIEnv *env,
AudioMix *nAudioMix,
@@ -1659,6 +1688,8 @@ static JNINativeMethod gMethods[] = {
(void *)android_media_AudioSystem_registerPolicyMixes},
{"native_register_dynamic_policy_callback", "()V",
(void *)android_media_AudioSystem_registerDynPolicyCallback},
+ {"native_register_effect_session_callback", "()V",
+ (void *)android_media_AudioSystem_registerEffectSessionCallback},
{"systemReady", "()I", (void *)android_media_AudioSystem_systemReady},
};
@@ -1766,6 +1797,10 @@ int register_android_media_AudioSystem(JNIEnv *env)
GetStaticMethodIDOrDie(env, env->FindClass(kClassPathName),
"dynamicPolicyCallbackFromNative", "(ILjava/lang/String;I)V");
+ gEffectSessionEventHandlerMethods.postEffectSessionEventFromNative =
+ GetStaticMethodIDOrDie(env, env->FindClass(kClassPathName),
+ "effectSessionCallbackFromNative", "(IIIZ)V");
+
jclass audioMixClass = FindClassOrDie(env, "android/media/audiopolicy/AudioMix");
gAudioMixClass = MakeGlobalRefOrDie(env, audioMixClass);
gAudioMixFields.mRule = GetFieldIDOrDie(env, audioMixClass, "mRule",