diff options
| -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); |