diff options
author | Dongwon Kang <dwkang@google.com> | 2018-09-11 14:40:23 -0700 |
---|---|---|
committer | Dongwon Kang <dwkang@google.com> | 2018-09-11 17:02:13 -0700 |
commit | bf98d54da94fe56f3670f371c66d420a6b6c4f17 (patch) | |
tree | 5f5ad51dc8ac313a5c1a6be99a78719273f5a09d | |
parent | 81ed05df1d8fe671cae3c219efcbbe8d2f99542c (diff) |
MediaPlayer2: remove libandroid_runtime + other static lib dependency.
MediaMetricsJNI.cpp is forked from libandroid_runtime instead of moving
since it was also used with in the libandroid_runtime.so.
Test: MediaPlayer2Test
Bug: 112767225
Change-Id: Iebb0ce2736dbf4df9288a5c3aca447a52c4de533
-rw-r--r-- | media/jni/Android.bp | 11 | ||||
-rw-r--r-- | media/jni/android_media_MediaMetricsJNI.cpp | 90 | ||||
-rw-r--r-- | media/jni/android_media_MediaMetricsJNI.h | 34 |
3 files changed, 126 insertions, 9 deletions
diff --git a/media/jni/Android.bp b/media/jni/Android.bp index 339a7eef637e..7681cc340069 100644 --- a/media/jni/Android.bp +++ b/media/jni/Android.bp @@ -91,6 +91,7 @@ cc_library_shared { "android_media_Media2HTTPConnection.cpp", "android_media_Media2HTTPService.cpp", "android_media_Media2DataSource.cpp", + "android_media_MediaMetricsJNI.cpp", "android_media_MediaPlayer2.cpp", "android_media_SyncParams.cpp", ], @@ -98,7 +99,6 @@ cc_library_shared { shared_libs: [ "android.hardware.cas@1.0", // for CasManager. VNDK??? "android.hardware.cas.native@1.0", // CasManager. VNDK??? - "libandroid_runtime", // ??? "libaudioclient", // for use of AudioTrack, AudioSystem. to be removed "libbinder", "libgui", // for VideoFrameScheduler @@ -120,13 +120,9 @@ cc_library_shared { header_libs: ["libhardware_headers"], static_libs: [ - "libbacktrace", "libbase", - "libc_malloc_debug_backtrace", "libcrypto", "libcutils", - "libdexfile", - "liblzma", "libmedia_helper", "libmedia_player2_util", "libmediadrm", @@ -135,7 +131,7 @@ cc_library_shared { "libmediaplayer2", "libmediaplayer2-protos", "libmediautils", - "libnetd_client", + "libnetd_client", // for setNetworkForUser "libprotobuf-cpp-lite", "libstagefright_esds", "libstagefright_foundation", @@ -146,9 +142,6 @@ cc_library_shared { "libstagefright_player2", "libstagefright_rtsp", "libstagefright_timedtext2", - "libunwindstack", - "libutilscallstack", - "libziparchive", ], group_static_libs: true, diff --git a/media/jni/android_media_MediaMetricsJNI.cpp b/media/jni/android_media_MediaMetricsJNI.cpp new file mode 100644 index 000000000000..3ded8c260512 --- /dev/null +++ b/media/jni/android_media_MediaMetricsJNI.cpp @@ -0,0 +1,90 @@ +/* + * Copyright 2017, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include <jni.h> +#include <nativehelper/JNIHelp.h> + +#include "android_media_MediaMetricsJNI.h" +#include <media/MediaAnalyticsItem.h> + + +// Copeid from core/jni/ (libandroid_runtime.so) +namespace android { + +// place the attributes into a java PersistableBundle object +jobject MediaMetricsJNI::writeMetricsToBundle(JNIEnv* env, MediaAnalyticsItem *item, jobject mybundle) { + + jclass clazzBundle = env->FindClass("android/os/PersistableBundle"); + if (clazzBundle==NULL) { + ALOGD("can't find android/os/PersistableBundle"); + return NULL; + } + // sometimes the caller provides one for us to fill + if (mybundle == NULL) { + // create the bundle + jmethodID constructID = env->GetMethodID(clazzBundle, "<init>", "()V"); + mybundle = env->NewObject(clazzBundle, constructID); + if (mybundle == NULL) { + return NULL; + } + } + + // grab methods that we can invoke + jmethodID setIntID = env->GetMethodID(clazzBundle, "putInt", "(Ljava/lang/String;I)V"); + jmethodID setLongID = env->GetMethodID(clazzBundle, "putLong", "(Ljava/lang/String;J)V"); + jmethodID setDoubleID = env->GetMethodID(clazzBundle, "putDouble", "(Ljava/lang/String;D)V"); + jmethodID setStringID = env->GetMethodID(clazzBundle, "putString", "(Ljava/lang/String;Ljava/lang/String;)V"); + + // env, class, method, {parms} + //env->CallVoidMethod(env, mybundle, setIntID, jstr, jint); + + // iterate through my attributes + // -- get name, get type, get value + // -- insert appropriately into the bundle + for (size_t i = 0 ; i < item->mPropCount; i++ ) { + MediaAnalyticsItem::Prop *prop = &item->mProps[i]; + // build the key parameter from prop->mName + jstring keyName = env->NewStringUTF(prop->mName); + // invoke the appropriate method to insert + switch (prop->mType) { + case MediaAnalyticsItem::kTypeInt32: + env->CallVoidMethod(mybundle, setIntID, + keyName, (jint) prop->u.int32Value); + break; + case MediaAnalyticsItem::kTypeInt64: + env->CallVoidMethod(mybundle, setLongID, + keyName, (jlong) prop->u.int64Value); + break; + case MediaAnalyticsItem::kTypeDouble: + env->CallVoidMethod(mybundle, setDoubleID, + keyName, (jdouble) prop->u.doubleValue); + break; + case MediaAnalyticsItem::kTypeCString: + env->CallVoidMethod(mybundle, setStringID, keyName, + env->NewStringUTF(prop->u.CStringValue)); + break; + default: + ALOGE("to_String bad item type: %d for %s", + prop->mType, prop->mName); + break; + } + } + + return mybundle; +} + +}; // namespace android + diff --git a/media/jni/android_media_MediaMetricsJNI.h b/media/jni/android_media_MediaMetricsJNI.h new file mode 100644 index 000000000000..fd621ea7261d --- /dev/null +++ b/media/jni/android_media_MediaMetricsJNI.h @@ -0,0 +1,34 @@ +/* + * Copyright 2017, The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef _ANDROID_MEDIA_MEDIAMETRICSJNI_H_ +#define _ANDROID_MEDIA_MEDIAMETRICSJNI_H_ + +#include <jni.h> +#include <nativehelper/JNIHelp.h> +#include <media/MediaAnalyticsItem.h> + +// Copeid from core/jni/ (libandroid_runtime.so) +namespace android { + +class MediaMetricsJNI { +public: + static jobject writeMetricsToBundle(JNIEnv* env, MediaAnalyticsItem *item, jobject mybundle); +}; + +}; // namespace android + +#endif // _ANDROID_MEDIA_MEDIAMETRICSJNI_H_ |