summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSantiago Seifert <aquilescanta@google.com>2021-04-27 16:19:40 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2021-04-27 16:19:40 +0000
commit7c8f0cb884ebe7aabb199f0d4d79c0092ae6feaf (patch)
tree276620d04ce5742eabba9715d3afdb1327419f60
parentc0515e80178b2f2282dc2f50c90539bdea4364a8 (diff)
parent9f5e9b242ba315fcacf00b86624cd6278d7aa4db (diff)
Merge "Add log session id to MediaParser" into sc-dev
-rw-r--r--apex/media/framework/Android.bp5
-rw-r--r--apex/media/framework/java/android/media/MediaParser.java23
-rw-r--r--apex/media/framework/jni/android_media_MediaParserJNI.cpp12
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);