Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9f5e9b24 authored by Santiago Seifert's avatar Santiago Seifert
Browse files

Add log session id to MediaParser

Bug: 167036690
Test: atest CtsMediaParserHostTestCases
Change-Id: Idee9c7248ee6107379c8e58410346b8c92d3c250
Merged-In: Idee9c7248ee6107379c8e58410346b8c92d3c250
parent 4d4782aa
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -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",
+17 −6
Original line number Diff line number Diff line
@@ -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,
+8 −4
Original line number Diff line number Diff line
@@ -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);