diff options
author | Santiago Seifert <aquilescanta@google.com> | 2021-04-27 16:19:40 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2021-04-27 16:19:40 +0000 |
commit | 7c8f0cb884ebe7aabb199f0d4d79c0092ae6feaf (patch) | |
tree | 276620d04ce5742eabba9715d3afdb1327419f60 | |
parent | c0515e80178b2f2282dc2f50c90539bdea4364a8 (diff) | |
parent | 9f5e9b242ba315fcacf00b86624cd6278d7aa4db (diff) |
Merge "Add log session id to MediaParser" into sc-dev
-rw-r--r-- | apex/media/framework/Android.bp | 5 | ||||
-rw-r--r-- | apex/media/framework/java/android/media/MediaParser.java | 23 | ||||
-rw-r--r-- | apex/media/framework/jni/android_media_MediaParserJNI.cpp | 12 |
3 files changed, 29 insertions, 11 deletions
diff --git a/apex/media/framework/Android.bp b/apex/media/framework/Android.bp index 7020f1824fda..1bf732ba33f2 100644 --- a/apex/media/framework/Android.bp +++ b/apex/media/framework/Android.bp @@ -41,7 +41,10 @@ java_library { installable: true, sdk_version: "module_current", - libs: ["framework-annotations-lib"], + libs: [ + "androidx.annotation_annotation", + "framework-annotations-lib", + ], static_libs: [ "exoplayer2-extractor", "mediatranscoding_aidl_interface-java", diff --git a/apex/media/framework/java/android/media/MediaParser.java b/apex/media/framework/java/android/media/MediaParser.java index cff422d0aafe..8cc3bc08dfb5 100644 --- a/apex/media/framework/java/android/media/MediaParser.java +++ b/apex/media/framework/java/android/media/MediaParser.java @@ -28,6 +28,10 @@ import android.util.Log; import android.util.Pair; import android.util.SparseArray; +import androidx.annotation.RequiresApi; + +import com.android.modules.utils.build.SdkLevel; + import com.google.android.exoplayer2.C; import com.google.android.exoplayer2.Format; import com.google.android.exoplayer2.ParserException; @@ -1068,7 +1072,7 @@ public final class MediaParser { private boolean mReleased; // MediaMetrics fields. - @NonNull private LogSessionId mLogSessionId = LogSessionId.LOG_SESSION_ID_NONE; + @Nullable private LogSessionId mLogSessionId; private final boolean mCreatedByName; private final SparseArray<Format> mTrackFormats; private String mLastObservedExceptionName; @@ -1331,7 +1335,7 @@ public final class MediaParser { MEDIAMETRICS_PARAMETER_LIST_MAX_LENGTH)); nativeSubmitMetrics( - // TODO: mLogSessionId, + SdkLevel.isAtLeastS() ? getLogSessionIdStringV31() : "", mParserName, mCreatedByName, String.join(MEDIAMETRICS_ELEMENT_SEPARATOR, mParserNamesPool), @@ -1345,13 +1349,15 @@ public final class MediaParser { videoHeight); } - public void setLogSessionId(@NonNull LogSessionId sessionId) { - this.mLogSessionId = Objects.requireNonNull(sessionId); + @RequiresApi(31) + public void setLogSessionId(@NonNull LogSessionId logSessionId) { + this.mLogSessionId = Objects.requireNonNull(logSessionId); } + @RequiresApi(31) @NonNull public LogSessionId getLogSessionId() { - return mLogSessionId; + return mLogSessionId != null ? mLogSessionId : LogSessionId.LOG_SESSION_ID_NONE; } // Private methods. @@ -1548,6 +1554,11 @@ public final class MediaParser { return (String) mParserParameters.getOrDefault(name, defaultValue); } + @RequiresApi(31) + private String getLogSessionIdStringV31() { + return mLogSessionId != null ? mLogSessionId.getStringId() : ""; + } + // Private classes. private static final class InputReadingDataReader implements DataReader { @@ -2197,7 +2208,7 @@ public final class MediaParser { // Native methods. private native void nativeSubmitMetrics( - // TODO: String logSessionId, + String logSessionId, String parserName, boolean createdByName, String parserPool, diff --git a/apex/media/framework/jni/android_media_MediaParserJNI.cpp b/apex/media/framework/jni/android_media_MediaParserJNI.cpp index 7fc4628984f5..c81152c0954c 100644 --- a/apex/media/framework/jni/android_media_MediaParserJNI.cpp +++ b/apex/media/framework/jni/android_media_MediaParserJNI.cpp @@ -29,6 +29,7 @@ namespace { constexpr char kMediaMetricsKey[] = "mediaparser"; +constexpr char kAttributeLogSessionId[] = "android.media.mediaparser.logSessionId"; constexpr char kAttributeParserName[] = "android.media.mediaparser.parserName"; constexpr char kAttributeCreatedByName[] = "android.media.mediaparser.createdByName"; constexpr char kAttributeParserPool[] = "android.media.mediaparser.parserPool"; @@ -65,11 +66,14 @@ public: } // namespace -JNI_FUNCTION(void, nativeSubmitMetrics, jstring parserNameJstring, jboolean createdByName, - jstring parserPoolJstring, jstring lastExceptionJstring, jlong resourceByteCount, - jlong durationMillis, jstring trackMimeTypesJstring, jstring trackCodecsJstring, - jstring alteredParameters, jint videoWidth, jint videoHeight) { +JNI_FUNCTION(void, nativeSubmitMetrics, jstring logSessionIdJstring, jstring parserNameJstring, + jboolean createdByName, jstring parserPoolJstring, jstring lastExceptionJstring, + jlong resourceByteCount, jlong durationMillis, jstring trackMimeTypesJstring, + jstring trackCodecsJstring, jstring alteredParameters, jint videoWidth, + jint videoHeight) { mediametrics_handle_t item(mediametrics_create(kMediaMetricsKey)); + mediametrics_setCString(item, kAttributeLogSessionId, + JstringHandle(env, logSessionIdJstring).value()); mediametrics_setCString(item, kAttributeParserName, JstringHandle(env, parserNameJstring).value()); mediametrics_setInt32(item, kAttributeCreatedByName, createdByName ? 1 : 0); |