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

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

Merge "Change session ID string to ID object" into sc-dev

parents 1e76f995 c56cc00a
Loading
Loading
Loading
Loading
+2 −0
Original line number Original line 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 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 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 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 String getParserName();
    method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat);
    method @NonNull public static java.util.List<java.lang.String> getParserNames(@NonNull android.media.MediaFormat);
    method public void release();
    method public void release();
    method public void seek(@NonNull android.media.MediaParser.SeekPoint);
    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 @NonNull public android.media.MediaParser setParameter(@NonNull String, @NonNull Object);
    method public boolean supportsParameter(@NonNull String);
    method public boolean supportsParameter(@NonNull String);
    field public static final String PARAMETER_ADTS_ENABLE_CBR_SEEKING = "android.media.mediaparser.adts.enableCbrSeeking";
    field public static final String PARAMETER_ADTS_ENABLE_CBR_SEEKING = "android.media.mediaparser.adts.enableCbrSeeking";
+14 −0
Original line number Original line Diff line number Diff line
@@ -21,6 +21,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.Nullable;
import android.annotation.StringDef;
import android.annotation.StringDef;
import android.media.MediaCodec.CryptoInfo;
import android.media.MediaCodec.CryptoInfo;
import android.media.metrics.LogSessionId;
import android.os.Build;
import android.os.Build;
import android.text.TextUtils;
import android.text.TextUtils;
import android.util.Log;
import android.util.Log;
@@ -74,6 +75,7 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.List;
import java.util.Map;
import java.util.Map;
import java.util.Objects;
import java.util.UUID;
import java.util.UUID;
import java.util.concurrent.ThreadLocalRandom;
import java.util.concurrent.ThreadLocalRandom;
import java.util.function.Function;
import java.util.function.Function;
@@ -1066,6 +1068,7 @@ public final class MediaParser {
    private boolean mReleased;
    private boolean mReleased;


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


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


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

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

    // Private methods.
    // Private methods.


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


    private native void nativeSubmitMetrics(
    private native void nativeSubmitMetrics(
            // TODO: String logSessionId,
            String parserName,
            String parserName,
            boolean createdByName,
            boolean createdByName,
            String parserPool,
            String parserPool,
+17 −9
Original line number Original line Diff line number Diff line
@@ -20579,6 +20579,7 @@ package android.media {
    method public int getChannelConfiguration();
    method public int getChannelConfiguration();
    method public int getChannelCount();
    method public int getChannelCount();
    method @NonNull public android.media.AudioFormat getFormat();
    method @NonNull public android.media.AudioFormat getFormat();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public android.os.PersistableBundle getMetrics();
    method public android.os.PersistableBundle getMetrics();
    method public static int getMinBufferSize(int, int, int);
    method public static int getMinBufferSize(int, int, int);
    method public int getNotificationMarkerPosition();
    method public int getNotificationMarkerPosition();
@@ -20601,6 +20602,7 @@ package android.media {
    method public void release();
    method public void release();
    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
    method public void removeOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener);
    method @Deprecated public void removeOnRoutingChangedListener(android.media.AudioRecord.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 setNotificationMarkerPosition(int);
    method public int setPositionNotificationPeriod(int);
    method public int setPositionNotificationPeriod(int);
    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
    method public boolean setPreferredDevice(android.media.AudioDeviceInfo);
@@ -20716,6 +20718,7 @@ package android.media {
    method public int getChannelCount();
    method public int getChannelCount();
    method public int getDualMonoMode();
    method public int getDualMonoMode();
    method @NonNull public android.media.AudioFormat getFormat();
    method @NonNull public android.media.AudioFormat getFormat();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public static float getMaxVolume();
    method public static float getMaxVolume();
    method public android.os.PersistableBundle getMetrics();
    method public android.os.PersistableBundle getMetrics();
    method public static int getMinBufferSize(int, int, int);
    method public static int getMinBufferSize(int, int, int);
@@ -20753,6 +20756,7 @@ package android.media {
    method public int setAuxEffectSendLevel(@FloatRange(from=0.0) float);
    method public int setAuxEffectSendLevel(@FloatRange(from=0.0) float);
    method public int setBufferSizeInFrames(@IntRange(from=0) int);
    method public int setBufferSizeInFrames(@IntRange(from=0) int);
    method public boolean setDualMonoMode(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 setLoopPoints(@IntRange(from=0) int, @IntRange(from=0) int, @IntRange(from=0xffffffff) int);
    method public int setNotificationMarkerPosition(int);
    method public int setNotificationMarkerPosition(int);
    method public void setOffloadDelayPadding(@IntRange(from=0) int, @IntRange(from=0) int);
    method public void setOffloadDelayPadding(@IntRange(from=0) int, @IntRange(from=0) int);
@@ -21307,7 +21311,7 @@ package android.media {
    method @NonNull public String getDiagnosticInfo();
    method @NonNull public String getDiagnosticInfo();
  }
  }
  public final class MediaCodec implements android.media.metrics.PlaybackComponent {
  public final class MediaCodec {
    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, @Nullable android.media.MediaCrypto, int);
    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
    method public void configure(@Nullable android.media.MediaFormat, @Nullable android.view.Surface, int, @Nullable android.media.MediaDescrambler);
    method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
    method @NonNull public static android.media.MediaCodec createByCodecName(@NonNull String) throws java.io.IOException;
@@ -21333,7 +21337,6 @@ package android.media {
    method @NonNull public android.media.MediaFormat getOutputFormat(int);
    method @NonNull public android.media.MediaFormat getOutputFormat(int);
    method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
    method @NonNull public android.media.MediaCodec.OutputFrame getOutputFrame(int);
    method @Nullable public android.media.Image getOutputImage(int);
    method @Nullable public android.media.Image getOutputImage(int);
    method public String getPlaybackId();
    method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
    method @NonNull public android.media.MediaCodec.QueueRequest getQueueRequest(int);
    method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
    method @Nullable public static android.media.Image mapHardwareBuffer(@NonNull android.hardware.HardwareBuffer);
    method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
    method public void queueInputBuffer(int, int, int, long, int) throws android.media.MediaCodec.CryptoException;
@@ -21350,7 +21353,6 @@ package android.media {
    method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
    method public void setOnFrameRenderedListener(@Nullable android.media.MediaCodec.OnFrameRenderedListener, @Nullable android.os.Handler);
    method public void setOutputSurface(@NonNull android.view.Surface);
    method public void setOutputSurface(@NonNull android.view.Surface);
    method public void setParameters(@Nullable android.os.Bundle);
    method public void setParameters(@Nullable android.os.Bundle);
    method public void setPlaybackId(@NonNull String);
    method public void setVideoScalingMode(int);
    method public void setVideoScalingMode(int);
    method public void signalEndOfInputStream();
    method public void signalEndOfInputStream();
    method public void start();
    method public void start();
@@ -21964,7 +21966,7 @@ package android.media {
    method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
    method @NonNull public java.util.List<byte[]> getOfflineLicenseKeySetIds();
    method public int getOfflineLicenseState(@NonNull byte[]);
    method public int getOfflineLicenseState(@NonNull byte[]);
    method public int getOpenSessionCount();
    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 byte[] getPropertyByteArray(String);
    method @NonNull public String getPropertyString(@NonNull String);
    method @NonNull public String getPropertyString(@NonNull String);
    method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
    method @NonNull public android.media.MediaDrm.ProvisionRequest getProvisionRequest();
@@ -22169,6 +22171,11 @@ package android.media {
    method public void onSessionLostState(@NonNull android.media.MediaDrm, @NonNull byte[]);
    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 {
  public static final class MediaDrm.ProvisionRequest {
    method @NonNull public byte[] getData();
    method @NonNull public byte[] getData();
    method @NonNull public String getDefaultUrl();
    method @NonNull public String getDefaultUrl();
@@ -22201,6 +22208,7 @@ package android.media {
    method public long getCachedDuration();
    method public long getCachedDuration();
    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
    method public android.media.MediaExtractor.CasInfo getCasInfo(int);
    method public android.media.DrmInitData getDrmInitData();
    method public android.media.DrmInitData getDrmInitData();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public android.os.PersistableBundle getMetrics();
    method public android.os.PersistableBundle getMetrics();
    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
    method @Nullable public java.util.Map<java.util.UUID,byte[]> getPsshInfo();
    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
    method public boolean getSampleCryptoInfo(@NonNull android.media.MediaCodec.CryptoInfo);
@@ -22222,6 +22230,7 @@ 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 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) throws java.io.IOException;
    method public void setDataSource(@NonNull java.io.FileDescriptor, long, long) 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 setMediaCas(@NonNull android.media.MediaCas);
    method public void unselectTrack(int);
    method public void unselectTrack(int);
    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
    field public static final int SAMPLE_FLAG_ENCRYPTED = 2; // 0x2
@@ -22825,6 +22834,7 @@ package android.media {
    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
    method public java.util.List<android.media.MicrophoneInfo> getActiveMicrophones() throws java.io.IOException;
    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
    method @Nullable public android.media.AudioRecordingConfiguration getActiveRecordingConfiguration();
    method public static final int getAudioSourceMax();
    method public static final int getAudioSourceMax();
    method @NonNull public android.media.metrics.LogSessionId getLogSessionId();
    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
    method public int getMaxAmplitude() throws java.lang.IllegalStateException;
    method public android.os.PersistableBundle getMetrics();
    method public android.os.PersistableBundle getMetrics();
    method public android.media.AudioDeviceInfo getPreferredDevice();
    method public android.media.AudioDeviceInfo getPreferredDevice();
@@ -22847,6 +22857,7 @@ package android.media {
    method public void setCaptureRate(double);
    method public void setCaptureRate(double);
    method public void setInputSurface(@NonNull android.view.Surface);
    method public void setInputSurface(@NonNull android.view.Surface);
    method public void setLocation(float, float);
    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 setMaxDuration(int) throws java.lang.IllegalArgumentException;
    method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
    method public void setMaxFileSize(long) throws java.lang.IllegalArgumentException;
    method public void setNextOutputFile(java.io.FileDescriptor) throws java.io.IOException;
    method public void setNextOutputFile(java.io.FileDescriptor) throws java.io.IOException;
@@ -24478,6 +24489,8 @@ package android.media.metrics {
  }
  }
  public final class LogSessionId {
  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 {
  public class MediaMetricsManager {
@@ -24511,11 +24524,6 @@ package android.media.metrics {
    method @NonNull public android.media.metrics.NetworkEvent.Builder setTimeSinceCreatedMillis(@IntRange(from=0xffffffff) long);
    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 {
  public final class PlaybackErrorEvent extends android.media.metrics.Event implements android.os.Parcelable {
    method public int describeContents();
    method public int describeContents();
    method public int getErrorCode();
    method public int getErrorCode();
+1 −1
Original line number Original line Diff line number Diff line
@@ -1478,7 +1478,7 @@ package android.media.audiopolicy {
package android.media.metrics {
package android.media.metrics {


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


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


    /**
    /**
     * The log session id used for metrics.
     * 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
    // 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
     * @param logSessionId a {@link LogSessionId} instance which is used to
     *        to the metrics service.  Proper generated Ids must be obtained
     *        identify this object to the metrics service. Proper generated
     *        from the Java metrics service and should be considered opaque.
     *        Ids must be obtained from the Java metrics service and should
     *        Use null to remove the logSessionId association.
     *        be considered opaque. Use
     *        {@link LogSessionId#LOG_SESSION_ID_NONE} to remove the
     *        logSessionId association.
     * @throws IllegalStateException if AudioRecord not initialized.
     * @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) {
        if (mState == STATE_UNINITIALIZED) {
            throw new IllegalStateException("AudioRecord not initialized");
            throw new IllegalStateException("AudioRecord not initialized");
        }
        }
        native_setLogSessionId(logSessionId);
        String stringId = logSessionId.getStringId();
        native_setLogSessionId(stringId);
        mLogSessionId = logSessionId;
        mLogSessionId = logSessionId;
    }
    }


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

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