Merge stage-aosp-master into pi-dev-plus-aosp
am: 50af6ca0bc
Change-Id: Ia57643ca6ba1aa70eec16c001f835b6ea236c6db
diff --git a/src/Android.bp b/src/Android.bp
index 7a9187b..b97b66d 100644
--- a/src/Android.bp
+++ b/src/Android.bp
@@ -86,6 +86,10 @@
"-Werror",
],
+ ldflags: [
+ "-Wl,--exclude-libs,ALL",
+ ],
+
product_variables: {
platform_sdk_version: {
// API level
@@ -211,14 +215,11 @@
"libutils",
"libmedia",
"libmedia_omx",
- "libmediaextractor",
"libaudioclient",
"libaudiomanager",
"libbinder",
"libstagefright",
"libstagefright_foundation",
- "libcutils",
- "libnativewindow",
"libgui",
"libdl",
"libandroid_runtime",
diff --git a/src/android/AudioPlayer_to_android.cpp b/src/android/AudioPlayer_to_android.cpp
index de27cae..d8940b8 100644
--- a/src/android/AudioPlayer_to_android.cpp
+++ b/src/android/AudioPlayer_to_android.cpp
@@ -1697,6 +1697,9 @@
pAudioPlayer->mSessionId);
android::status_t status = pat->initCheck();
if (status != android::NO_ERROR) {
+ // AudioTracks are meant to be refcounted, so their dtor is protected.
+ static_cast<void>(android::sp<android::AudioTrack>(pat));
+
SL_LOGE("AudioTrack::initCheck status %u", status);
// FIXME should return a more specific result depending on status
result = SL_RESULT_CONTENT_UNSUPPORTED;
diff --git a/src/android/android_AudioSfDecoder.h b/src/android/android_AudioSfDecoder.h
index d62f0ed..0043539 100644
--- a/src/android/android_AudioSfDecoder.h
+++ b/src/android/android_AudioSfDecoder.h
@@ -19,7 +19,6 @@
#include <media/DataSource.h>
#include <media/MediaSource.h>
-#include <media/MediaExtractor.h>
#include <media/stagefright/FileSource.h>
#include <media/stagefright/MediaDefs.h>
#include <media/stagefright/MetaData.h>
diff --git a/src/itf/IAndroidConfiguration.cpp b/src/itf/IAndroidConfiguration.cpp
index 7bdb235..412ef70 100644
--- a/src/itf/IAndroidConfiguration.cpp
+++ b/src/itf/IAndroidConfiguration.cpp
@@ -23,6 +23,14 @@
#include <android_runtime/AndroidRuntime.h>
+extern jmethodID gMidAudioTrackRoutingProxy_ctor;
+extern jmethodID gMidAudioTrackRoutingProxy_release;
+extern jmethodID gMidAudioRecordRoutingProxy_ctor;
+extern jmethodID gMidAudioRecordRoutingProxy_release;
+
+extern jclass gClsAudioTrackRoutingProxy;
+extern jclass gClsAudioRecordRoutingProxy;
+
static SLresult IAndroidConfiguration_SetConfiguration(SLAndroidConfigurationItf self,
const SLchar *configKey,
const void *pConfigValue,
@@ -150,17 +158,11 @@
JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
- // Get the constructor for (Java) AudioTrackRoutingProxy
- jclass clsAudioTrackRoutingProxy =
- j_env->FindClass("android/media/AudioTrackRoutingProxy");
- jmethodID midAudioTrackRoutingProxy_ctor =
- j_env->GetMethodID(clsAudioTrackRoutingProxy, "<init>", "(J)V");
-
j_env->ExceptionClear();
jobject localObjRef =
- j_env->NewObject(clsAudioTrackRoutingProxy,
- midAudioTrackRoutingProxy_ctor,
+ j_env->NewObject(gClsAudioTrackRoutingProxy,
+ gMidAudioTrackRoutingProxy_ctor,
(jlong)pAudioTrack /*audioTrackObjInLong*/);
*proxyObj = j_env->NewGlobalRef(localObjRef);
@@ -226,16 +228,10 @@
JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
- // Get the constructor for (Java) AudioRecordRoutingProxy
- jclass clsAudioRecordRoutingProxy =
- j_env->FindClass("android/media/AudioRecordRoutingProxy");
- jmethodID midAudioRecordRoutingProxy_ctor =
- j_env->GetMethodID(clsAudioRecordRoutingProxy, "<init>", "(J)V");
-
j_env->ExceptionClear();
jobject localObjRef =
- j_env->NewObject(clsAudioRecordRoutingProxy,
- midAudioRecordRoutingProxy_ctor,
+ j_env->NewObject(gClsAudioRecordRoutingProxy,
+ gMidAudioRecordRoutingProxy_ctor,
(jlong)pAudioRecord /*audioRecordObjInLong*/);
*proxyObj = j_env->NewGlobalRef(localObjRef);
@@ -332,14 +328,8 @@
{
JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
- // Get the release method for (Java) AudioTrackRoutingProxy
- jclass clsAudioTrackRoutingProxy =
- j_env->FindClass("android/media/AudioTrackRoutingProxy");
- jmethodID midAudioTrackRoutingProxy_release =
- j_env->GetMethodID(clsAudioTrackRoutingProxy, "native_release", "()V");
-
j_env->ExceptionClear();
- j_env->CallVoidMethod(iConfig->mRoutingProxy, midAudioTrackRoutingProxy_release);
+ j_env->CallVoidMethod(iConfig->mRoutingProxy, gMidAudioTrackRoutingProxy_release);
if (j_env->ExceptionCheck()) {
SL_LOGE("Java exception releasing recorder routing object.");
result = SL_RESULT_INTERNAL_ERROR;
@@ -353,14 +343,8 @@
{
JNIEnv* j_env = android::AndroidRuntime::getJNIEnv();
- // Get the release method for (Java) AudioTrackRoutingProxy
- jclass clsAudioRecordRoutingProxy =
- j_env->FindClass("android/media/AudioRecordRoutingProxy");
- jmethodID midAudioRecordRoutingProxy_release =
- j_env->GetMethodID(clsAudioRecordRoutingProxy, "native_release", "()V");
-
j_env->ExceptionClear();
- j_env->CallVoidMethod(iConfig->mRoutingProxy, midAudioRecordRoutingProxy_release);
+ j_env->CallVoidMethod(iConfig->mRoutingProxy, gMidAudioRecordRoutingProxy_release);
if (j_env->ExceptionCheck()) {
SL_LOGE("Java exception releasing recorder routing object.");
result = SL_RESULT_INTERNAL_ERROR;