Merge "Add log session id to MediaParser" into sc-dev

This commit is contained in:
Santiago Seifert
2021-04-27 16:19:40 +00:00
committed by Android (Google) Code Review
3 changed files with 29 additions and 11 deletions

View File

@@ -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",

View File

@@ -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,

View File

@@ -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);