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

Commit 17dcc73a authored by Android (Google) Code Review's avatar Android (Google) Code Review
Browse files

Merge change 8642

* changes:
  Fix issue 2001517: AudioTrack compatibility issue.
parents 54834482 3026a023
Loading
Loading
Loading
Loading
+54 −32
Original line number Diff line number Diff line
@@ -73496,7 +73496,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="-1"
 value="0"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73507,7 +73507,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="524288"
 value="32"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73518,7 +73518,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="8388608"
 value="512"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73529,7 +73529,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="0"
 value="1"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73540,7 +73540,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="262144"
 value="16"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73551,7 +73551,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="4194304"
 value="256"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73562,7 +73562,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="65536"
 value="4"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73573,7 +73573,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="1048576"
 value="64"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73584,7 +73584,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="262144"
 value="16"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73595,7 +73595,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="16777216"
 value="1024"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73606,7 +73606,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="131072"
 value="8"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73617,7 +73617,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="2097152"
 value="128"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73628,7 +73628,29 @@
 type="int"
 transient="false"
 volatile="false"
 value="196608"
 value="12"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="CHANNEL_IN_VOICE_DNLINK"
 type="int"
 transient="false"
 volatile="false"
 value="32768"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="CHANNEL_IN_VOICE_UPLINK"
 type="int"
 transient="false"
 volatile="false"
 value="16384"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73639,7 +73661,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="33554432"
 value="2048"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73650,7 +73672,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="67108864"
 value="4096"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73661,7 +73683,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="134217728"
 value="8192"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73672,7 +73694,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="63"
 value="252"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73683,7 +73705,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="255"
 value="1020"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73694,7 +73716,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="256"
 value="1024"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73705,7 +73727,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="16"
 value="64"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73716,7 +73738,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="32"
 value="128"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73727,7 +73749,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="0"
 value="1"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73738,7 +73760,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="4"
 value="16"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73749,7 +73771,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="1"
 value="4"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73760,7 +73782,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="64"
 value="256"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73771,7 +73793,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="2"
 value="8"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73782,7 +73804,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="128"
 value="512"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73793,7 +73815,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="8"
 value="32"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73804,7 +73826,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="1"
 value="4"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73815,7 +73837,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="51"
 value="204"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73826,7 +73848,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="3"
 value="12"
 static="true"
 final="true"
 deprecated="not deprecated"
@@ -73837,7 +73859,7 @@
 type="int"
 transient="false"
 volatile="false"
 value="263"
 value="1052"
 static="true"
 final="true"
 deprecated="not deprecated"
+23 −23
Original line number Diff line number Diff line
@@ -103,15 +103,15 @@ public:
    // Channel mask definitions must be kept in sync with JAVA values in /media/java/android/media/AudioFormat.java
    enum audio_channels {
        // output channels
        CHANNEL_OUT_FRONT_LEFT = 0x1,
        CHANNEL_OUT_FRONT_RIGHT = 0x2,
        CHANNEL_OUT_FRONT_CENTER = 0x4,
        CHANNEL_OUT_LOW_FREQUENCY = 0x8,
        CHANNEL_OUT_BACK_LEFT = 0x10,
        CHANNEL_OUT_BACK_RIGHT = 0x20,
        CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x40,
        CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x80,
        CHANNEL_OUT_BACK_CENTER = 0x100,
        CHANNEL_OUT_FRONT_LEFT = 0x4,
        CHANNEL_OUT_FRONT_RIGHT = 0x8,
        CHANNEL_OUT_FRONT_CENTER = 0x10,
        CHANNEL_OUT_LOW_FREQUENCY = 0x20,
        CHANNEL_OUT_BACK_LEFT = 0x40,
        CHANNEL_OUT_BACK_RIGHT = 0x80,
        CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x100,
        CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x200,
        CHANNEL_OUT_BACK_CENTER = 0x400,
        CHANNEL_OUT_MONO = CHANNEL_OUT_FRONT_LEFT,
        CHANNEL_OUT_STEREO = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT),
        CHANNEL_OUT_QUAD = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT |
@@ -128,20 +128,20 @@ public:
                CHANNEL_OUT_FRONT_LEFT_OF_CENTER | CHANNEL_OUT_FRONT_RIGHT_OF_CENTER | CHANNEL_OUT_BACK_CENTER),

        // input channels
        CHANNEL_IN_LEFT = 0x10000,
        CHANNEL_IN_RIGHT = 0x20000,
        CHANNEL_IN_FRONT = 0x40000,
        CHANNEL_IN_BACK = 0x80000,
        CHANNEL_IN_LEFT_PROCESSED = 0x100000,
        CHANNEL_IN_RIGHT_PROCESSED = 0x200000,
        CHANNEL_IN_FRONT_PROCESSED = 0x400000,
        CHANNEL_IN_BACK_PROCESSED = 0x800000,
        CHANNEL_IN_PRESSURE = 0x1000000,
        CHANNEL_IN_X_AXIS = 0x2000000,
        CHANNEL_IN_Y_AXIS = 0x4000000,
        CHANNEL_IN_Z_AXIS = 0x8000000,
        CHANNEL_IN_VOICE_UPLINK = 0x10000000,
        CHANNEL_IN_VOICE_DNLINK = 0x20000000,
        CHANNEL_IN_LEFT = 0x4,
        CHANNEL_IN_RIGHT = 0x8,
        CHANNEL_IN_FRONT = 0x10,
        CHANNEL_IN_BACK = 0x20,
        CHANNEL_IN_LEFT_PROCESSED = 0x40,
        CHANNEL_IN_RIGHT_PROCESSED = 0x80,
        CHANNEL_IN_FRONT_PROCESSED = 0x100,
        CHANNEL_IN_BACK_PROCESSED = 0x200,
        CHANNEL_IN_PRESSURE = 0x400,
        CHANNEL_IN_X_AXIS = 0x800,
        CHANNEL_IN_Y_AXIS = 0x1000,
        CHANNEL_IN_Z_AXIS = 0x2000,
        CHANNEL_IN_VOICE_UPLINK = 0x4000,
        CHANNEL_IN_VOICE_DNLINK = 0x8000,
        CHANNEL_IN_MONO = CHANNEL_IN_FRONT,
        CHANNEL_IN_STEREO = (CHANNEL_IN_LEFT | CHANNEL_IN_RIGHT),
        CHANNEL_IN_ALL = (CHANNEL_IN_LEFT | CHANNEL_IN_RIGHT | CHANNEL_IN_FRONT | CHANNEL_IN_BACK|
+27 −24
Original line number Diff line number Diff line
@@ -50,19 +50,20 @@ public class AudioFormat {
    @Deprecated    public static final int CHANNEL_CONFIGURATION_STEREO    = 3;

    /** Invalid audio channel mask */
    public static final int CHANNEL_INVALID   = -1;
    public static final int CHANNEL_INVALID = 0;
    /** Default audio channel mask */
    public static final int CHANNEL_OUT_DEFAULT = 1;

    // Channel mask definitions must be kept in sync with native values in include/media/AudioSystem.h
    public static final int CHANNEL_OUT_DEFAULT = 0;
    public static final int CHANNEL_OUT_FRONT_LEFT = 0x1;
    public static final int CHANNEL_OUT_FRONT_RIGHT = 0x2;
    public static final int CHANNEL_OUT_FRONT_CENTER = 0x4;
    public static final int CHANNEL_OUT_LOW_FREQUENCY = 0x8;
    public static final int CHANNEL_OUT_BACK_LEFT = 0x10;
    public static final int CHANNEL_OUT_BACK_RIGHT = 0x20;
    public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x40;
    public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x80;
    public static final int CHANNEL_OUT_BACK_CENTER = 0x100;
    public static final int CHANNEL_OUT_FRONT_LEFT = 0x4;
    public static final int CHANNEL_OUT_FRONT_RIGHT = 0x8;
    public static final int CHANNEL_OUT_FRONT_CENTER = 0x10;
    public static final int CHANNEL_OUT_LOW_FREQUENCY = 0x20;
    public static final int CHANNEL_OUT_BACK_LEFT = 0x40;
    public static final int CHANNEL_OUT_BACK_RIGHT = 0x80;
    public static final int CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x100;
    public static final int CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x200;
    public static final int CHANNEL_OUT_BACK_CENTER = 0x400;
    public static final int CHANNEL_OUT_MONO = CHANNEL_OUT_FRONT_LEFT;
    public static final int CHANNEL_OUT_STEREO = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT);
    public static final int CHANNEL_OUT_QUAD = (CHANNEL_OUT_FRONT_LEFT | CHANNEL_OUT_FRONT_RIGHT |
@@ -75,19 +76,21 @@ public class AudioFormat {
            CHANNEL_OUT_FRONT_CENTER | CHANNEL_OUT_LOW_FREQUENCY | CHANNEL_OUT_BACK_LEFT | CHANNEL_OUT_BACK_RIGHT |
            CHANNEL_OUT_FRONT_LEFT_OF_CENTER | CHANNEL_OUT_FRONT_RIGHT_OF_CENTER);

    public static final int CHANNEL_IN_DEFAULT = 0;
    public static final int CHANNEL_IN_LEFT = 0x10000;
    public static final int CHANNEL_IN_RIGHT = 0x20000;
    public static final int CHANNEL_IN_FRONT = 0x40000;
    public static final int CHANNEL_IN_BACK = 0x80000;
    public static final int CHANNEL_IN_LEFT_PROCESSED = 0x100000;
    public static final int CHANNEL_IN_RIGHT_PROCESSED = 0x200000;
    public static final int CHANNEL_IN_FRONT_PROCESSED = 0x400000;
    public static final int CHANNEL_IN_BACK_PROCESSED = 0x800000;
    public static final int CHANNEL_IN_PRESSURE = 0x1000000;
    public static final int CHANNEL_IN_X_AXIS = 0x2000000;
    public static final int CHANNEL_IN_Y_AXIS = 0x4000000;
    public static final int CHANNEL_IN_Z_AXIS = 0x8000000;
    public static final int CHANNEL_IN_DEFAULT = 1;
    public static final int CHANNEL_IN_LEFT = 0x4;
    public static final int CHANNEL_IN_RIGHT = 0x8;
    public static final int CHANNEL_IN_FRONT = 0x10;
    public static final int CHANNEL_IN_BACK = 0x20;
    public static final int CHANNEL_IN_LEFT_PROCESSED = 0x40;
    public static final int CHANNEL_IN_RIGHT_PROCESSED = 0x80;
    public static final int CHANNEL_IN_FRONT_PROCESSED = 0x100;
    public static final int CHANNEL_IN_BACK_PROCESSED = 0x200;
    public static final int CHANNEL_IN_PRESSURE = 0x400;
    public static final int CHANNEL_IN_X_AXIS = 0x800;
    public static final int CHANNEL_IN_Y_AXIS = 0x1000;
    public static final int CHANNEL_IN_Z_AXIS = 0x2000;
    public static final int CHANNEL_IN_VOICE_UPLINK = 0x4000;
    public static final int CHANNEL_IN_VOICE_DNLINK = 0x8000;
    public static final int CHANNEL_IN_MONO = CHANNEL_IN_FRONT;
    public static final int CHANNEL_IN_STEREO = (CHANNEL_IN_LEFT | CHANNEL_IN_RIGHT);

+19 −7
Original line number Diff line number Diff line
@@ -132,6 +132,10 @@ public class AudioRecord
     * The number of input audio channels (1 is mono, 2 is stereo)
     */
    private int mChannelCount = 1;
    /**
     * The audio channel mask
     */
    private int mChannels = AudioFormat.CHANNEL_IN_MONO;
    /**
     * The current audio channel configuration
     */
@@ -224,7 +228,7 @@ public class AudioRecord
        //TODO: update native initialization when information about hardware init failure
        //      due to capture device already open is available.
        int initResult = native_setup( new WeakReference<AudioRecord>(this), 
                mRecordSource, mSampleRate, mChannelCount, mAudioFormat, mNativeBufferSizeInBytes);
                mRecordSource, mSampleRate, mChannels, mAudioFormat, mNativeBufferSizeInBytes);
        if (initResult != SUCCESS) {
            loge("Error code "+initResult+" when initializing native AudioRecord object.");
            return; // with mState == STATE_UNINITIALIZED
@@ -239,6 +243,7 @@ public class AudioRecord
    // postconditions:
    //    mRecordSource is valid
    //    mChannelCount is valid
    //    mChannels is valid
    //    mAudioFormat is valid
    //    mSampleRate is valid
    private void audioParamCheck(int audioSource, int sampleRateInHz, 
@@ -264,18 +269,23 @@ public class AudioRecord

        //--------------
        // channel config
        mChannelConfiguration = channelConfig;

        switch (channelConfig) {
        case AudioFormat.CHANNEL_IN_DEFAULT:
        case AudioFormat.CHANNEL_IN_DEFAULT: // AudioFormat.CHANNEL_CONFIGURATION_DEFAULT
        case AudioFormat.CHANNEL_IN_MONO:
        case AudioFormat.CHANNEL_CONFIGURATION_MONO:
            mChannelCount = 1;
            mChannelConfiguration = AudioFormat.CHANNEL_IN_MONO;
            mChannels = AudioFormat.CHANNEL_IN_MONO;
            break;
        case AudioFormat.CHANNEL_IN_STEREO:
        case AudioFormat.CHANNEL_CONFIGURATION_STEREO:
            mChannelCount = 2;
            mChannelConfiguration = AudioFormat.CHANNEL_IN_STEREO;
            mChannels = AudioFormat.CHANNEL_IN_STEREO;
            break;
        default:
            mChannelCount = 0;
            mChannels = AudioFormat.CHANNEL_INVALID;
            mChannelConfiguration = AudioFormat.CHANNEL_INVALID;
            throw (new IllegalArgumentException("Unsupported channel configuration."));
        }
@@ -438,11 +448,13 @@ public class AudioRecord
    static public int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) {
        int channelCount = 0;
        switch(channelConfig) {
        case AudioFormat.CHANNEL_IN_DEFAULT:
        case AudioFormat.CHANNEL_IN_DEFAULT: // AudioFormat.CHANNEL_CONFIGURATION_DEFAULT
        case AudioFormat.CHANNEL_IN_MONO:
        case AudioFormat.CHANNEL_CONFIGURATION_MONO:
            channelCount = 1;
            break;
        case AudioFormat.CHANNEL_IN_STEREO:
        case AudioFormat.CHANNEL_CONFIGURATION_STEREO:
            channelCount = 2;
            break;
        case AudioFormat.CHANNEL_INVALID:
+19 −6
Original line number Diff line number Diff line
@@ -181,9 +181,14 @@ public class AudioTrack
     */
    private int mSampleRate = 22050;
    /**
     * The number of input audio channels (1 is mono, 2 is stereo).
     * The number of audio output channels (1 is mono, 2 is stereo).
     */
    private int mChannelCount = 1;
    /**
     * The audio channel mask.
     */
    private int mChannels = AudioFormat.CHANNEL_OUT_MONO;

    /**
     * The type of the audio stream to play. See
     *   {@link AudioManager#STREAM_VOICE_CALL}, {@link AudioManager#STREAM_SYSTEM},
@@ -266,7 +271,7 @@ public class AudioTrack

        // native initialization
        int initResult = native_setup(new WeakReference<AudioTrack>(this),
                mStreamType, mSampleRate, mChannelCount, mAudioFormat,
                mStreamType, mSampleRate, mChannels, mAudioFormat,
                mNativeBufferSizeInBytes, mDataLoadMode);
        if (initResult != SUCCESS) {
            loge("Error code "+initResult+" when initializing AudioTrack.");
@@ -286,6 +291,7 @@ public class AudioTrack
    // postconditions:
    //    mStreamType is valid
    //    mChannelCount is valid
    //    mChannels is valid
    //    mAudioFormat is valid
    //    mSampleRate is valid
    //    mDataLoadMode is valid
@@ -316,19 +322,24 @@ public class AudioTrack

        //--------------
        // channel config
        mChannelConfiguration = channelConfig;

        switch (channelConfig) {
        case AudioFormat.CHANNEL_OUT_DEFAULT:
        case AudioFormat.CHANNEL_OUT_DEFAULT: //AudioFormat.CHANNEL_CONFIGURATION_DEFAULT
        case AudioFormat.CHANNEL_OUT_MONO:
        case AudioFormat.CHANNEL_CONFIGURATION_MONO:
            mChannelCount = 1;
            mChannelConfiguration = AudioFormat.CHANNEL_OUT_MONO;
            mChannels = AudioFormat.CHANNEL_OUT_MONO;
            break;
        case AudioFormat.CHANNEL_OUT_STEREO:
        case AudioFormat.CHANNEL_CONFIGURATION_STEREO:
            mChannelCount = 2;
            mChannelConfiguration = AudioFormat.CHANNEL_OUT_STEREO;
            mChannels = AudioFormat.CHANNEL_OUT_STEREO;
            break;
        default:
            mChannelCount = 0;
            mChannelConfiguration = AudioFormat.CHANNEL_INVALID;
            mChannels = AudioFormat.CHANNEL_INVALID;
            mChannelConfiguration = AudioFormat.CHANNEL_CONFIGURATION_INVALID;
            throw(new IllegalArgumentException("Unsupported channel configuration."));
        }

@@ -546,9 +557,11 @@ public class AudioTrack
        int channelCount = 0;
        switch(channelConfig) {
        case AudioFormat.CHANNEL_OUT_MONO:
        case AudioFormat.CHANNEL_CONFIGURATION_MONO:
            channelCount = 1;
            break;
        case AudioFormat.CHANNEL_OUT_STEREO:
        case AudioFormat.CHANNEL_CONFIGURATION_STEREO:
            channelCount = 2;
            break;
        default: