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

Commit b3951122 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add TranscodingSession and EditingSession to MediaMetricsManager"

parents 698426a8 9db8e0d2
Loading
Loading
Loading
Loading
+12 −0
Original line number Diff line number Diff line
@@ -24376,6 +24376,11 @@ package android.media.effect {
package android.media.metrics {
  public final class EditingSession implements java.lang.AutoCloseable {
    method public void close();
    method @NonNull public android.media.metrics.LogSessionId getSessionId();
  }
  public abstract class Event {
    method @NonNull public android.os.Bundle getMetricsBundle();
    method @IntRange(from=0xffffffff) public long getTimeSinceCreatedMillis();
@@ -24387,8 +24392,10 @@ package android.media.metrics {
  }
  public final class MediaMetricsManager {
    method @NonNull public android.media.metrics.EditingSession createEditingSession();
    method @NonNull public android.media.metrics.PlaybackSession createPlaybackSession();
    method @NonNull public android.media.metrics.RecordingSession createRecordingSession();
    method @NonNull public android.media.metrics.TranscodingSession createTranscodingSession();
    field public static final long INVALID_TIMESTAMP = -1L; // 0xffffffffffffffffL
  }
@@ -24636,6 +24643,11 @@ package android.media.metrics {
    method @NonNull public android.media.metrics.TrackChangeEvent.Builder setWidth(@IntRange(from=0xffffffff, to=java.lang.Integer.MAX_VALUE) int);
  }
  public final class TranscodingSession implements java.lang.AutoCloseable {
    method public void close();
    method @NonNull public android.media.metrics.LogSessionId getSessionId();
  }
}
package android.media.midi {
+63 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.metrics;

import android.annotation.NonNull;
import android.annotation.Nullable;

import com.android.internal.util.AnnotationValidations;

import java.util.Objects;

/**
 * An instances of this class represents a session of media editing.
 */
public final class EditingSession implements AutoCloseable {
    private final @NonNull String mId;
    private final @NonNull MediaMetricsManager mManager;
    private final @NonNull LogSessionId mLogSessionId;

    /** @hide */
    public EditingSession(@NonNull String id, @NonNull MediaMetricsManager manager) {
        mId = id;
        mManager = manager;
        AnnotationValidations.validate(NonNull.class, null, mId);
        AnnotationValidations.validate(NonNull.class, null, mManager);
        mLogSessionId = new LogSessionId(mId);
    }

    public @NonNull LogSessionId getSessionId() {
        return mLogSessionId;
    }

    @Override
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        EditingSession that = (EditingSession) o;
        return Objects.equals(mId, that.mId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mId);
    }

    @Override
    public void close() {
    }
}
+5 −1
Original line number Diff line number Diff line
@@ -28,10 +28,14 @@ import android.media.metrics.TrackChangeEvent;
 */
interface IMediaMetricsManager {
    void reportPlaybackMetrics(in String sessionId, in PlaybackMetrics metrics, int userId);

    String getPlaybackSessionId(int userId);
    String getRecordingSessionId(int userId);
    void reportNetworkEvent(in String sessionId, in NetworkEvent event, int userId);
    void reportPlaybackErrorEvent(in String sessionId, in PlaybackErrorEvent event, int userId);
    void reportPlaybackStateEvent(in String sessionId, in PlaybackStateEvent event, int userId);
    void reportTrackChangeEvent(in String sessionId, in TrackChangeEvent event, int userId);

    String getTranscodingSessionId(int userId);
    String getEditingSessionId(int userId);
}
+28 −0
Original line number Diff line number Diff line
@@ -116,6 +116,34 @@ public final class MediaMetricsManager {
        }
    }

    /**
     * Creates a transcoding session.
     */
    @NonNull
    public TranscodingSession createTranscodingSession() {
        try {
            String id = mService.getTranscodingSessionId(mUserId);
            TranscodingSession session = new TranscodingSession(id, this);
            return session;
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Creates a editing session.
     */
    @NonNull
    public EditingSession createEditingSession() {
        try {
            String id = mService.getEditingSessionId(mUserId);
            EditingSession session = new EditingSession(id, this);
            return session;
        } catch (RemoteException e) {
            throw e.rethrowFromSystemServer();
        }
    }

    /**
     * Reports error event.
     * @hide
+63 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2021 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media.metrics;

import android.annotation.NonNull;
import android.annotation.Nullable;

import com.android.internal.util.AnnotationValidations;

import java.util.Objects;

/**
 * An instances of this class represents a session of media Transcoding.
 */
public final class TranscodingSession implements AutoCloseable {
    private final @NonNull String mId;
    private final @NonNull MediaMetricsManager mManager;
    private final @NonNull LogSessionId mLogSessionId;

    /** @hide */
    public TranscodingSession(@NonNull String id, @NonNull MediaMetricsManager manager) {
        mId = id;
        mManager = manager;
        AnnotationValidations.validate(NonNull.class, null, mId);
        AnnotationValidations.validate(NonNull.class, null, mManager);
        mLogSessionId = new LogSessionId(mId);
    }

    public @NonNull LogSessionId getSessionId() {
        return mLogSessionId;
    }

    @Override
    public boolean equals(@Nullable Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        TranscodingSession that = (TranscodingSession) o;
        return Objects.equals(mId, that.mId);
    }

    @Override
    public int hashCode() {
        return Objects.hash(mId);
    }

    @Override
    public void close() {
    }
}
Loading