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

Commit 0c1a6e1a authored by Shubang Lu's avatar Shubang Lu Committed by Android (Google) Code Review
Browse files

Merge "Change session ID string to ID object"

parents c9f94813 8f8057ee
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -69,10 +69,12 @@ package android.media {
    method public boolean advance(@NonNull android.media.MediaParser.SeekableInputReader) throws java.io.IOException;
    method @NonNull public static android.media.MediaParser create(@NonNull android.media.MediaParser.OutputConsumer, @NonNull java.lang.String...);
    method @NonNull public static android.media.MediaParser createByName(@NonNull String, @NonNull android.media.MediaParser.OutputConsumer);
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method @NonNull public String getParserName();
    method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat);
    method public void release();
    method public void seek(@NonNull android.media.MediaParser.SeekPoint);
    method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId);
    method @NonNull public android.media.MediaParser setParameter(@NonNull String, @NonNull Object);
    method public boolean supportsParameter(@NonNull String);
    field public static final String PARAMETER_ADTS_ENABLE_CBR_SEEKING = "android.media.mediaparser.adts.enableCbrSeeking";
+14 −0
Original line number Diff line number Diff line
@@ -21,6 +21,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.StringDef;
import android.media.MediaCodec.CryptoInfo;
import android.media.metrics.LogSessionId;
import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
@@ -74,6 +75,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Function;
@@ -1066,6 +1068,7 @@ public final class MediaParser {
    private boolean mReleased;

    // MediaMetrics fields.
    @NonNull private LogSessionId mLogSessionId = LogSessionId.LOG_SESSION_ID_NONE;
    private final boolean mCreatedByName;
    private final SparseArray<Format> mTrackFormats;
    private String mLastObservedExceptionName;
@@ -1328,6 +1331,7 @@ public final class MediaParser {
                                MEDIAMETRICS_PARAMETER_LIST_MAX_LENGTH));

        nativeSubmitMetrics(
                // TODO: mLogSessionId,
                mParserName,
                mCreatedByName,
                String.join(MEDIAMETRICS_ELEMENT_SEPARATOR, mParserNamesPool),
@@ -1341,6 +1345,15 @@ public final class MediaParser {
                videoHeight);
    }

    public void setLogSessionId(@NonNull LogSessionId sessionId) {
        this.mLogSessionId = Objects.requireNonNull(sessionId);
    }

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

    // Private methods.

    private MediaParser(
@@ -2184,6 +2197,7 @@ public final class MediaParser {
    // Native methods.

    private native void nativeSubmitMetrics(
            // TODO: String logSessionId,
            String parserName,
            boolean createdByName,
            String parserPool,
+17 −9
Original line number Diff line number Diff line
@@ -20578,6 +20578,7 @@ package android.media {
    method public int getChannelConfiguration();
    method public int getChannelCount();
    method @NonNull public android.media.AudioFormat getFormat();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public android.os.PersistableBundle getMetrics();
    method public static int getMinBufferSize(int, int, int);
    method public int getNotificationMarkerPosition();
@@ -20600,6 +20601,7 @@ package android.media {
    method public void release();
    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioRecord.OnRoutingChangedListener);
    method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId);
    method public int setNotificationMarkerPosition(int);
    method public int setPositionNotificationPeriod(int);
    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
@@ -20715,6 +20717,7 @@ package android.media {
    method public int getChannelCount();
    method public int getDualMonoMode();
    method @NonNull public android.media.AudioFormat getFormat();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public static float getMaxVolume();
    method public android.os.PersistableBundle getMetrics();
    method public static int getMinBufferSize(int, int, int);
@@ -20752,6 +20755,7 @@ package android.media {
    method public int setAuxEffectSendLevel(@FloatRange(from=0.0) float);
    method public int setBufferSizeInFrames(@IntRange(from=0) int);
    method public boolean setDualMonoMode(int);
    method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId);
    method public int setLoopPoints(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0xffffffff) int);
    method public int setNotificationMarkerPosition(int);
    method public void setOffloadDelayPadding(@IntRange(from=0) int, @IntRange(from=0) int);
@@ -21961,7 +21965,7 @@ package android.media {
    method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
    method public int getOfflineLicenseState(@NonNull byte[]);
    method public int getOpenSessionCount();
    method @Nullable public android.media.metrics.PlaybackComponent getPlaybackComponent(@NonNull byte[]);
    method @Nullable public android.media.MediaDrm.PlaybackComponent getPlaybackComponent(@NonNull byte[]);
    method @NonNull public byte[] getPropertyByteArray(String);
    method @NonNull public String getPropertyString(@NonNull String);
    method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
@@ -22166,6 +22170,11 @@ package android.media {
    method public void onSessionLostState(@NonNull android.media.MediaDrm, @NonNull byte[]);
  }
  public final class MediaDrm.PlaybackComponent {
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId);
  }
  public static final class MediaDrm.ProvisionRequest {
    method @NonNull public byte[] getData();
    method @NonNull public String getDefaultUrl();
@@ -22190,7 +22199,7 @@ package android.media {
    ctor public MediaDrmResetException(String);
  }
  public final class MediaExtractor implements android.media.metrics.PlaybackComponent {
  public final class MediaExtractor {
    ctor public MediaExtractor();
    method public boolean advance();
    method protected void finalize();
@@ -22198,8 +22207,8 @@ package android.media {
    method public long getCachedDuration();
    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
    method public android.media.DrmInitData getDrmInitData();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public android.os.PersistableBundle getMetrics();
    method @NonNull public String getPlaybackId();
    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
    method public int getSampleFlags();
@@ -22220,8 +22229,8 @@ package android.media {
    method public void setDataSource(@NonNull android.content.res.AssetFileDescriptor) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
    method public void setDataSource(@NonNull java.io.FileDescriptor) throws java.io.IOException;
    method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) throws java.io.IOException;
    method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId);
    method public void setMediaCas(@NonNull android.media.MediaCas);
    method public void setPlaybackId(@NonNull String);
    method public void unselectTrack(int);
    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
    field public static final int SAMPLE_FLAG_PARTIAL_FRAME = 4; // 0x4
@@ -22823,6 +22832,7 @@ package android.media {
    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
    method public static final int getAudioSourceMax();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
    method public android.os.PersistableBundle getMetrics();
    method public android.media.AudioDeviceInfo getPreferredDevice();
@@ -22845,6 +22855,7 @@ package android.media {
    method public void setCaptureRate(double);
    method public void setInputSurface(@NonNull android.view.Surface);
    method public void setLocation(float, float);
    method public void setLogSessionId(@NonNull android.media.metrics.LogSessionId);
    method public void setMaxDuration(int) throws java.lang.IllegalArgumentException;
    method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
    method public void setNextOutputFile(java.io.FileDescriptor) throws java.io.IOException;
@@ -24476,6 +24487,8 @@ package android.media.metrics {
  }
  public final class LogSessionId {
    method @NonNull public String getStringId();
    field @NonNull public static final android.media.metrics.LogSessionId LOG_SESSION_ID_NONE;
  }
  public class MediaMetricsManager {
@@ -24509,11 +24522,6 @@ package android.media.metrics {
    method @NonNull public android.media.metrics.NetworkEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
  }
  public interface PlaybackComponent {
    method @NonNull public String getPlaybackId();
    method public void setPlaybackId(@NonNull String);
  }
  public final class PlaybackErrorEvent extends android.media.metrics.Event implements android.os.Parcelable {
    method public int describeContents();
    method public int getErrorCode();
+1 −1
Original line number Diff line number Diff line
@@ -1483,7 +1483,7 @@ package android.media.audiopolicy {
package android.media.metrics {

  public final class LogSessionId {
    method @NonNull public String getStringId();
    ctor public LogSessionId(@NonNull String);
  }

}
+22 −11
Original line number Diff line number Diff line
@@ -32,6 +32,7 @@ import android.content.Context;
import android.media.MediaRecorder.Source;
import android.media.audiopolicy.AudioMix;
import android.media.audiopolicy.AudioPolicy;
import android.media.metrics.LogSessionId;
import android.media.permission.Identity;
import android.media.projection.MediaProjection;
import android.os.Binder;
@@ -282,9 +283,9 @@ public class AudioRecord implements AudioRouting, MicrophoneDirection,

    /**
     * The log session id used for metrics.
     * A null or empty string here means it is not set.
     * {@link LogSessionId#LOG_SESSION_ID_NONE} here means it is not set.
     */
    private String mLogSessionId;
    @NonNull private LogSessionId mLogSessionId = LogSessionId.LOG_SESSION_ID_NONE;

    //---------------------------------------------------------
    // Constructor, Finalize
@@ -1963,24 +1964,34 @@ public class AudioRecord implements AudioRouting, MicrophoneDirection,
    }

    /**
     * Sets a string handle to this AudioRecord for metrics collection.
     * Sets a {@link LogSessionId} instance to this AudioRecord for metrics collection.
     *
     * @param logSessionId a string which is used to identify this object
     *        to the metrics service.  Proper generated Ids must be obtained
     *        from the Java metrics service and should be considered opaque.
     *        Use null to remove the logSessionId association.
     * @param logSessionId a {@link LogSessionId} instance which is used to
     *        identify this object to the metrics service. Proper generated
     *        Ids must be obtained from the Java metrics service and should
     *        be considered opaque. Use
     *        {@link LogSessionId#LOG_SESSION_ID_NONE} to remove the
     *        logSessionId association.
     * @throws IllegalStateException if AudioRecord not initialized.
     *
     * @hide
     */
    public void setLogSessionId(@Nullable String logSessionId) {
    public void setLogSessionId(@NonNull LogSessionId logSessionId) {
        Objects.requireNonNull(logSessionId);
        if (mState == STATE_UNINITIALIZED) {
            throw new IllegalStateException("AudioRecord not initialized");
        }
        native_setLogSessionId(logSessionId);
        String stringId = logSessionId.getStringId();
        native_setLogSessionId(stringId);
        mLogSessionId = logSessionId;
    }

    /**
     * Returns the {@link LogSessionId}.
     */
    @NonNull
    public LogSessionId getLogSessionId() {
        return mLogSessionId;
    }

    //---------------------------------------------------------
    // Interface definitions
    //--------------------
Loading