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

Commit adcab823 authored by Andy Hung's avatar Andy Hung Committed by Android (Google) Code Review
Browse files

Merge changes I21b77905,Ia98ec539

* changes:
  VolumeShaper: Use VolumeAutomation interface and unhide
  VolumeShaper: Remove PlayerProxy constructor
parents d627294d fef734ce
Loading
Loading
Loading
Loading
+55 −2
Original line number Diff line number Diff line
@@ -20999,13 +20999,14 @@ package android.media {
    field public long nanoTime;
  }
  public class AudioTrack implements android.media.AudioRouting {
  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
    ctor public deprecated AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
    ctor public deprecated AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
    ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
    method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
    method public int attachAuxEffect(int);
    method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
    method public void flush();
    method public int getAudioFormat();
    method public int getAudioSessionId();
@@ -22346,7 +22347,7 @@ package android.media {
    field public static final int MUXER_OUTPUT_WEBM = 1; // 0x1
  }
  public class MediaPlayer {
  public class MediaPlayer implements android.media.VolumeAutomation {
    ctor public MediaPlayer();
    method public void addTimedTextSource(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
    method public void addTimedTextSource(android.content.Context, android.net.Uri, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
@@ -22358,6 +22359,7 @@ package android.media {
    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
    method public static android.media.MediaPlayer create(android.content.Context, int);
    method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
    method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
    method public void deselectTrack(int) throws java.lang.IllegalStateException;
    method public int getAudioSessionId();
    method public android.media.BufferingParams getBufferingParams();
@@ -23185,6 +23187,10 @@ package android.media {
    ctor public UnsupportedSchemeException(java.lang.String);
  }
  public abstract interface VolumeAutomation {
    method public abstract android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
  }
  public abstract class VolumeProvider {
    ctor public VolumeProvider(int, int, int);
    method public final int getCurrentVolume();
@@ -23198,6 +23204,53 @@ package android.media {
    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
  }
  public final class VolumeShaper implements java.lang.AutoCloseable {
    method public void apply(android.media.VolumeShaper.Operation);
    method public void close();
    method public float getVolume();
    method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean);
  }
  public static final class VolumeShaper.Configuration implements android.os.Parcelable {
    method public int describeContents();
    method public double getDurationMs();
    method public int getInterpolatorType();
    method public static int getMaximumCurvePoints();
    method public float[] getTimes();
    method public float[] getVolumes();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Configuration> CREATOR;
    field public static final android.media.VolumeShaper.Configuration CUBIC_RAMP;
    field public static final int INTERPOLATOR_TYPE_CUBIC = 2; // 0x2
    field public static final int INTERPOLATOR_TYPE_CUBIC_MONOTONIC = 3; // 0x3
    field public static final int INTERPOLATOR_TYPE_LINEAR = 1; // 0x1
    field public static final int INTERPOLATOR_TYPE_STEP = 0; // 0x0
    field public static final android.media.VolumeShaper.Configuration LINEAR_RAMP;
    field public static final android.media.VolumeShaper.Configuration SCURVE_RAMP;
    field public static final android.media.VolumeShaper.Configuration SINE_RAMP;
  }
  public static final class VolumeShaper.Configuration.Builder {
    ctor public VolumeShaper.Configuration.Builder();
    ctor public VolumeShaper.Configuration.Builder(android.media.VolumeShaper.Configuration);
    method public android.media.VolumeShaper.Configuration build();
    method public android.media.VolumeShaper.Configuration.Builder invertVolumes();
    method public android.media.VolumeShaper.Configuration.Builder reflectTimes();
    method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
    method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
    method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]);
    method public android.media.VolumeShaper.Configuration.Builder setDurationMs(double);
    method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
  }
  public static final class VolumeShaper.Operation implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Operation> CREATOR;
    field public static final android.media.VolumeShaper.Operation PLAY;
    field public static final android.media.VolumeShaper.Operation REVERSE;
  }
}
package android.media.audiofx {
+55 −2
Original line number Diff line number Diff line
@@ -22687,13 +22687,14 @@ package android.media {
    field public long nanoTime;
  }
  public class AudioTrack implements android.media.AudioRouting {
  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
    ctor public deprecated AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
    ctor public deprecated AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
    ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
    method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
    method public int attachAuxEffect(int);
    method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
    method public void flush();
    method public int getAudioFormat();
    method public int getAudioSessionId();
@@ -24034,7 +24035,7 @@ package android.media {
    field public static final int MUXER_OUTPUT_WEBM = 1; // 0x1
  }
  public class MediaPlayer {
  public class MediaPlayer implements android.media.VolumeAutomation {
    ctor public MediaPlayer();
    method public void addTimedTextSource(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
    method public void addTimedTextSource(android.content.Context, android.net.Uri, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
@@ -24046,6 +24047,7 @@ package android.media {
    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
    method public static android.media.MediaPlayer create(android.content.Context, int);
    method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
    method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
    method public void deselectTrack(int) throws java.lang.IllegalStateException;
    method public int getAudioSessionId();
    method public android.media.BufferingParams getBufferingParams();
@@ -24884,6 +24886,10 @@ package android.media {
    ctor public UnsupportedSchemeException(java.lang.String);
  }
  public abstract interface VolumeAutomation {
    method public abstract android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
  }
  public abstract class VolumeProvider {
    ctor public VolumeProvider(int, int, int);
    method public final int getCurrentVolume();
@@ -24897,6 +24903,53 @@ package android.media {
    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
  }
  public final class VolumeShaper implements java.lang.AutoCloseable {
    method public void apply(android.media.VolumeShaper.Operation);
    method public void close();
    method public float getVolume();
    method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean);
  }
  public static final class VolumeShaper.Configuration implements android.os.Parcelable {
    method public int describeContents();
    method public double getDurationMs();
    method public int getInterpolatorType();
    method public static int getMaximumCurvePoints();
    method public float[] getTimes();
    method public float[] getVolumes();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Configuration> CREATOR;
    field public static final android.media.VolumeShaper.Configuration CUBIC_RAMP;
    field public static final int INTERPOLATOR_TYPE_CUBIC = 2; // 0x2
    field public static final int INTERPOLATOR_TYPE_CUBIC_MONOTONIC = 3; // 0x3
    field public static final int INTERPOLATOR_TYPE_LINEAR = 1; // 0x1
    field public static final int INTERPOLATOR_TYPE_STEP = 0; // 0x0
    field public static final android.media.VolumeShaper.Configuration LINEAR_RAMP;
    field public static final android.media.VolumeShaper.Configuration SCURVE_RAMP;
    field public static final android.media.VolumeShaper.Configuration SINE_RAMP;
  }
  public static final class VolumeShaper.Configuration.Builder {
    ctor public VolumeShaper.Configuration.Builder();
    ctor public VolumeShaper.Configuration.Builder(android.media.VolumeShaper.Configuration);
    method public android.media.VolumeShaper.Configuration build();
    method public android.media.VolumeShaper.Configuration.Builder invertVolumes();
    method public android.media.VolumeShaper.Configuration.Builder reflectTimes();
    method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
    method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
    method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]);
    method public android.media.VolumeShaper.Configuration.Builder setDurationMs(double);
    method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
  }
  public static final class VolumeShaper.Operation implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Operation> CREATOR;
    field public static final android.media.VolumeShaper.Operation PLAY;
    field public static final android.media.VolumeShaper.Operation REVERSE;
  }
}
package android.media.audiofx {
+55 −2
Original line number Diff line number Diff line
@@ -21095,13 +21095,14 @@ package android.media {
    field public long nanoTime;
  }
  public class AudioTrack implements android.media.AudioRouting {
  public class AudioTrack implements android.media.AudioRouting android.media.VolumeAutomation {
    ctor public deprecated AudioTrack(int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
    ctor public deprecated AudioTrack(int, int, int, int, int, int, int) throws java.lang.IllegalArgumentException;
    ctor public AudioTrack(android.media.AudioAttributes, android.media.AudioFormat, int, int, int) throws java.lang.IllegalArgumentException;
    method public void addOnRoutingChangedListener(android.media.AudioRouting.OnRoutingChangedListener, android.os.Handler);
    method public deprecated void addOnRoutingChangedListener(android.media.AudioTrack.OnRoutingChangedListener, android.os.Handler);
    method public int attachAuxEffect(int);
    method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
    method public void flush();
    method public int getAudioFormat();
    method public int getAudioSessionId();
@@ -22442,7 +22443,7 @@ package android.media {
    field public static final int MUXER_OUTPUT_WEBM = 1; // 0x1
  }
  public class MediaPlayer {
  public class MediaPlayer implements android.media.VolumeAutomation {
    ctor public MediaPlayer();
    method public void addTimedTextSource(java.lang.String, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
    method public void addTimedTextSource(android.content.Context, android.net.Uri, java.lang.String) throws java.io.IOException, java.lang.IllegalArgumentException, java.lang.IllegalStateException;
@@ -22454,6 +22455,7 @@ package android.media {
    method public static android.media.MediaPlayer create(android.content.Context, android.net.Uri, android.view.SurfaceHolder, android.media.AudioAttributes, int);
    method public static android.media.MediaPlayer create(android.content.Context, int);
    method public static android.media.MediaPlayer create(android.content.Context, int, android.media.AudioAttributes, int);
    method public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
    method public void deselectTrack(int) throws java.lang.IllegalStateException;
    method public int getAudioSessionId();
    method public android.media.BufferingParams getBufferingParams();
@@ -23281,6 +23283,10 @@ package android.media {
    ctor public UnsupportedSchemeException(java.lang.String);
  }
  public abstract interface VolumeAutomation {
    method public abstract android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper.Configuration);
  }
  public abstract class VolumeProvider {
    ctor public VolumeProvider(int, int, int);
    method public final int getCurrentVolume();
@@ -23294,6 +23300,53 @@ package android.media {
    field public static final int VOLUME_CONTROL_RELATIVE = 1; // 0x1
  }
  public final class VolumeShaper implements java.lang.AutoCloseable {
    method public void apply(android.media.VolumeShaper.Operation);
    method public void close();
    method public float getVolume();
    method public void replace(android.media.VolumeShaper.Configuration, android.media.VolumeShaper.Operation, boolean);
  }
  public static final class VolumeShaper.Configuration implements android.os.Parcelable {
    method public int describeContents();
    method public double getDurationMs();
    method public int getInterpolatorType();
    method public static int getMaximumCurvePoints();
    method public float[] getTimes();
    method public float[] getVolumes();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Configuration> CREATOR;
    field public static final android.media.VolumeShaper.Configuration CUBIC_RAMP;
    field public static final int INTERPOLATOR_TYPE_CUBIC = 2; // 0x2
    field public static final int INTERPOLATOR_TYPE_CUBIC_MONOTONIC = 3; // 0x3
    field public static final int INTERPOLATOR_TYPE_LINEAR = 1; // 0x1
    field public static final int INTERPOLATOR_TYPE_STEP = 0; // 0x0
    field public static final android.media.VolumeShaper.Configuration LINEAR_RAMP;
    field public static final android.media.VolumeShaper.Configuration SCURVE_RAMP;
    field public static final android.media.VolumeShaper.Configuration SINE_RAMP;
  }
  public static final class VolumeShaper.Configuration.Builder {
    ctor public VolumeShaper.Configuration.Builder();
    ctor public VolumeShaper.Configuration.Builder(android.media.VolumeShaper.Configuration);
    method public android.media.VolumeShaper.Configuration build();
    method public android.media.VolumeShaper.Configuration.Builder invertVolumes();
    method public android.media.VolumeShaper.Configuration.Builder reflectTimes();
    method public android.media.VolumeShaper.Configuration.Builder scaleToEndVolume(float);
    method public android.media.VolumeShaper.Configuration.Builder scaleToStartVolume(float);
    method public android.media.VolumeShaper.Configuration.Builder setCurve(float[], float[]);
    method public android.media.VolumeShaper.Configuration.Builder setDurationMs(double);
    method public android.media.VolumeShaper.Configuration.Builder setInterpolatorType(int);
  }
  public static final class VolumeShaper.Operation implements android.os.Parcelable {
    method public int describeContents();
    method public void writeToParcel(android.os.Parcel, int);
    field public static final android.os.Parcelable.Creator<android.media.VolumeShaper.Operation> CREATOR;
    field public static final android.media.VolumeShaper.Operation PLAY;
    field public static final android.media.VolumeShaper.Operation REVERSE;
  }
}
package android.media.audiofx {
+7 −0
Original line number Diff line number Diff line
@@ -79,6 +79,7 @@ import com.android.internal.annotations.GuardedBy;
 */
public class AudioTrack extends PlayerBase
                        implements AudioRouting
                                 , VolumeAutomation
{
    //---------------------------------------------------------
    // Constants
@@ -1753,6 +1754,12 @@ public class AudioTrack extends PlayerBase
        return native_getVolumeShaperState(id);
    }

    @Override
    public @NonNull VolumeShaper createVolumeShaper(
            @NonNull VolumeShaper.Configuration configuration) {
        return new VolumeShaper(configuration, this);
    }

    /**
     * Sets the playback sample rate for this track. This sets the sampling rate at which
     * the audio data will be consumed and played back
+7 −0
Original line number Diff line number Diff line
@@ -579,6 +579,7 @@ import java.util.Vector;
 */
public class MediaPlayer extends PlayerBase
                         implements SubtitleController.Listener
                                  , VolumeAutomation
{
    /**
       Constant to retrieve only the new metadata since the last
@@ -1373,6 +1374,12 @@ public class MediaPlayer extends PlayerBase
        return native_getVolumeShaperState(id);
    }

    @Override
    public @NonNull VolumeShaper createVolumeShaper(
            @NonNull VolumeShaper.Configuration configuration) {
        return new VolumeShaper(configuration, this);
    }

    private native int native_applyVolumeShaper(
            @NonNull VolumeShaper.Configuration configuration,
            @NonNull VolumeShaper.Operation operation);
Loading