public class android.media.AudioTrack extends android.media.PlayerBase implements android.media.AudioRouting, android.media.VolumeAutomation
  minor version: 0
  major version: 59
  flags: flags: (0x0021) ACC_PUBLIC, ACC_SUPER
  this_class: android.media.AudioTrack
  super_class: android.media.PlayerBase
{
  private static final float GAIN_MIN;
    descriptor: F
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0.0

  private static final float GAIN_MAX;
    descriptor: F
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 1.0

  public static final int CHANNEL_COUNT_MAX;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL

  public static final int PLAYSTATE_STOPPED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int PLAYSTATE_PAUSED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int PLAYSTATE_PLAYING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  public static final int MODE_STATIC;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int MODE_STREAM;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int STATE_UNINITIALIZED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int STATE_INITIALIZED;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int STATE_NO_STATIC_DATA;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  public static final int SUCCESS;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int ERROR;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -1

  public static final int ERROR_BAD_VALUE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -2

  public static final int ERROR_INVALID_OPERATION;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -3

  public static final int ERROR_DEAD_OBJECT;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -6

  public static final int ERROR_WOULD_BLOCK;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: -7

  private static final int ERROR_NATIVESETUP_AUDIOSYSTEM;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -16

  private static final int ERROR_NATIVESETUP_INVALIDCHANNELMASK;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -17

  private static final int ERROR_NATIVESETUP_INVALIDFORMAT;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -18

  private static final int ERROR_NATIVESETUP_INVALIDSTREAMTYPE;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -19

  private static final int ERROR_NATIVESETUP_NATIVEINITFAILED;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: -20

  private static final int NATIVE_EVENT_MARKER;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 3

  private static final int NATIVE_EVENT_NEW_POS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int NATIVE_EVENT_MORE_DATA;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  private static final int NATIVE_EVENT_NEW_IAUDIOTRACK;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 6

  private static final int NATIVE_EVENT_STREAM_END;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 7

  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "android.media.AudioTrack"

  public static final int WRITE_BLOCKING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int WRITE_NON_BLOCKING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int PERFORMANCE_MODE_NONE;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 0

  public static final int PERFORMANCE_MODE_LOW_LATENCY;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 1

  public static final int PERFORMANCE_MODE_POWER_SAVING;
    descriptor: I
    flags: (0x0019) ACC_PUBLIC, ACC_STATIC, ACC_FINAL
    ConstantValue: 2

  private static final int AUDIO_OUTPUT_FLAG_FAST;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 4

  private static final int AUDIO_OUTPUT_FLAG_DEEP_BUFFER;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 8

  private static final float HEADER_V2_SIZE_BYTES;
    descriptor: F
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 20.0

  private int mState;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mPlayState;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.Object mPlayStateLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int mNativeBufferSizeInBytes;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mNativeBufferSizeInFrames;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private android.media.AudioTrack$NativePositionEventHandlerDelegate mEventHandlerDelegate;
    descriptor: Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;
    flags: (0x0002) ACC_PRIVATE

  private final android.os.Looper mInitializationLooper;
    descriptor: Landroid/os/Looper;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private int mSampleRate;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mChannelCount;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mChannelMask;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mStreamType;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mDataLoadMode;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mChannelConfiguration;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mChannelIndexMask;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mAudioFormat;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mSessionId;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private java.nio.ByteBuffer mAvSyncHeader;
    descriptor: Ljava/nio/ByteBuffer;
    flags: (0x0002) ACC_PRIVATE

  private int mAvSyncBytesRemaining;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  private int mOffset;
    descriptor: I
    flags: (0x0002) ACC_PRIVATE

  protected long mNativeTrackInJavaObj;
    descriptor: J
    flags: (0x0004) ACC_PROTECTED

  private long mJniData;
    descriptor: J
    flags: (0x0002) ACC_PRIVATE

  private static final int SUPPORTED_OUT_CHANNELS;
    descriptor: I
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: 7420

  private android.media.AudioDeviceInfo mPreferredDevice;
    descriptor: Landroid/media/AudioDeviceInfo;
    flags: (0x0002) ACC_PRIVATE

  private android.util.ArrayMap<android.media.AudioRouting$OnRoutingChangedListener, android.media.NativeRoutingEventHandlerDelegate> mRoutingChangeListeners;
    descriptor: Landroid/util/ArrayMap;
    flags: (0x0002) ACC_PRIVATE
    Signature: Landroid/util/ArrayMap<Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/media/NativeRoutingEventHandlerDelegate;>;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.GuardedBy(value = "mRoutingChangeListeners")

  private java.util.concurrent.Executor mStreamEventExec;
    descriptor: Ljava/util/concurrent/Executor;
    flags: (0x0002) ACC_PRIVATE

  private android.media.AudioTrack$StreamEventCallback mStreamEventCb;
    descriptor: Landroid/media/AudioTrack$StreamEventCallback;
    flags: (0x0002) ACC_PRIVATE

  private final java.lang.Object mStreamEventCbLock;
    descriptor: Ljava/lang/Object;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  static void <clinit>();
    descriptor: ()V
    flags: (0x0008) ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 102
            invokestatic android.media.AudioTrack.native_get_FCC_8:()I
            putstatic android.media.AudioTrack.CHANNEL_COUNT_MAX:I
         1: .line 1002
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public void <init>(int, int, int, int, int, int);
    descriptor: (IIIIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=8, locals=7, args_size=7
        start local 0 // android.media.AudioTrack this
        start local 1 // int streamType
        start local 2 // int sampleRateInHz
        start local 3 // int channelConfig
        start local 4 // int audioFormat
        start local 5 // int bufferSizeInBytes
        start local 6 // int mode
         0: .line 457
            aload 0 /* this */
            iload 1 /* streamType */
            iload 2 /* sampleRateInHz */
            iload 3 /* channelConfig */
            iload 4 /* audioFormat */
         1: .line 458
            iload 5 /* bufferSizeInBytes */
            iload 6 /* mode */
            iconst_0
            invokespecial android.media.AudioTrack.<init>:(IIIIIII)V
         2: .line 459
            return
        end local 6 // int mode
        end local 5 // int bufferSizeInBytes
        end local 4 // int audioFormat
        end local 3 // int channelConfig
        end local 2 // int sampleRateInHz
        end local 1 // int streamType
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    3     0               this  Landroid/media/AudioTrack;
            0    3     1         streamType  I
            0    3     2     sampleRateInHz  I
            0    3     3      channelConfig  I
            0    3     4        audioFormat  I
            0    3     5  bufferSizeInBytes  I
            0    3     6               mode  I
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
                   Name  Flags
      streamType         
      sampleRateInHz     
      channelConfig      
      audioFormat        
      bufferSizeInBytes  
      mode               

  public void <init>(int, int, int, int, int, int, int);
    descriptor: (IIIIIII)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=8, args_size=8
        start local 0 // android.media.AudioTrack this
        start local 1 // int streamType
        start local 2 // int sampleRateInHz
        start local 3 // int channelConfig
        start local 4 // int audioFormat
        start local 5 // int bufferSizeInBytes
        start local 6 // int mode
        start local 7 // int sessionId
         0: .line 516
            aload 0 /* this */
            new android.media.AudioAttributes$Builder
            dup
            invokespecial android.media.AudioAttributes$Builder.<init>:()V
         1: .line 517
            iload 1 /* streamType */
            invokevirtual android.media.AudioAttributes$Builder.setLegacyStreamType:(I)Landroid/media/AudioAttributes$Builder;
         2: .line 518
            invokevirtual android.media.AudioAttributes$Builder.build:()Landroid/media/AudioAttributes;
         3: .line 519
            new android.media.AudioFormat$Builder
            dup
            invokespecial android.media.AudioFormat$Builder.<init>:()V
         4: .line 520
            iload 3 /* channelConfig */
            invokevirtual android.media.AudioFormat$Builder.setChannelMask:(I)Landroid/media/AudioFormat$Builder;
         5: .line 521
            iload 4 /* audioFormat */
            invokevirtual android.media.AudioFormat$Builder.setEncoding:(I)Landroid/media/AudioFormat$Builder;
         6: .line 522
            iload 2 /* sampleRateInHz */
            invokevirtual android.media.AudioFormat$Builder.setSampleRate:(I)Landroid/media/AudioFormat$Builder;
         7: .line 523
            invokevirtual android.media.AudioFormat$Builder.build:()Landroid/media/AudioFormat;
         8: .line 524
            iload 5 /* bufferSizeInBytes */
         9: .line 525
            iload 6 /* mode */
            iload 7 /* sessionId */
            invokespecial android.media.AudioTrack.<init>:(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;III)V
        10: .line 526
            iload 1 /* streamType */
            ldc "AudioTrack"
            ldc "AudioTrack()"
            invokestatic android.media.AudioTrack.deprecateStreamTypeForPlayback:(ILjava/lang/String;Ljava/lang/String;)V
        11: .line 527
            return
        end local 7 // int sessionId
        end local 6 // int mode
        end local 5 // int bufferSizeInBytes
        end local 4 // int audioFormat
        end local 3 // int channelConfig
        end local 2 // int sampleRateInHz
        end local 1 // int streamType
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   12     0               this  Landroid/media/AudioTrack;
            0   12     1         streamType  I
            0   12     2     sampleRateInHz  I
            0   12     3      channelConfig  I
            0   12     4        audioFormat  I
            0   12     5  bufferSizeInBytes  I
            0   12     6               mode  I
            0   12     7          sessionId  I
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
                   Name  Flags
      streamType         
      sampleRateInHz     
      channelConfig      
      audioFormat        
      bufferSizeInBytes  
      mode               
      sessionId          

  public void <init>(android.media.AudioAttributes, android.media.AudioFormat, int, int, int);
    descriptor: (Landroid/media/AudioAttributes;Landroid/media/AudioFormat;III)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=6, args_size=6
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioAttributes attributes
        start local 2 // android.media.AudioFormat format
        start local 3 // int bufferSizeInBytes
        start local 4 // int mode
        start local 5 // int sessionId
         0: .line 562
            aload 0 /* this */
            aload 1 /* attributes */
            aload 2 /* format */
            iload 3 /* bufferSizeInBytes */
            iload 4 /* mode */
            iload 5 /* sessionId */
            iconst_0
            invokespecial android.media.AudioTrack.<init>:(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;IIIZ)V
         1: .line 563
            return
        end local 5 // int sessionId
        end local 4 // int mode
        end local 3 // int bufferSizeInBytes
        end local 2 // android.media.AudioFormat format
        end local 1 // android.media.AudioAttributes attributes
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0    2     0               this  Landroid/media/AudioTrack;
            0    2     1         attributes  Landroid/media/AudioAttributes;
            0    2     2             format  Landroid/media/AudioFormat;
            0    2     3  bufferSizeInBytes  I
            0    2     4               mode  I
            0    2     5          sessionId  I
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
                   Name  Flags
      attributes         
      format             
      bufferSizeInBytes  
      mode               
      sessionId          

  private void <init>(android.media.AudioAttributes, android.media.AudioFormat, int, int, int, boolean);
    descriptor: (Landroid/media/AudioAttributes;Landroid/media/AudioFormat;IIIZ)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=13, locals=16, args_size=7
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioAttributes attributes
        start local 2 // android.media.AudioFormat format
        start local 3 // int bufferSizeInBytes
        start local 4 // int mode
        start local 5 // int sessionId
        start local 6 // boolean offload
         0: .line 568
            aload 0 /* this */
            aload 1 /* attributes */
            iconst_1
            invokespecial android.media.PlayerBase.<init>:(Landroid/media/AudioAttributes;I)V
         1: .line 308
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mState:I
         2: .line 313
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mPlayState:I
         3: .line 317
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield android.media.AudioTrack.mPlayStateLock:Ljava/lang/Object;
         4: .line 323
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mNativeBufferSizeInBytes:I
         5: .line 324
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mNativeBufferSizeInFrames:I
         6: .line 341
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mChannelCount:I
         7: .line 345
            aload 0 /* this */
            iconst_4
            putfield android.media.AudioTrack.mChannelMask:I
         8: .line 354
            aload 0 /* this */
            iconst_3
            putfield android.media.AudioTrack.mStreamType:I
         9: .line 359
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mDataLoadMode:I
        10: .line 365
            aload 0 /* this */
            iconst_4
            putfield android.media.AudioTrack.mChannelConfiguration:I
        11: .line 369
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mChannelIndexMask:I
        12: .line 380
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mSessionId:I
        13: .line 384
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
        14: .line 388
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
        15: .line 392
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mOffset:I
        16: .line 2765
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mPreferredDevice:Landroid/media/AudioDeviceInfo;
        17: .line 2853
            aload 0 /* this */
            new android.util.ArrayMap
            dup
            invokespecial android.util.ArrayMap.<init>:()V
            putfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
        18: .line 3014
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield android.media.AudioTrack.mStreamEventCbLock:Ljava/lang/Object;
        19: .line 571
            aload 2 /* format */
            ifnonnull 21
        20: .line 572
            new java.lang.IllegalArgumentException
            dup
            ldc "Illegal null AudioFormat"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        21: .line 576
      StackMap locals: android.media.AudioTrack android.media.AudioAttributes android.media.AudioFormat int int int int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
            aload 2 /* format */
            iload 3 /* bufferSizeInBytes */
            iload 4 /* mode */
            invokestatic android.media.AudioTrack.shouldEnablePowerSaving:(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;II)Z
            ifeq 30
        22: .line 577
            aload 0 /* this */
            new android.media.AudioAttributes$Builder
            dup
            aload 0 /* this */
            getfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
            invokespecial android.media.AudioAttributes$Builder.<init>:(Landroid/media/AudioAttributes;)V
        23: .line 578
            aload 0 /* this */
            getfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
            invokevirtual android.media.AudioAttributes.getAllFlags:()I
        24: .line 579
            sipush 512
        25: .line 578
            ior
        26: .line 580
            sipush -257
        27: .line 578
            iand
            invokevirtual android.media.AudioAttributes$Builder.replaceFlags:(I)Landroid/media/AudioAttributes$Builder;
        28: .line 581
            invokevirtual android.media.AudioAttributes$Builder.build:()Landroid/media/AudioAttributes;
        29: .line 577
            putfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
        30: .line 586
      StackMap locals:
      StackMap stack:
            invokestatic android.os.Looper.myLooper:()Landroid/os/Looper;
            dup
            astore 7 /* looper */
        start local 7 // android.os.Looper looper
        31: ifnonnull 33
        32: .line 587
            invokestatic android.os.Looper.getMainLooper:()Landroid/os/Looper;
            astore 7 /* looper */
        33: .line 590
      StackMap locals: android.os.Looper
      StackMap stack:
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getSampleRate:()I
            istore 8 /* rate */
        start local 8 // int rate
        34: .line 591
            iload 8 /* rate */
            ifne 36
        35: .line 592
            iconst_0
            istore 8 /* rate */
        36: .line 595
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 9 /* channelIndexMask */
        start local 9 // int channelIndexMask
        37: .line 596
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getPropertySetMask:()I
        38: .line 597
            bipush 8
        39: .line 596
            iand
            ifeq 41
        40: .line 598
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getChannelIndexMask:()I
            istore 9 /* channelIndexMask */
        41: .line 600
      StackMap locals: int
      StackMap stack:
            iconst_0
            istore 10 /* channelMask */
        start local 10 // int channelMask
        42: .line 601
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getPropertySetMask:()I
        43: .line 602
            iconst_4
        44: .line 601
            iand
            ifeq 47
        45: .line 603
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getChannelMask:()I
            istore 10 /* channelMask */
        46: .line 604
            goto 49
      StackMap locals: int
      StackMap stack:
        47: iload 9 /* channelIndexMask */
            ifne 49
        48: .line 605
            bipush 12
            istore 10 /* channelMask */
        49: .line 608
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 11 /* encoding */
        start local 11 // int encoding
        50: .line 609
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getPropertySetMask:()I
            iconst_1
            iand
            ifeq 52
        51: .line 610
            aload 2 /* format */
            invokevirtual android.media.AudioFormat.getEncoding:()I
            istore 11 /* encoding */
        52: .line 612
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            iload 8 /* rate */
            iload 10 /* channelMask */
            iload 9 /* channelIndexMask */
            iload 11 /* encoding */
            iload 4 /* mode */
            invokevirtual android.media.AudioTrack.audioParamCheck:(IIIII)V
        53: .line 613
            aload 0 /* this */
            iconst_m1
            putfield android.media.AudioTrack.mStreamType:I
        54: .line 615
            aload 0 /* this */
            iload 3 /* bufferSizeInBytes */
            invokevirtual android.media.AudioTrack.audioBuffSizeCheck:(I)V
        55: .line 617
            aload 0 /* this */
            aload 7 /* looper */
            putfield android.media.AudioTrack.mInitializationLooper:Landroid/os/Looper;
        56: .line 619
            iload 5 /* sessionId */
            ifge 58
        57: .line 620
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Invalid audio session ID: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* sessionId */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        58: .line 623
      StackMap locals:
      StackMap stack:
            iconst_1
            newarray 10
            dup
            iconst_0
            aload 0 /* this */
            getfield android.media.AudioTrack.mSampleRate:I
            iastore
            astore 12 /* sampleRate */
        start local 12 // int[] sampleRate
        59: .line 624
            iconst_1
            newarray 10
            astore 13 /* session */
        start local 13 // int[] session
        60: .line 625
            aload 13 /* session */
            iconst_0
            iload 5 /* sessionId */
            iastore
        61: .line 627
            aload 0 /* this */
            new java.lang.ref.WeakReference
            dup
            aload 0 /* this */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
            aload 0 /* this */
            getfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
        62: .line 628
            aload 12 /* sampleRate */
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelMask:I
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelIndexMask:I
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
        63: .line 629
            aload 0 /* this */
            getfield android.media.AudioTrack.mNativeBufferSizeInBytes:I
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            aload 13 /* session */
            lconst_0
        64: .line 630
            iload 6 /* offload */
        65: .line 627
            invokevirtual android.media.AudioTrack.native_setup:(Ljava/lang/Object;Ljava/lang/Object;[IIIIII[IJZ)I
            istore 14 /* initResult */
        start local 14 // int initResult
        66: .line 631
            iload 14 /* initResult */
            ifeq 69
        67: .line 632
            new java.lang.StringBuilder
            dup
            ldc "Error code "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 14 /* initResult */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " when initializing AudioTrack."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        68: .line 633
            return
        69: .line 636
      StackMap locals: int[] int[] int
      StackMap stack:
            aload 0 /* this */
            aload 12 /* sampleRate */
            iconst_0
            iaload
            putfield android.media.AudioTrack.mSampleRate:I
        70: .line 637
            aload 0 /* this */
            aload 13 /* session */
            iconst_0
            iaload
            putfield android.media.AudioTrack.mSessionId:I
        71: .line 639
            aload 0 /* this */
            getfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
            invokevirtual android.media.AudioAttributes.getFlags:()I
            bipush 16
            iand
            ifeq 77
        72: .line 641
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            invokestatic android.media.AudioFormat.isEncodingLinearFrames:(I)Z
            ifeq 75
        73: .line 642
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelCount:I
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            invokestatic android.media.AudioFormat.getBytesPerSample:(I)I
            imul
            istore 15 /* frameSizeInBytes */
        start local 15 // int frameSizeInBytes
        74: .line 643
            goto 76
        end local 15 // int frameSizeInBytes
        75: .line 644
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 15 /* frameSizeInBytes */
        start local 15 // int frameSizeInBytes
        76: .line 646
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            ldc 20.0
            iload 15 /* frameSizeInBytes */
            i2f
            fdiv
            f2d
            invokestatic java.lang.Math.ceil:(D)D
            d2i
            iload 15 /* frameSizeInBytes */
            imul
            putfield android.media.AudioTrack.mOffset:I
        end local 15 // int frameSizeInBytes
        77: .line 649
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            ifne 80
        78: .line 650
            aload 0 /* this */
            iconst_2
            putfield android.media.AudioTrack.mState:I
        79: .line 651
            goto 81
        80: .line 652
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mState:I
        81: .line 655
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.baseRegisterPlayer:()V
        82: .line 656
            return
        end local 14 // int initResult
        end local 13 // int[] session
        end local 12 // int[] sampleRate
        end local 11 // int encoding
        end local 10 // int channelMask
        end local 9 // int channelIndexMask
        end local 8 // int rate
        end local 7 // android.os.Looper looper
        end local 6 // boolean offload
        end local 5 // int sessionId
        end local 4 // int mode
        end local 3 // int bufferSizeInBytes
        end local 2 // android.media.AudioFormat format
        end local 1 // android.media.AudioAttributes attributes
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   83     0               this  Landroid/media/AudioTrack;
            0   83     1         attributes  Landroid/media/AudioAttributes;
            0   83     2             format  Landroid/media/AudioFormat;
            0   83     3  bufferSizeInBytes  I
            0   83     4               mode  I
            0   83     5          sessionId  I
            0   83     6            offload  Z
           31   83     7             looper  Landroid/os/Looper;
           34   83     8               rate  I
           37   83     9   channelIndexMask  I
           42   83    10        channelMask  I
           50   83    11           encoding  I
           59   83    12         sampleRate  [I
           60   83    13            session  [I
           66   83    14         initResult  I
           74   75    15   frameSizeInBytes  I
           76   77    15   frameSizeInBytes  I
    Exceptions:
      throws java.lang.IllegalArgumentException
    MethodParameters:
                   Name  Flags
      attributes         
      format             
      bufferSizeInBytes  
      mode               
      sessionId          
      offload            

  void <init>(long);
    descriptor: (J)V
    flags: (0x0000) 
    Code:
      stack=4, locals=4, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // long nativeTrackInJavaObj
         0: .line 670
            aload 0 /* this */
            new android.media.AudioAttributes$Builder
            dup
            invokespecial android.media.AudioAttributes$Builder.<init>:()V
            invokevirtual android.media.AudioAttributes$Builder.build:()Landroid/media/AudioAttributes;
         1: .line 671
            iconst_1
            invokespecial android.media.PlayerBase.<init>:(Landroid/media/AudioAttributes;I)V
         2: .line 308
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mState:I
         3: .line 313
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mPlayState:I
         4: .line 317
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield android.media.AudioTrack.mPlayStateLock:Ljava/lang/Object;
         5: .line 323
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mNativeBufferSizeInBytes:I
         6: .line 324
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mNativeBufferSizeInFrames:I
         7: .line 341
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mChannelCount:I
         8: .line 345
            aload 0 /* this */
            iconst_4
            putfield android.media.AudioTrack.mChannelMask:I
         9: .line 354
            aload 0 /* this */
            iconst_3
            putfield android.media.AudioTrack.mStreamType:I
        10: .line 359
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mDataLoadMode:I
        11: .line 365
            aload 0 /* this */
            iconst_4
            putfield android.media.AudioTrack.mChannelConfiguration:I
        12: .line 369
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mChannelIndexMask:I
        13: .line 380
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mSessionId:I
        14: .line 384
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
        15: .line 388
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
        16: .line 392
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mOffset:I
        17: .line 2765
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mPreferredDevice:Landroid/media/AudioDeviceInfo;
        18: .line 2853
            aload 0 /* this */
            new android.util.ArrayMap
            dup
            invokespecial android.util.ArrayMap.<init>:()V
            putfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
        19: .line 3014
            aload 0 /* this */
            new java.lang.Object
            dup
            invokespecial java.lang.Object.<init>:()V
            putfield android.media.AudioTrack.mStreamEventCbLock:Ljava/lang/Object;
        20: .line 673
            aload 0 /* this */
            lconst_0
            putfield android.media.AudioTrack.mNativeTrackInJavaObj:J
        21: .line 674
            aload 0 /* this */
            lconst_0
            putfield android.media.AudioTrack.mJniData:J
        22: .line 678
            invokestatic android.os.Looper.myLooper:()Landroid/os/Looper;
            dup
            astore 3 /* looper */
        start local 3 // android.os.Looper looper
        23: ifnonnull 25
        24: .line 679
            invokestatic android.os.Looper.getMainLooper:()Landroid/os/Looper;
            astore 3 /* looper */
        25: .line 681
      StackMap locals: android.media.AudioTrack long android.os.Looper
      StackMap stack:
            aload 0 /* this */
            aload 3 /* looper */
            putfield android.media.AudioTrack.mInitializationLooper:Landroid/os/Looper;
        26: .line 684
            lload 1 /* nativeTrackInJavaObj */
            lconst_0
            lcmp
            ifeq 30
        27: .line 685
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.baseRegisterPlayer:()V
        28: .line 686
            aload 0 /* this */
            lload 1 /* nativeTrackInJavaObj */
            invokevirtual android.media.AudioTrack.deferred_connect:(J)V
        29: .line 687
            goto 31
        30: .line 688
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mState:I
        31: .line 690
      StackMap locals:
      StackMap stack:
            return
        end local 3 // android.os.Looper looper
        end local 1 // long nativeTrackInJavaObj
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   32     0                  this  Landroid/media/AudioTrack;
            0   32     1  nativeTrackInJavaObj  J
           23   32     3                looper  Landroid/os/Looper;
    MethodParameters:
                      Name  Flags
      nativeTrackInJavaObj  

  void deferred_connect(long);
    descriptor: (J)V
    flags: (0x0000) 
    Code:
      stack=13, locals=6, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // long nativeTrackInJavaObj
         0: .line 696
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpeq 20
         1: .line 699
            iconst_1
            newarray 10
            astore 3 /* session */
        start local 3 // int[] session
         2: .line 700
            iconst_1
            newarray 10
            astore 4 /* rates */
        start local 4 // int[] rates
         3: .line 701
            aload 0 /* this */
            new java.lang.ref.WeakReference
            dup
            aload 0 /* this */
            invokespecial java.lang.ref.WeakReference.<init>:(Ljava/lang/Object;)V
         4: .line 702
            aconst_null
         5: .line 703
            aload 4 /* rates */
         6: .line 704
            iconst_0
         7: .line 705
            iconst_0
         8: .line 706
            iconst_0
         9: .line 707
            iconst_0
        10: .line 708
            iconst_0
        11: .line 709
            aload 3 /* session */
        12: .line 710
            lload 1 /* nativeTrackInJavaObj */
        13: .line 711
            iconst_0
        14: .line 701
            invokevirtual android.media.AudioTrack.native_setup:(Ljava/lang/Object;Ljava/lang/Object;[IIIIII[IJZ)I
            istore 5 /* initResult */
        start local 5 // int initResult
        15: .line 712
            iload 5 /* initResult */
            ifeq 18
        16: .line 713
            new java.lang.StringBuilder
            dup
            ldc "Error code "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 5 /* initResult */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " when initializing AudioTrack."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        17: .line 714
            return
        18: .line 717
      StackMap locals: int[] int[] int
      StackMap stack:
            aload 0 /* this */
            aload 3 /* session */
            iconst_0
            iaload
            putfield android.media.AudioTrack.mSessionId:I
        19: .line 719
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mState:I
        end local 5 // int initResult
        end local 4 // int[] rates
        end local 3 // int[] session
        20: .line 721
      StackMap locals:
      StackMap stack:
            return
        end local 1 // long nativeTrackInJavaObj
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot                  Name  Signature
            0   21     0                  this  Landroid/media/AudioTrack;
            0   21     1  nativeTrackInJavaObj  J
            2   20     3               session  [I
            3   20     4                 rates  [I
           15   20     5            initResult  I
    MethodParameters:
                      Name  Flags
      nativeTrackInJavaObj  

  private static boolean shouldEnablePowerSaving(android.media.AudioAttributes, android.media.AudioFormat, int, int);
    descriptor: (Landroid/media/AudioAttributes;Landroid/media/AudioFormat;II)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=4, locals=6, args_size=4
        start local 0 // android.media.AudioAttributes attributes
        start local 1 // android.media.AudioFormat format
        start local 2 // int bufferSizeInBytes
        start local 3 // int mode
         0: .line 1012
            aload 0 /* attributes */
            ifnull 7
         1: .line 1013
            aload 0 /* attributes */
            invokevirtual android.media.AudioAttributes.getAllFlags:()I
            ifne 6
         2: .line 1014
            aload 0 /* attributes */
            invokevirtual android.media.AudioAttributes.getUsage:()I
            iconst_1
            if_icmpne 6
         3: .line 1015
            aload 0 /* attributes */
            invokevirtual android.media.AudioAttributes.getContentType:()I
            ifeq 7
         4: .line 1016
            aload 0 /* attributes */
            invokevirtual android.media.AudioAttributes.getContentType:()I
            iconst_2
            if_icmpeq 7
         5: .line 1017
            aload 0 /* attributes */
            invokevirtual android.media.AudioAttributes.getContentType:()I
            iconst_3
            if_icmpeq 7
         6: .line 1018
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
         7: .line 1022
      StackMap locals:
      StackMap stack:
            aload 1 /* format */
            ifnull 12
         8: .line 1023
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getSampleRate:()I
            ifeq 12
         9: .line 1024
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getEncoding:()I
            invokestatic android.media.AudioFormat.isEncodingLinearPcm:(I)Z
            ifeq 12
        10: .line 1025
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getEncoding:()I
            invokestatic android.media.AudioFormat.isValidEncoding:(I)Z
            ifeq 12
        11: .line 1026
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getChannelCount:()I
            iconst_1
            if_icmpge 13
        12: .line 1027
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        13: .line 1031
      StackMap locals:
      StackMap stack:
            iload 3 /* mode */
            iconst_1
            if_icmpeq 15
        14: .line 1032
            iconst_0
            ireturn
        15: .line 1037
      StackMap locals:
      StackMap stack:
            iload 2 /* bufferSizeInBytes */
            ifeq 28
        16: .line 1041
            ldc 100
        17: .line 1042
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getChannelCount:()I
            i2l
        18: .line 1041
            lmul
        19: .line 1043
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getEncoding:()I
            invokestatic android.media.AudioFormat.getBytesPerSample:(I)I
            i2l
        20: .line 1041
            lmul
        21: .line 1044
            aload 1 /* format */
            invokevirtual android.media.AudioFormat.getSampleRate:()I
            i2l
        22: .line 1041
            lmul
        23: .line 1045
            ldc 1000
        24: .line 1041
            ldiv
        25: .line 1040
            lstore 4 /* bufferTargetSize */
        start local 4 // long bufferTargetSize
        26: .line 1046
            iload 2 /* bufferSizeInBytes */
            i2l
            lload 4 /* bufferTargetSize */
            lcmp
            ifge 28
        27: .line 1047
            iconst_0
            ireturn
        end local 4 // long bufferTargetSize
        28: .line 1051
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 3 // int mode
        end local 2 // int bufferSizeInBytes
        end local 1 // android.media.AudioFormat format
        end local 0 // android.media.AudioAttributes attributes
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   29     0         attributes  Landroid/media/AudioAttributes;
            0   29     1             format  Landroid/media/AudioFormat;
            0   29     2  bufferSizeInBytes  I
            0   29     3               mode  I
           26   28     4   bufferTargetSize  J
    MethodParameters:
                   Name  Flags
      attributes         
      format             
      bufferSizeInBytes  
      mode               

  private void audioParamCheck(int, int, int, int, int);
    descriptor: (IIIII)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=5, locals=8, args_size=6
        start local 0 // android.media.AudioTrack this
        start local 1 // int sampleRateInHz
        start local 2 // int channelConfig
        start local 3 // int channelIndexMask
        start local 4 // int audioFormat
        start local 5 // int mode
         0: .line 1066
            iload 1 /* sampleRateInHz */
            sipush 4000
            if_icmplt 2
         1: .line 1067
            iload 1 /* sampleRateInHz */
            ldc 192000
            if_icmple 6
         2: .line 1068
      StackMap locals:
      StackMap stack:
            iload 1 /* sampleRateInHz */
            ifeq 6
         3: .line 1069
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            iload 1 /* sampleRateInHz */
            invokestatic java.lang.String.valueOf:(I)Ljava/lang/String;
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         4: .line 1070
            ldc "Hz is not a supported sample rate."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         5: .line 1069
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 1072
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* sampleRateInHz */
            putfield android.media.AudioTrack.mSampleRate:I
         7: .line 1077
            iload 4 /* audioFormat */
            bipush 13
            if_icmpne 12
         8: .line 1078
            iload 2 /* channelConfig */
            bipush 12
            if_icmpeq 12
         9: .line 1079
            new java.lang.IllegalArgumentException
            dup
        10: .line 1080
            ldc "ENCODING_IEC61937 must be configured as CHANNEL_OUT_STEREO"
        11: .line 1079
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        12: .line 1085
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* channelConfig */
            putfield android.media.AudioTrack.mChannelConfiguration:I
        13: .line 1087
            iload 2 /* channelConfig */
            tableswitch { // 1 - 12
                    1: 14
                    2: 14
                    3: 17
                    4: 14
                    5: 20
                    6: 20
                    7: 20
                    8: 20
                    9: 20
                   10: 20
                   11: 20
                   12: 17
              default: 20
          }
        14: .line 1091
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mChannelCount:I
        15: .line 1092
            aload 0 /* this */
            iconst_4
            putfield android.media.AudioTrack.mChannelMask:I
        16: .line 1093
            goto 27
        17: .line 1096
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iconst_2
            putfield android.media.AudioTrack.mChannelCount:I
        18: .line 1097
            aload 0 /* this */
            bipush 12
            putfield android.media.AudioTrack.mChannelMask:I
        19: .line 1098
            goto 27
        20: .line 1100
      StackMap locals:
      StackMap stack:
            iload 2 /* channelConfig */
            ifne 23
            iload 3 /* channelIndexMask */
            ifeq 23
        21: .line 1101
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mChannelCount:I
        22: .line 1102
            goto 27
        23: .line 1104
      StackMap locals:
      StackMap stack:
            iload 2 /* channelConfig */
            invokestatic android.media.AudioTrack.isMultichannelConfigSupported:(I)Z
            ifne 25
        24: .line 1106
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported channel configuration."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        25: .line 1108
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 2 /* channelConfig */
            putfield android.media.AudioTrack.mChannelMask:I
        26: .line 1109
            aload 0 /* this */
            iload 2 /* channelConfig */
            invokestatic android.media.AudioFormat.channelCountFromOutChannelMask:(I)I
            putfield android.media.AudioTrack.mChannelCount:I
        27: .line 1112
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 3 /* channelIndexMask */
            putfield android.media.AudioTrack.mChannelIndexMask:I
        28: .line 1113
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelIndexMask:I
            ifeq 40
        29: .line 1115
            iconst_1
            getstatic android.media.AudioTrack.CHANNEL_COUNT_MAX:I
            ishl
            iconst_1
            isub
            istore 6 /* indexMask */
        start local 6 // int indexMask
        30: .line 1116
            iload 3 /* channelIndexMask */
            iload 6 /* indexMask */
            iconst_m1
            ixor
            iand
            ifeq 34
        31: .line 1117
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "Unsupported channel index configuration "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
        32: .line 1118
            iload 3 /* channelIndexMask */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
        33: .line 1117
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        34: .line 1120
      StackMap locals: int
      StackMap stack:
            iload 3 /* channelIndexMask */
            invokestatic java.lang.Integer.bitCount:(I)I
            istore 7 /* channelIndexCount */
        start local 7 // int channelIndexCount
        35: .line 1121
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelCount:I
            ifne 38
        36: .line 1122
            aload 0 /* this */
            iload 7 /* channelIndexCount */
            putfield android.media.AudioTrack.mChannelCount:I
        37: .line 1123
            goto 40
      StackMap locals: int
      StackMap stack:
        38: aload 0 /* this */
            getfield android.media.AudioTrack.mChannelCount:I
            iload 7 /* channelIndexCount */
            if_icmpeq 40
        39: .line 1124
            new java.lang.IllegalArgumentException
            dup
            ldc "Channel count must match"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        end local 7 // int channelIndexCount
        end local 6 // int indexMask
        40: .line 1130
      StackMap locals:
      StackMap stack:
            iload 4 /* audioFormat */
            iconst_1
            if_icmpne 42
        41: .line 1131
            iconst_2
            istore 4 /* audioFormat */
        42: .line 1134
      StackMap locals:
      StackMap stack:
            iload 4 /* audioFormat */
            invokestatic android.media.AudioFormat.isPublicEncoding:(I)Z
            ifne 44
        43: .line 1135
            new java.lang.IllegalArgumentException
            dup
            ldc "Unsupported audio encoding."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        44: .line 1137
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 4 /* audioFormat */
            putfield android.media.AudioTrack.mAudioFormat:I
        45: .line 1141
            iload 5 /* mode */
            iconst_1
            if_icmpeq 46
            iload 5 /* mode */
            ifne 47
        46: .line 1142
      StackMap locals:
      StackMap stack:
            iload 5 /* mode */
            iconst_1
            if_icmpeq 48
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            invokestatic android.media.AudioFormat.isEncodingLinearPcm:(I)Z
            ifne 48
        47: .line 1143
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid mode."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        48: .line 1145
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 5 /* mode */
            putfield android.media.AudioTrack.mDataLoadMode:I
        49: .line 1146
            return
        end local 5 // int mode
        end local 4 // int audioFormat
        end local 3 // int channelIndexMask
        end local 2 // int channelConfig
        end local 1 // int sampleRateInHz
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   50     0               this  Landroid/media/AudioTrack;
            0   50     1     sampleRateInHz  I
            0   50     2      channelConfig  I
            0   50     3   channelIndexMask  I
            0   50     4        audioFormat  I
            0   50     5               mode  I
           30   40     6          indexMask  I
           35   40     7  channelIndexCount  I
    MethodParameters:
                  Name  Flags
      sampleRateInHz    
      channelConfig     
      channelIndexMask  
      audioFormat       
      mode              

  private static boolean isMultichannelConfigSupported(int);
    descriptor: (I)Z
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // int channelConfig
         0: .line 1155
            iload 0 /* channelConfig */
            sipush 7420
            iand
            iload 0 /* channelConfig */
            if_icmpeq 3
         1: .line 1156
            ldc "Channel configuration features unsupported channels"
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
         2: .line 1157
            iconst_0
            ireturn
         3: .line 1159
      StackMap locals:
      StackMap stack:
            iload 0 /* channelConfig */
            invokestatic android.media.AudioFormat.channelCountFromOutChannelMask:(I)I
            istore 1 /* channelCount */
        start local 1 // int channelCount
         4: .line 1160
            iload 1 /* channelCount */
            getstatic android.media.AudioTrack.CHANNEL_COUNT_MAX:I
            if_icmple 9
         5: .line 1161
            new java.lang.StringBuilder
            dup
            ldc "Channel configuration contains too many channels "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         6: .line 1162
            iload 1 /* channelCount */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ">"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            getstatic android.media.AudioTrack.CHANNEL_COUNT_MAX:I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
         7: .line 1161
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
         8: .line 1163
            iconst_0
            ireturn
         9: .line 1170
      StackMap locals: int
      StackMap stack:
            iload 0 /* channelConfig */
            bipush 12
            iand
            bipush 12
            if_icmpeq 12
        10: .line 1171
            ldc "Front channels must be present in multichannel configurations"
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        11: .line 1172
            iconst_0
            ireturn
        12: .line 1176
      StackMap locals:
      StackMap stack:
            iload 0 /* channelConfig */
            sipush 192
            iand
            ifeq 16
        13: .line 1177
            iload 0 /* channelConfig */
            sipush 192
            iand
            sipush 192
            if_icmpeq 16
        14: .line 1178
            ldc "Rear channels can't be used independently"
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        15: .line 1179
            iconst_0
            ireturn
        16: .line 1184
      StackMap locals:
      StackMap stack:
            iload 0 /* channelConfig */
            sipush 6144
            iand
            ifeq 20
        17: .line 1185
            iload 0 /* channelConfig */
            sipush 6144
            iand
            sipush 6144
            if_icmpeq 20
        18: .line 1186
            ldc "Side channels can't be used independently"
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        19: .line 1187
            iconst_0
            ireturn
        20: .line 1189
      StackMap locals:
      StackMap stack:
            iconst_1
            ireturn
        end local 1 // int channelCount
        end local 0 // int channelConfig
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   21     0  channelConfig  I
            4   21     1   channelCount  I
    MethodParameters:
               Name  Flags
      channelConfig  

  private void audioBuffSizeCheck(int);
    descriptor: (I)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=3, locals=3, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int audioBufferSize
         0: .line 1203
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            invokestatic android.media.AudioFormat.isEncodingLinearFrames:(I)Z
            ifeq 3
         1: .line 1204
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelCount:I
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            invokestatic android.media.AudioFormat.getBytesPerSample:(I)I
            imul
            istore 2 /* frameSizeInBytes */
        start local 2 // int frameSizeInBytes
         2: .line 1205
            goto 4
        end local 2 // int frameSizeInBytes
         3: .line 1206
      StackMap locals:
      StackMap stack:
            iconst_1
            istore 2 /* frameSizeInBytes */
        start local 2 // int frameSizeInBytes
         4: .line 1208
      StackMap locals: int
      StackMap stack:
            iload 1 /* audioBufferSize */
            iload 2 /* frameSizeInBytes */
            irem
            ifne 5
            iload 1 /* audioBufferSize */
            iconst_1
            if_icmpge 6
         5: .line 1209
      StackMap locals:
      StackMap stack:
            new java.lang.IllegalArgumentException
            dup
            ldc "Invalid audio buffer size."
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         6: .line 1212
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* audioBufferSize */
            putfield android.media.AudioTrack.mNativeBufferSizeInBytes:I
         7: .line 1213
            aload 0 /* this */
            iload 1 /* audioBufferSize */
            iload 2 /* frameSizeInBytes */
            idiv
            putfield android.media.AudioTrack.mNativeBufferSizeInFrames:I
         8: .line 1214
            return
        end local 2 // int frameSizeInBytes
        end local 1 // int audioBufferSize
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    9     0              this  Landroid/media/AudioTrack;
            0    9     1   audioBufferSize  I
            2    3     2  frameSizeInBytes  I
            4    9     2  frameSizeInBytes  I
    MethodParameters:
                 Name  Flags
      audioBufferSize  

  public void release();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1224
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.stop:()V
         1: .line 1225
            goto 3
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
         2: pop
         3: .line 1228
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.baseRelease:()V
         4: .line 1229
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_release:()V
         5: .line 1230
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mState:I
         6: .line 1231
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    7     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.IllegalStateException

  protected void finalize();
    descriptor: ()V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1235
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.baseRelease:()V
         1: .line 1236
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_finalize:()V
         2: .line 1237
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/AudioTrack;

  public static float getMinVolume();
    descriptor: ()F
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1249
            fconst_0
            freturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public static float getMaxVolume();
    descriptor: ()F
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=0, args_size=0
         0: .line 1261
            fconst_1
            freturn
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  public int getSampleRate();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1274
            aload 0 /* this */
            getfield android.media.AudioTrack.mSampleRate:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getPlaybackRate();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1281
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_playback_rate:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public android.media.PlaybackParams getPlaybackParams();
    descriptor: ()Landroid/media/PlaybackParams;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1291
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_playback_params:()Landroid/media/PlaybackParams;
            areturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getAudioFormat();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1299
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getStreamType();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1311
            aload 0 /* this */
            getfield android.media.AudioTrack.mStreamType:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getChannelConfiguration();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1324
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelConfiguration:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public android.media.AudioFormat getFormat();
    descriptor: ()Landroid/media/AudioFormat;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1333
            new android.media.AudioFormat$Builder
            dup
            invokespecial android.media.AudioFormat$Builder.<init>:()V
         1: .line 1334
            aload 0 /* this */
            getfield android.media.AudioTrack.mSampleRate:I
            invokevirtual android.media.AudioFormat$Builder.setSampleRate:(I)Landroid/media/AudioFormat$Builder;
         2: .line 1335
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            invokevirtual android.media.AudioFormat$Builder.setEncoding:(I)Landroid/media/AudioFormat$Builder;
         3: .line 1333
            astore 1 /* builder */
        start local 1 // android.media.AudioFormat$Builder builder
         4: .line 1336
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelConfiguration:I
            ifeq 6
         5: .line 1337
            aload 1 /* builder */
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelConfiguration:I
            invokevirtual android.media.AudioFormat$Builder.setChannelMask:(I)Landroid/media/AudioFormat$Builder;
            pop
         6: .line 1339
      StackMap locals: android.media.AudioFormat$Builder
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelIndexMask:I
            ifeq 8
         7: .line 1340
            aload 1 /* builder */
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelIndexMask:I
            invokevirtual android.media.AudioFormat$Builder.setChannelIndexMask:(I)Landroid/media/AudioFormat$Builder;
            pop
         8: .line 1342
      StackMap locals:
      StackMap stack:
            aload 1 /* builder */
            invokevirtual android.media.AudioFormat$Builder.build:()Landroid/media/AudioFormat;
            areturn
        end local 1 // android.media.AudioFormat$Builder builder
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot     Name  Signature
            0    9     0     this  Landroid/media/AudioTrack;
            4    9     1  builder  Landroid/media/AudioFormat$Builder;

  public int getChannelCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1349
            aload 0 /* this */
            getfield android.media.AudioTrack.mChannelCount:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getState();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1361
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getPlayState();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1371
            aload 0 /* this */
            getfield android.media.AudioTrack.mPlayStateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 1372
            aload 0 /* this */
            getfield android.media.AudioTrack.mPlayState:I
            aload 1
            monitorexit
         2: ireturn
         3: .line 1371
      StackMap locals: android.media.AudioTrack java.lang.Object
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public int getBufferSizeInFrames();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1394
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_buffer_size_frames:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int setBufferSizeInFrames(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int bufferSizeInFrames
         0: .line 1421
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            ifeq 1
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 2
         1: .line 1422
      StackMap locals:
      StackMap stack:
            bipush -3
            ireturn
         2: .line 1424
      StackMap locals:
      StackMap stack:
            iload 1 /* bufferSizeInFrames */
            ifge 4
         3: .line 1425
            bipush -2
            ireturn
         4: .line 1427
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* bufferSizeInFrames */
            invokevirtual android.media.AudioTrack.native_set_buffer_size_frames:(I)I
            ireturn
        end local 1 // int bufferSizeInFrames
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot                Name  Signature
            0    5     0                this  Landroid/media/AudioTrack;
            0    5     1  bufferSizeInFrames  I
    MethodParameters:
                    Name  Flags
      bufferSizeInFrames  

  public int getBufferCapacityInFrames();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1450
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_buffer_capacity_frames:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  protected int getNativeFrameCount();
    descriptor: ()I
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1461
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_buffer_capacity_frames:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()

  public int getNotificationMarkerPosition();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1470
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_marker_pos:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getPositionNotificationPeriod();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1478
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_pos_update_period:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getPlaybackHeadPosition();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1493
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_position:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getLatency();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1505
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_latency:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getUnderrunCount();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1522
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_underrun_count:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public int getPerformanceMode();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1536
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_get_flags:()I
            istore 1 /* flags */
        start local 1 // int flags
         1: .line 1537
            iload 1 /* flags */
            iconst_4
            iand
            ifeq 3
         2: .line 1538
            iconst_1
            ireturn
         3: .line 1539
      StackMap locals: int
      StackMap stack:
            iload 1 /* flags */
            bipush 8
            iand
            ifeq 5
         4: .line 1540
            iconst_2
            ireturn
         5: .line 1542
      StackMap locals:
      StackMap stack:
            iconst_0
            ireturn
        end local 1 // int flags
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    6     0   this  Landroid/media/AudioTrack;
            1    6     1  flags  I

  public static int getNativeOutputSampleRate(int);
    descriptor: (I)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // int streamType
         0: .line 1550
            iload 0 /* streamType */
            invokestatic android.media.AudioTrack.native_get_output_sample_rate:(I)I
            ireturn
        end local 0 // int streamType
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    1     0  streamType  I
    MethodParameters:
            Name  Flags
      streamType  

  public static int getMinBufferSize(int, int, int);
    descriptor: (III)I
    flags: (0x0009) ACC_PUBLIC, ACC_STATIC
    Code:
      stack=3, locals=5, args_size=3
        start local 0 // int sampleRateInHz
        start local 1 // int channelConfig
        start local 2 // int audioFormat
         0: .line 1577
            iconst_0
            istore 3 /* channelCount */
        start local 3 // int channelCount
         1: .line 1578
            iload 1 /* channelConfig */
            lookupswitch { // 4
                    2: 2
                    3: 4
                    4: 2
                   12: 4
              default: 6
          }
         2: .line 1581
      StackMap locals: int
      StackMap stack:
            iconst_1
            istore 3 /* channelCount */
         3: .line 1582
            goto 10
         4: .line 1585
      StackMap locals:
      StackMap stack:
            iconst_2
            istore 3 /* channelCount */
         5: .line 1586
            goto 10
         6: .line 1588
      StackMap locals:
      StackMap stack:
            iload 1 /* channelConfig */
            invokestatic android.media.AudioTrack.isMultichannelConfigSupported:(I)Z
            ifne 9
         7: .line 1589
            ldc "getMinBufferSize(): Invalid channel configuration."
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
         8: .line 1590
            bipush -2
            ireturn
         9: .line 1592
      StackMap locals:
      StackMap stack:
            iload 1 /* channelConfig */
            invokestatic android.media.AudioFormat.channelCountFromOutChannelMask:(I)I
            istore 3 /* channelCount */
        10: .line 1596
      StackMap locals:
      StackMap stack:
            iload 2 /* audioFormat */
            invokestatic android.media.AudioFormat.isPublicEncoding:(I)Z
            ifne 13
        11: .line 1597
            ldc "getMinBufferSize(): Invalid audio format."
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        12: .line 1598
            bipush -2
            ireturn
        13: .line 1603
      StackMap locals:
      StackMap stack:
            iload 0 /* sampleRateInHz */
            sipush 4000
            if_icmplt 15
        14: .line 1604
            iload 0 /* sampleRateInHz */
            ldc 192000
            if_icmple 17
        15: .line 1605
      StackMap locals:
      StackMap stack:
            new java.lang.StringBuilder
            dup
            ldc "getMinBufferSize(): "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 0 /* sampleRateInHz */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " Hz is not a supported sample rate."
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        16: .line 1606
            bipush -2
            ireturn
        17: .line 1609
      StackMap locals:
      StackMap stack:
            iload 0 /* sampleRateInHz */
            iload 3 /* channelCount */
            iload 2 /* audioFormat */
            invokestatic android.media.AudioTrack.native_get_min_buff_size:(III)I
            istore 4 /* size */
        start local 4 // int size
        18: .line 1610
            iload 4 /* size */
            ifgt 21
        19: .line 1611
            ldc "getMinBufferSize(): error querying hardware"
            invokestatic android.media.AudioTrack.loge:(Ljava/lang/String;)V
        20: .line 1612
            iconst_m1
            ireturn
        21: .line 1615
      StackMap locals: int
      StackMap stack:
            iload 4 /* size */
            ireturn
        end local 4 // int size
        end local 3 // int channelCount
        end local 2 // int audioFormat
        end local 1 // int channelConfig
        end local 0 // int sampleRateInHz
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   22     0  sampleRateInHz  I
            0   22     1   channelConfig  I
            0   22     2     audioFormat  I
            1   22     3    channelCount  I
           18   22     4            size  I
    MethodParameters:
                Name  Flags
      sampleRateInHz  
      channelConfig   
      audioFormat     

  public int getAudioSessionId();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1625
            aload 0 /* this */
            getfield android.media.AudioTrack.mSessionId:I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;

  public boolean getTimestamp(android.media.AudioTimestamp);
    descriptor: (Landroid/media/AudioTimestamp;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioTimestamp timestamp
         0: .line 1670
            aload 1 /* timestamp */
            ifnonnull 2
         1: .line 1671
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1674
      StackMap locals:
      StackMap stack:
            iconst_2
            newarray 11
            astore 2 /* longArray */
        start local 2 // long[] longArray
         3: .line 1675
            aload 0 /* this */
            aload 2 /* longArray */
            invokevirtual android.media.AudioTrack.native_get_timestamp:([J)I
            istore 3 /* ret */
        start local 3 // int ret
         4: .line 1676
            iload 3 /* ret */
            ifeq 6
         5: .line 1677
            iconst_0
            ireturn
         6: .line 1679
      StackMap locals: long[] int
      StackMap stack:
            aload 1 /* timestamp */
            aload 2 /* longArray */
            iconst_0
            laload
            putfield android.media.AudioTimestamp.framePosition:J
         7: .line 1680
            aload 1 /* timestamp */
            aload 2 /* longArray */
            iconst_1
            laload
            putfield android.media.AudioTimestamp.nanoTime:J
         8: .line 1681
            iconst_1
            ireturn
        end local 3 // int ret
        end local 2 // long[] longArray
        end local 1 // android.media.AudioTimestamp timestamp
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    9     0       this  Landroid/media/AudioTrack;
            0    9     1  timestamp  Landroid/media/AudioTimestamp;
            3    9     2  longArray  [J
            4    9     3        ret  I
    MethodParameters:
           Name  Flags
      timestamp  

  public int getTimestampWithStatus(android.media.AudioTimestamp);
    descriptor: (Landroid/media/AudioTimestamp;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioTimestamp timestamp
         0: .line 1712
            aload 1 /* timestamp */
            ifnonnull 2
         1: .line 1713
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1716
      StackMap locals:
      StackMap stack:
            iconst_2
            newarray 11
            astore 2 /* longArray */
        start local 2 // long[] longArray
         3: .line 1717
            aload 0 /* this */
            aload 2 /* longArray */
            invokevirtual android.media.AudioTrack.native_get_timestamp:([J)I
            istore 3 /* ret */
        start local 3 // int ret
         4: .line 1718
            aload 1 /* timestamp */
            aload 2 /* longArray */
            iconst_0
            laload
            putfield android.media.AudioTimestamp.framePosition:J
         5: .line 1719
            aload 1 /* timestamp */
            aload 2 /* longArray */
            iconst_1
            laload
            putfield android.media.AudioTimestamp.nanoTime:J
         6: .line 1720
            iload 3 /* ret */
            ireturn
        end local 3 // int ret
        end local 2 // long[] longArray
        end local 1 // android.media.AudioTimestamp timestamp
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    7     0       this  Landroid/media/AudioTrack;
            0    7     1  timestamp  Landroid/media/AudioTimestamp;
            3    7     2  longArray  [J
            4    7     3        ret  I
    MethodParameters:
           Name  Flags
      timestamp  

  public android.os.PersistableBundle getMetrics();
    descriptor: ()Landroid/os/PersistableBundle;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=1, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 1734
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_getMetrics:()Landroid/os/PersistableBundle;
            astore 1 /* bundle */
        start local 1 // android.os.PersistableBundle bundle
         1: .line 1735
            aload 1 /* bundle */
            areturn
        end local 1 // android.os.PersistableBundle bundle
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    2     0    this  Landroid/media/AudioTrack;
            1    2     1  bundle  Landroid/os/PersistableBundle;

  private native android.os.PersistableBundle native_getMetrics();
    descriptor: ()Landroid/os/PersistableBundle;
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE

  public void setPlaybackPositionUpdateListener(android.media.AudioTrack$OnPlaybackPositionUpdateListener);
    descriptor: (Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioTrack$OnPlaybackPositionUpdateListener listener
         0: .line 1751
            aload 0 /* this */
            aload 1 /* listener */
            aconst_null
            invokevirtual android.media.AudioTrack.setPlaybackPositionUpdateListener:(Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V
         1: .line 1752
            return
        end local 1 // android.media.AudioTrack$OnPlaybackPositionUpdateListener listener
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Landroid/media/AudioTrack;
            0    2     1  listener  Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;
    MethodParameters:
          Name  Flags
      listener  

  public void setPlaybackPositionUpdateListener(android.media.AudioTrack$OnPlaybackPositionUpdateListener, android.os.Handler);
    descriptor: (Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=7, locals=3, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioTrack$OnPlaybackPositionUpdateListener listener
        start local 2 // android.os.Handler handler
         0: .line 1764
            aload 1 /* listener */
            ifnull 3
         1: .line 1765
            aload 0 /* this */
            new android.media.AudioTrack$NativePositionEventHandlerDelegate
            dup
            aload 0 /* this */
            aload 0 /* this */
            aload 1 /* listener */
            aload 2 /* handler */
            invokespecial android.media.AudioTrack$NativePositionEventHandlerDelegate.<init>:(Landroid/media/AudioTrack;Landroid/media/AudioTrack;Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;Landroid/os/Handler;)V
            putfield android.media.AudioTrack.mEventHandlerDelegate:Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;
         2: .line 1766
            goto 4
         3: .line 1767
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mEventHandlerDelegate:Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;
         4: .line 1769
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.os.Handler handler
        end local 1 // android.media.AudioTrack$OnPlaybackPositionUpdateListener listener
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    5     0      this  Landroid/media/AudioTrack;
            0    5     1  listener  Landroid/media/AudioTrack$OnPlaybackPositionUpdateListener;
            0    5     2   handler  Landroid/os/Handler;
    MethodParameters:
          Name  Flags
      listener  
      handler   

  private static float clampGainOrLevel(float);
    descriptor: (F)F
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // float gainOrLevel
         0: .line 1773
            fload 0 /* gainOrLevel */
            invokestatic java.lang.Float.isNaN:(F)Z
            ifeq 2
         1: .line 1774
            new java.lang.IllegalArgumentException
            dup
            invokespecial java.lang.IllegalArgumentException.<init>:()V
            athrow
         2: .line 1776
      StackMap locals:
      StackMap stack:
            fload 0 /* gainOrLevel */
            fconst_0
            fcmpg
            ifge 5
         3: .line 1777
            fconst_0
            fstore 0 /* gainOrLevel */
         4: .line 1778
            goto 7
      StackMap locals:
      StackMap stack:
         5: fload 0 /* gainOrLevel */
            fconst_1
            fcmpl
            ifle 7
         6: .line 1779
            fconst_1
            fstore 0 /* gainOrLevel */
         7: .line 1781
      StackMap locals:
      StackMap stack:
            fload 0 /* gainOrLevel */
            freturn
        end local 0 // float gainOrLevel
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0  gainOrLevel  F
    MethodParameters:
             Name  Flags
      gainOrLevel  

  public int setStereoVolume(float, float);
    descriptor: (FF)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // float leftGain
        start local 2 // float rightGain
         0: .line 1802
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 2
         1: .line 1803
            bipush -3
            ireturn
         2: .line 1806
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            fload 1 /* leftGain */
            fload 2 /* rightGain */
            invokevirtual android.media.AudioTrack.baseSetVolume:(FF)V
         3: .line 1807
            iconst_0
            ireturn
        end local 2 // float rightGain
        end local 1 // float leftGain
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    4     0       this  Landroid/media/AudioTrack;
            0    4     1   leftGain  F
            0    4     2  rightGain  F
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
           Name  Flags
      leftGain   
      rightGain  

  void playerSetVolume(boolean, float, float);
    descriptor: (ZFF)V
    flags: (0x0000) 
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // android.media.AudioTrack this
        start local 1 // boolean muting
        start local 2 // float leftVolume
        start local 3 // float rightVolume
         0: .line 1812
            iload 1 /* muting */
            ifeq 1
            fconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: fload 2 /* leftVolume */
      StackMap locals:
      StackMap stack: float
         2: invokestatic android.media.AudioTrack.clampGainOrLevel:(F)F
            fstore 2 /* leftVolume */
         3: .line 1813
            iload 1 /* muting */
            ifeq 4
            fconst_0
            goto 5
      StackMap locals:
      StackMap stack:
         4: fload 3 /* rightVolume */
      StackMap locals:
      StackMap stack: float
         5: invokestatic android.media.AudioTrack.clampGainOrLevel:(F)F
            fstore 3 /* rightVolume */
         6: .line 1815
            aload 0 /* this */
            fload 2 /* leftVolume */
            fload 3 /* rightVolume */
            invokevirtual android.media.AudioTrack.native_setVolume:(FF)V
         7: .line 1816
            return
        end local 3 // float rightVolume
        end local 2 // float leftVolume
        end local 1 // boolean muting
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0    8     0         this  Landroid/media/AudioTrack;
            0    8     1       muting  Z
            0    8     2   leftVolume  F
            0    8     3  rightVolume  F
    MethodParameters:
             Name  Flags
      muting       
      leftVolume   
      rightVolume  

  public int setVolume(float);
    descriptor: (F)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // float gain
         0: .line 1834
            aload 0 /* this */
            fload 1 /* gain */
            fload 1 /* gain */
            invokevirtual android.media.AudioTrack.setStereoVolume:(FF)I
            ireturn
        end local 1 // float gain
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;
            0    1     1  gain  F
    MethodParameters:
      Name  Flags
      gain  

  int playerApplyVolumeShaper(android.media.VolumeShaper$Configuration, android.media.VolumeShaper$Operation);
    descriptor: (Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)I
    flags: (0x0000) 
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.VolumeShaper$Configuration configuration
        start local 2 // android.media.VolumeShaper$Operation operation
         0: .line 1841
            aload 0 /* this */
            aload 1 /* configuration */
            aload 2 /* operation */
            invokevirtual android.media.AudioTrack.native_applyVolumeShaper:(Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)I
            ireturn
        end local 2 // android.media.VolumeShaper$Operation operation
        end local 1 // android.media.VolumeShaper$Configuration configuration
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/media/AudioTrack;
            0    1     1  configuration  Landroid/media/VolumeShaper$Configuration;
            0    1     2      operation  Landroid/media/VolumeShaper$Operation;
    MethodParameters:
               Name  Flags
      configuration  
      operation      

  android.media.VolumeShaper$State playerGetVolumeShaperState(int);
    descriptor: (I)Landroid/media/VolumeShaper$State;
    flags: (0x0000) 
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int id
         0: .line 1846
            aload 0 /* this */
            iload 1 /* id */
            invokevirtual android.media.AudioTrack.native_getVolumeShaperState:(I)Landroid/media/VolumeShaper$State;
            areturn
        end local 1 // int id
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;
            0    1     1    id  I
    MethodParameters:
      Name  Flags
      id    

  public android.media.VolumeShaper createVolumeShaper(android.media.VolumeShaper$Configuration);
    descriptor: (Landroid/media/VolumeShaper$Configuration;)Landroid/media/VolumeShaper;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.VolumeShaper$Configuration configuration
         0: .line 1852
            new android.media.VolumeShaper
            dup
            aload 1 /* configuration */
            aload 0 /* this */
            invokespecial android.media.VolumeShaper.<init>:(Landroid/media/VolumeShaper$Configuration;Landroid/media/PlayerBase;)V
            areturn
        end local 1 // android.media.VolumeShaper$Configuration configuration
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/media/AudioTrack;
            0    1     1  configuration  Landroid/media/VolumeShaper$Configuration;
    MethodParameters:
               Name  Flags
      configuration  

  public int setPlaybackRate(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int sampleRateInHz
         0: .line 1874
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpeq 2
         1: .line 1875
            bipush -3
            ireturn
         2: .line 1877
      StackMap locals:
      StackMap stack:
            iload 1 /* sampleRateInHz */
            ifgt 4
         3: .line 1878
            bipush -2
            ireturn
         4: .line 1880
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* sampleRateInHz */
            invokevirtual android.media.AudioTrack.native_set_playback_rate:(I)I
            ireturn
        end local 1 // int sampleRateInHz
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    5     0            this  Landroid/media/AudioTrack;
            0    5     1  sampleRateInHz  I
    MethodParameters:
                Name  Flags
      sampleRateInHz  

  public void setPlaybackParams(android.media.PlaybackParams);
    descriptor: (Landroid/media/PlaybackParams;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.PlaybackParams params
         0: .line 1899
            aload 1 /* params */
            ifnonnull 2
         1: .line 1900
            new java.lang.IllegalArgumentException
            dup
            ldc "params is null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 1902
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* params */
            invokevirtual android.media.AudioTrack.native_set_playback_params:(Landroid/media/PlaybackParams;)V
         3: .line 1903
            return
        end local 1 // android.media.PlaybackParams params
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    4     0    this  Landroid/media/AudioTrack;
            0    4     1  params  Landroid/media/PlaybackParams;
    MethodParameters:
        Name  Flags
      params  

  public int setNotificationMarkerPosition(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int markerInFrames
         0: .line 1916
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 2
         1: .line 1917
            bipush -3
            ireturn
         2: .line 1919
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* markerInFrames */
            invokevirtual android.media.AudioTrack.native_set_marker_pos:(I)I
            ireturn
        end local 1 // int markerInFrames
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Landroid/media/AudioTrack;
            0    3     1  markerInFrames  I
    MethodParameters:
                Name  Flags
      markerInFrames  

  public int setPositionNotificationPeriod(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int periodInFrames
         0: .line 1930
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 2
         1: .line 1931
            bipush -3
            ireturn
         2: .line 1933
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* periodInFrames */
            invokevirtual android.media.AudioTrack.native_set_pos_update_period:(I)I
            ireturn
        end local 1 // int periodInFrames
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    3     0            this  Landroid/media/AudioTrack;
            0    3     1  periodInFrames  I
    MethodParameters:
                Name  Flags
      periodInFrames  

  public int setPlaybackHeadPosition(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int positionInFrames
         0: .line 1956
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            iconst_1
            if_icmpeq 2
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifeq 2
         1: .line 1957
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.getPlayState:()I
            iconst_3
            if_icmpne 3
         2: .line 1958
      StackMap locals:
      StackMap stack:
            bipush -3
            ireturn
         3: .line 1960
      StackMap locals:
      StackMap stack:
            iload 1 /* positionInFrames */
            iflt 4
            iload 1 /* positionInFrames */
            aload 0 /* this */
            getfield android.media.AudioTrack.mNativeBufferSizeInFrames:I
            if_icmple 5
         4: .line 1961
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
         5: .line 1963
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* positionInFrames */
            invokevirtual android.media.AudioTrack.native_set_position:(I)I
            ireturn
        end local 1 // int positionInFrames
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot              Name  Signature
            0    6     0              this  Landroid/media/AudioTrack;
            0    6     1  positionInFrames  I
    MethodParameters:
                  Name  Flags
      positionInFrames  

  public int setLoopPoints(int, int, int);
    descriptor: (III)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=4, args_size=4
        start local 0 // android.media.AudioTrack this
        start local 1 // int startInFrames
        start local 2 // int endInFrames
        start local 3 // int loopCount
         0: .line 1998
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            iconst_1
            if_icmpeq 2
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifeq 2
         1: .line 1999
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.getPlayState:()I
            iconst_3
            if_icmpne 3
         2: .line 2000
      StackMap locals:
      StackMap stack:
            bipush -3
            ireturn
         3: .line 2002
      StackMap locals:
      StackMap stack:
            iload 3 /* loopCount */
            ifne 5
         4: .line 2004
            goto 8
      StackMap locals:
      StackMap stack:
         5: iload 1 /* startInFrames */
            iflt 7
            iload 1 /* startInFrames */
            aload 0 /* this */
            getfield android.media.AudioTrack.mNativeBufferSizeInFrames:I
            if_icmpge 7
         6: .line 2005
            iload 1 /* startInFrames */
            iload 2 /* endInFrames */
            if_icmpge 7
            iload 2 /* endInFrames */
            aload 0 /* this */
            getfield android.media.AudioTrack.mNativeBufferSizeInFrames:I
            if_icmple 8
         7: .line 2006
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
         8: .line 2008
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* startInFrames */
            iload 2 /* endInFrames */
            iload 3 /* loopCount */
            invokevirtual android.media.AudioTrack.native_set_loop:(III)I
            ireturn
        end local 3 // int loopCount
        end local 2 // int endInFrames
        end local 1 // int startInFrames
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    9     0           this  Landroid/media/AudioTrack;
            0    9     1  startInFrames  I
            0    9     2    endInFrames  I
            0    9     3      loopCount  I
    MethodParameters:
               Name  Flags
      startInFrames  
      endInFrames    
      loopCount      

  public int setPresentation(android.media.AudioPresentation);
    descriptor: (Landroid/media/AudioPresentation;)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioPresentation presentation
         0: .line 2024
            aload 1 /* presentation */
            ifnonnull 2
         1: .line 2025
            new java.lang.IllegalArgumentException
            dup
            ldc "audio presentation is null"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2027
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* presentation */
            invokevirtual android.media.AudioPresentation.getPresentationId:()I
         3: .line 2028
            aload 1 /* presentation */
            invokevirtual android.media.AudioPresentation.getProgramId:()I
         4: .line 2027
            invokevirtual android.media.AudioTrack.native_setPresentation:(II)I
            ireturn
        end local 1 // android.media.AudioPresentation presentation
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot          Name  Signature
            0    5     0          this  Landroid/media/AudioTrack;
            0    5     1  presentation  Landroid/media/AudioPresentation;
    MethodParameters:
              Name  Flags
      presentation  

  protected void setState(int);
    descriptor: (I)V
    flags: (0x0004) ACC_PROTECTED
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int state
         0: .line 2040
            aload 0 /* this */
            iload 1 /* state */
            putfield android.media.AudioTrack.mState:I
         1: .line 2041
            return
        end local 1 // int state
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    2     0   this  Landroid/media/AudioTrack;
            0    2     1  state  I
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
       Name  Flags
      state  

  public void play();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2073
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpeq 2
         1: .line 2074
            new java.lang.IllegalStateException
            dup
            ldc "play() called on uninitialized AudioTrack."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2077
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.getStartDelayMs:()I
            istore 1 /* delay */
        start local 1 // int delay
         3: .line 2078
            iload 1 /* delay */
            ifne 6
         4: .line 2079
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.startImpl:()V
         5: .line 2080
            goto 8
         6: .line 2081
      StackMap locals: int
      StackMap stack:
            new android.media.AudioTrack$1
            dup
            aload 0 /* this */
            iload 1 /* delay */
            invokespecial android.media.AudioTrack$1.<init>:(Landroid/media/AudioTrack;I)V
         7: .line 2097
            invokevirtual android.media.AudioTrack$1.start:()V
         8: .line 2099
      StackMap locals:
      StackMap stack:
            return
        end local 1 // int delay
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    9     0   this  Landroid/media/AudioTrack;
            3    9     1  delay  I
    Exceptions:
      throws java.lang.IllegalStateException

  private void startImpl();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2102
            aload 0 /* this */
            getfield android.media.AudioTrack.mPlayStateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 2103
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.baseStart:()V
         2: .line 2104
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_start:()V
         3: .line 2105
            aload 0 /* this */
            iconst_3
            putfield android.media.AudioTrack.mPlayState:I
         4: .line 2102
            aload 1
            monitorexit
         5: goto 8
      StackMap locals: android.media.AudioTrack java.lang.Object
      StackMap stack: java.lang.Throwable
         6: aload 1
            monitorexit
         7: athrow
         8: .line 2107
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    9     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any

  public void stop();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2119
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpeq 2
         1: .line 2120
            new java.lang.IllegalStateException
            dup
            ldc "stop() called on uninitialized AudioTrack."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2124
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mPlayStateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 2125
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_stop:()V
         4: .line 2126
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.baseStop:()V
         5: .line 2127
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mPlayState:I
         6: .line 2128
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
         7: .line 2129
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
         8: .line 2124
            aload 1
            monitorexit
         9: goto 12
      StackMap locals: android.media.AudioTrack java.lang.Object
      StackMap stack: java.lang.Throwable
        10: aload 1
            monitorexit
        11: athrow
        12: .line 2131
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   13     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           3     9      10  any
          10    11      10  any
    Exceptions:
      throws java.lang.IllegalStateException

  public void pause();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2142
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpeq 2
         1: .line 2143
            new java.lang.IllegalStateException
            dup
            ldc "pause() called on uninitialized AudioTrack."
            invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 2147
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mPlayStateLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         3: .line 2148
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_pause:()V
         4: .line 2149
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.basePause:()V
         5: .line 2150
            aload 0 /* this */
            iconst_2
            putfield android.media.AudioTrack.mPlayState:I
         6: .line 2147
            aload 1
            monitorexit
         7: goto 10
      StackMap locals: android.media.AudioTrack java.lang.Object
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 2152
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0   11     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           3     7       8  any
           8     9       8  any
    Exceptions:
      throws java.lang.IllegalStateException

  public void flush();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2171
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpne 4
         1: .line 2173
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_flush:()V
         2: .line 2174
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
         3: .line 2175
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
         4: .line 2178
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/media/AudioTrack;

  public int write(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // android.media.AudioTrack this
        start local 1 // byte[] audioData
        start local 2 // int offsetInBytes
        start local 3 // int sizeInBytes
         0: .line 2216
            aload 0 /* this */
            aload 1 /* audioData */
            iload 2 /* offsetInBytes */
            iload 3 /* sizeInBytes */
            iconst_0
            invokevirtual android.media.AudioTrack.write:([BIII)I
            ireturn
        end local 3 // int sizeInBytes
        end local 2 // int offsetInBytes
        end local 1 // byte[] audioData
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0    1     0           this  Landroid/media/AudioTrack;
            0    1     1      audioData  [B
            0    1     2  offsetInBytes  I
            0    1     3    sizeInBytes  I
    MethodParameters:
               Name  Flags
      audioData      
      offsetInBytes  
      sizeInBytes    

  public int write(byte[], int, int, int);
    descriptor: ([BIII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // android.media.AudioTrack this
        start local 1 // byte[] audioData
        start local 2 // int offsetInBytes
        start local 3 // int sizeInBytes
        start local 4 // int writeMode
         0: .line 2264
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifeq 1
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            iconst_4
            if_icmpne 2
         1: .line 2265
      StackMap locals:
      StackMap stack:
            bipush -3
            ireturn
         2: .line 2268
      StackMap locals:
      StackMap stack:
            iload 4 /* writeMode */
            ifeq 5
            iload 4 /* writeMode */
            iconst_1
            if_icmpeq 5
         3: .line 2269
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called with invalid blocking mode"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         4: .line 2270
            bipush -2
            ireturn
         5: .line 2273
      StackMap locals:
      StackMap stack:
            aload 1 /* audioData */
            ifnull 8
            iload 2 /* offsetInBytes */
            iflt 8
            iload 3 /* sizeInBytes */
            iflt 8
         6: .line 2274
            iload 2 /* offsetInBytes */
            iload 3 /* sizeInBytes */
            iadd
            iflt 8
         7: .line 2275
            iload 2 /* offsetInBytes */
            iload 3 /* sizeInBytes */
            iadd
            aload 1 /* audioData */
            arraylength
            if_icmple 9
         8: .line 2276
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
         9: .line 2279
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* audioData */
            iload 2 /* offsetInBytes */
            iload 3 /* sizeInBytes */
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
        10: .line 2280
            iload 4 /* writeMode */
            ifne 11
            iconst_1
            goto 12
      StackMap locals: android.media.AudioTrack byte[] int int int
      StackMap stack: android.media.AudioTrack byte[] int int int
        11: iconst_0
        12: .line 2279
      StackMap locals: android.media.AudioTrack byte[] int int int
      StackMap stack: android.media.AudioTrack byte[] int int int int
            invokevirtual android.media.AudioTrack.native_write_byte:([BIIIZ)I
            istore 5 /* ret */
        start local 5 // int ret
        13: .line 2282
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            ifne 17
        14: .line 2283
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_2
            if_icmpne 17
        15: .line 2284
            iload 5 /* ret */
            ifle 17
        16: .line 2286
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mState:I
        17: .line 2289
      StackMap locals: int
      StackMap stack:
            iload 5 /* ret */
            ireturn
        end local 5 // int ret
        end local 4 // int writeMode
        end local 3 // int sizeInBytes
        end local 2 // int offsetInBytes
        end local 1 // byte[] audioData
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   18     0           this  Landroid/media/AudioTrack;
            0   18     1      audioData  [B
            0   18     2  offsetInBytes  I
            0   18     3    sizeInBytes  I
            0   18     4      writeMode  I
           13   18     5            ret  I
    MethodParameters:
               Name  Flags
      audioData      
      offsetInBytes  
      sizeInBytes    
      writeMode      

  public int write(short[], int, int);
    descriptor: ([SII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=5, locals=4, args_size=4
        start local 0 // android.media.AudioTrack this
        start local 1 // short[] audioData
        start local 2 // int offsetInShorts
        start local 3 // int sizeInShorts
         0: .line 2327
            aload 0 /* this */
            aload 1 /* audioData */
            iload 2 /* offsetInShorts */
            iload 3 /* sizeInShorts */
            iconst_0
            invokevirtual android.media.AudioTrack.write:([SIII)I
            ireturn
        end local 3 // int sizeInShorts
        end local 2 // int offsetInShorts
        end local 1 // short[] audioData
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    1     0            this  Landroid/media/AudioTrack;
            0    1     1       audioData  [S
            0    1     2  offsetInShorts  I
            0    1     3    sizeInShorts  I
    MethodParameters:
                Name  Flags
      audioData       
      offsetInShorts  
      sizeInShorts    

  public int write(short[], int, int, int);
    descriptor: ([SIII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // android.media.AudioTrack this
        start local 1 // short[] audioData
        start local 2 // int offsetInShorts
        start local 3 // int sizeInShorts
        start local 4 // int writeMode
         0: .line 2373
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifeq 1
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            iconst_4
            if_icmpne 2
         1: .line 2374
      StackMap locals:
      StackMap stack:
            bipush -3
            ireturn
         2: .line 2377
      StackMap locals:
      StackMap stack:
            iload 4 /* writeMode */
            ifeq 5
            iload 4 /* writeMode */
            iconst_1
            if_icmpeq 5
         3: .line 2378
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called with invalid blocking mode"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         4: .line 2379
            bipush -2
            ireturn
         5: .line 2382
      StackMap locals:
      StackMap stack:
            aload 1 /* audioData */
            ifnull 8
            iload 2 /* offsetInShorts */
            iflt 8
            iload 3 /* sizeInShorts */
            iflt 8
         6: .line 2383
            iload 2 /* offsetInShorts */
            iload 3 /* sizeInShorts */
            iadd
            iflt 8
         7: .line 2384
            iload 2 /* offsetInShorts */
            iload 3 /* sizeInShorts */
            iadd
            aload 1 /* audioData */
            arraylength
            if_icmple 9
         8: .line 2385
      StackMap locals:
      StackMap stack:
            bipush -2
            ireturn
         9: .line 2388
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* audioData */
            iload 2 /* offsetInShorts */
            iload 3 /* sizeInShorts */
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
        10: .line 2389
            iload 4 /* writeMode */
            ifne 11
            iconst_1
            goto 12
      StackMap locals: android.media.AudioTrack short[] int int int
      StackMap stack: android.media.AudioTrack short[] int int int
        11: iconst_0
        12: .line 2388
      StackMap locals: android.media.AudioTrack short[] int int int
      StackMap stack: android.media.AudioTrack short[] int int int int
            invokevirtual android.media.AudioTrack.native_write_short:([SIIIZ)I
            istore 5 /* ret */
        start local 5 // int ret
        13: .line 2391
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            ifne 17
        14: .line 2392
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_2
            if_icmpne 17
        15: .line 2393
            iload 5 /* ret */
            ifle 17
        16: .line 2395
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mState:I
        17: .line 2398
      StackMap locals: int
      StackMap stack:
            iload 5 /* ret */
            ireturn
        end local 5 // int ret
        end local 4 // int writeMode
        end local 3 // int sizeInShorts
        end local 2 // int offsetInShorts
        end local 1 // short[] audioData
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   18     0            this  Landroid/media/AudioTrack;
            0   18     1       audioData  [S
            0   18     2  offsetInShorts  I
            0   18     3    sizeInShorts  I
            0   18     4       writeMode  I
           13   18     5             ret  I
    MethodParameters:
                Name  Flags
      audioData       
      offsetInShorts  
      sizeInShorts    
      writeMode       

  public int write(float[], int, int, int);
    descriptor: ([FIII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=6, args_size=5
        start local 0 // android.media.AudioTrack this
        start local 1 // float[] audioData
        start local 2 // int offsetInFloats
        start local 3 // int sizeInFloats
        start local 4 // int writeMode
         0: .line 2454
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 3
         1: .line 2455
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called in invalid state STATE_UNINITIALIZED"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 2456
            bipush -3
            ireturn
         3: .line 2459
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
            iconst_4
            if_icmpeq 6
         4: .line 2460
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write(float[] ...) requires format ENCODING_PCM_FLOAT"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         5: .line 2461
            bipush -3
            ireturn
         6: .line 2464
      StackMap locals:
      StackMap stack:
            iload 4 /* writeMode */
            ifeq 9
            iload 4 /* writeMode */
            iconst_1
            if_icmpeq 9
         7: .line 2465
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called with invalid blocking mode"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         8: .line 2466
            bipush -2
            ireturn
         9: .line 2469
      StackMap locals:
      StackMap stack:
            aload 1 /* audioData */
            ifnull 12
            iload 2 /* offsetInFloats */
            iflt 12
            iload 3 /* sizeInFloats */
            iflt 12
        10: .line 2470
            iload 2 /* offsetInFloats */
            iload 3 /* sizeInFloats */
            iadd
            iflt 12
        11: .line 2471
            iload 2 /* offsetInFloats */
            iload 3 /* sizeInFloats */
            iadd
            aload 1 /* audioData */
            arraylength
            if_icmple 14
        12: .line 2472
      StackMap locals:
      StackMap stack:
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called with invalid array, offset, or size"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        13: .line 2473
            bipush -2
            ireturn
        14: .line 2476
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            aload 1 /* audioData */
            iload 2 /* offsetInFloats */
            iload 3 /* sizeInFloats */
            aload 0 /* this */
            getfield android.media.AudioTrack.mAudioFormat:I
        15: .line 2477
            iload 4 /* writeMode */
            ifne 16
            iconst_1
            goto 17
      StackMap locals: android.media.AudioTrack float[] int int int
      StackMap stack: android.media.AudioTrack float[] int int int
        16: iconst_0
        17: .line 2476
      StackMap locals: android.media.AudioTrack float[] int int int
      StackMap stack: android.media.AudioTrack float[] int int int int
            invokevirtual android.media.AudioTrack.native_write_float:([FIIIZ)I
            istore 5 /* ret */
        start local 5 // int ret
        18: .line 2479
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            ifne 22
        19: .line 2480
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_2
            if_icmpne 22
        20: .line 2481
            iload 5 /* ret */
            ifle 22
        21: .line 2483
            aload 0 /* this */
            iconst_1
            putfield android.media.AudioTrack.mState:I
        22: .line 2486
      StackMap locals: int
      StackMap stack:
            iload 5 /* ret */
            ireturn
        end local 5 // int ret
        end local 4 // int writeMode
        end local 3 // int sizeInFloats
        end local 2 // int offsetInFloats
        end local 1 // float[] audioData
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   23     0            this  Landroid/media/AudioTrack;
            0   23     1       audioData  [F
            0   23     2  offsetInFloats  I
            0   23     3    sizeInFloats  I
            0   23     4       writeMode  I
           18   23     5             ret  I
    MethodParameters:
                Name  Flags
      audioData       
      offsetInFloats  
      sizeInFloats    
      writeMode       

  public int write(java.nio.ByteBuffer, int, int);
    descriptor: (Ljava/nio/ByteBuffer;II)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=4
        start local 0 // android.media.AudioTrack this
         0: .line 2556
            new java.lang.Error
            dup
            ldc "Unresolved compilation problems: \n\tNioUtils cannot be resolved\n\tNioUtils cannot be resolved\n"
            invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
            athrow
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    1     0  this  Landroid/media/AudioTrack;
    MethodParameters:
             Name  Flags
      audioData    
      sizeInBytes  
      writeMode    

  public int write(java.nio.ByteBuffer, int, int, long);
    descriptor: (Ljava/nio/ByteBuffer;IIJ)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=4, locals=8, args_size=5
        start local 0 // android.media.AudioTrack this
        start local 1 // java.nio.ByteBuffer audioData
        start local 2 // int sizeInBytes
        start local 3 // int writeMode
        start local 4 // long timestamp
         0: .line 2608
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 3
         1: .line 2609
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called in invalid state STATE_UNINITIALIZED"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         2: .line 2610
            bipush -3
            ireturn
         3: .line 2613
      StackMap locals:
      StackMap stack:
            iload 3 /* writeMode */
            ifeq 6
            iload 3 /* writeMode */
            iconst_1
            if_icmpeq 6
         4: .line 2614
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called with invalid blocking mode"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         5: .line 2615
            bipush -2
            ireturn
         6: .line 2618
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            iconst_1
            if_icmpeq 9
         7: .line 2619
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() with timestamp called for non-streaming mode track"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         8: .line 2620
            bipush -3
            ireturn
         9: .line 2623
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAttributes:Landroid/media/AudioAttributes;
            invokevirtual android.media.AudioAttributes.getFlags:()I
            bipush 16
            iand
            ifne 12
        10: .line 2624
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() called on a regular AudioTrack. Ignoring pts..."
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        11: .line 2625
            aload 0 /* this */
            aload 1 /* audioData */
            iload 2 /* sizeInBytes */
            iload 3 /* writeMode */
            invokevirtual android.media.AudioTrack.write:(Ljava/nio/ByteBuffer;II)I
            ireturn
        12: .line 2628
      StackMap locals:
      StackMap stack:
            aload 1 /* audioData */
            ifnull 13
            iload 2 /* sizeInBytes */
            iflt 13
            iload 2 /* sizeInBytes */
            aload 1 /* audioData */
            invokevirtual java.nio.ByteBuffer.remaining:()I
            if_icmple 15
        13: .line 2629
      StackMap locals:
      StackMap stack:
            ldc "android.media.AudioTrack"
            new java.lang.StringBuilder
            dup
            ldc "AudioTrack.write() called with invalid size ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 2 /* sizeInBytes */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc ") value"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        14: .line 2630
            bipush -2
            ireturn
        15: .line 2634
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            ifnonnull 19
        16: .line 2635
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.AudioTrack.mOffset:I
            invokestatic java.nio.ByteBuffer.allocate:(I)Ljava/nio/ByteBuffer;
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
        17: .line 2636
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            getstatic java.nio.ByteOrder.BIG_ENDIAN:Ljava/nio/ByteOrder;
            invokevirtual java.nio.ByteBuffer.order:(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
            pop
        18: .line 2637
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            ldc 1431633922
            invokevirtual java.nio.ByteBuffer.putInt:(I)Ljava/nio/ByteBuffer;
            pop
        19: .line 2640
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncBytesRemaining:I
            ifne 25
        20: .line 2641
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            iconst_4
            iload 2 /* sizeInBytes */
            invokevirtual java.nio.ByteBuffer.putInt:(II)Ljava/nio/ByteBuffer;
            pop
        21: .line 2642
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            bipush 8
            lload 4 /* timestamp */
            invokevirtual java.nio.ByteBuffer.putLong:(IJ)Ljava/nio/ByteBuffer;
            pop
        22: .line 2643
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            bipush 16
            aload 0 /* this */
            getfield android.media.AudioTrack.mOffset:I
            invokevirtual java.nio.ByteBuffer.putInt:(II)Ljava/nio/ByteBuffer;
            pop
        23: .line 2644
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            iconst_0
            invokevirtual java.nio.ByteBuffer.position:(I)Ljava/nio/Buffer;
            pop
        24: .line 2645
            aload 0 /* this */
            iload 2 /* sizeInBytes */
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
        25: .line 2649
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 6 /* ret */
        start local 6 // int ret
        26: .line 2650
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifeq 36
        27: .line 2651
            aload 0 /* this */
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            iload 3 /* writeMode */
            invokevirtual android.media.AudioTrack.write:(Ljava/nio/ByteBuffer;II)I
            istore 6 /* ret */
        28: .line 2652
            iload 6 /* ret */
            ifge 33
        29: .line 2653
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() could not write timestamp header!"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        30: .line 2654
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
        31: .line 2655
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
        32: .line 2656
            iload 6 /* ret */
            ireturn
        33: .line 2658
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
            invokevirtual java.nio.ByteBuffer.remaining:()I
            ifle 36
        34: .line 2659
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() partial timestamp header written."
            invokestatic android.util.Log.v:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        35: .line 2660
            iconst_0
            ireturn
        36: .line 2665
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mAvSyncBytesRemaining:I
            iload 2 /* sizeInBytes */
            invokestatic java.lang.Math.min:(II)I
            istore 7 /* sizeToWrite */
        start local 7 // int sizeToWrite
        37: .line 2666
            aload 0 /* this */
            aload 1 /* audioData */
            iload 7 /* sizeToWrite */
            iload 3 /* writeMode */
            invokevirtual android.media.AudioTrack.write:(Ljava/nio/ByteBuffer;II)I
            istore 6 /* ret */
        38: .line 2667
            iload 6 /* ret */
            ifge 43
        39: .line 2668
            ldc "android.media.AudioTrack"
            ldc "AudioTrack.write() could not write audio data!"
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
        40: .line 2669
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mAvSyncHeader:Ljava/nio/ByteBuffer;
        41: .line 2670
            aload 0 /* this */
            iconst_0
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
        42: .line 2671
            iload 6 /* ret */
            ireturn
        43: .line 2674
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            dup
            getfield android.media.AudioTrack.mAvSyncBytesRemaining:I
            iload 6 /* ret */
            isub
            putfield android.media.AudioTrack.mAvSyncBytesRemaining:I
        44: .line 2676
            iload 6 /* ret */
            ireturn
        end local 7 // int sizeToWrite
        end local 6 // int ret
        end local 4 // long timestamp
        end local 3 // int writeMode
        end local 2 // int sizeInBytes
        end local 1 // java.nio.ByteBuffer audioData
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot         Name  Signature
            0   45     0         this  Landroid/media/AudioTrack;
            0   45     1    audioData  Ljava/nio/ByteBuffer;
            0   45     2  sizeInBytes  I
            0   45     3    writeMode  I
            0   45     4    timestamp  J
           26   45     6          ret  I
           37   45     7  sizeToWrite  I
    MethodParameters:
             Name  Flags
      audioData    
      sizeInBytes  
      writeMode    
      timestamp    

  public int reloadStaticData();
    descriptor: ()I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2696
            aload 0 /* this */
            getfield android.media.AudioTrack.mDataLoadMode:I
            iconst_1
            if_icmpeq 1
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            iconst_1
            if_icmpeq 2
         1: .line 2697
      StackMap locals:
      StackMap stack:
            bipush -3
            ireturn
         2: .line 2699
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_reload_static:()I
            ireturn
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/AudioTrack;

  public int attachAuxEffect(int);
    descriptor: (I)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // int effectId
         0: .line 2724
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 2
         1: .line 2725
            bipush -3
            ireturn
         2: .line 2727
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            iload 1 /* effectId */
            invokevirtual android.media.AudioTrack.native_attachAuxEffect:(I)I
            ireturn
        end local 1 // int effectId
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    3     0      this  Landroid/media/AudioTrack;
            0    3     1  effectId  I
    MethodParameters:
          Name  Flags
      effectId  

  public int setAuxEffectSendLevel(float);
    descriptor: (F)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // float level
         0: .line 2749
            aload 0 /* this */
            getfield android.media.AudioTrack.mState:I
            ifne 2
         1: .line 2750
            bipush -3
            ireturn
         2: .line 2752
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            fload 1 /* level */
            invokevirtual android.media.AudioTrack.baseSetAuxEffectSendLevel:(F)I
            ireturn
        end local 1 // float level
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    3     0   this  Landroid/media/AudioTrack;
            0    3     1  level  F
    MethodParameters:
       Name  Flags
      level  

  int playerSetAuxEffectSendLevel(boolean, float);
    descriptor: (ZF)I
    flags: (0x0000) 
    Code:
      stack=2, locals=4, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // boolean muting
        start local 2 // float level
         0: .line 2757
            iload 1 /* muting */
            ifeq 1
            fconst_0
            goto 2
      StackMap locals:
      StackMap stack:
         1: fload 2 /* level */
      StackMap locals:
      StackMap stack: float
         2: invokestatic android.media.AudioTrack.clampGainOrLevel:(F)F
            fstore 2 /* level */
         3: .line 2758
            aload 0 /* this */
            fload 2 /* level */
            invokevirtual android.media.AudioTrack.native_setAuxEffectSendLevel:(F)I
            istore 3 /* err */
        start local 3 // int err
         4: .line 2759
            iload 3 /* err */
            ifne 5
            iconst_0
            goto 6
      StackMap locals: int
      StackMap stack:
         5: iconst_m1
      StackMap locals:
      StackMap stack: int
         6: ireturn
        end local 3 // int err
        end local 2 // float level
        end local 1 // boolean muting
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot    Name  Signature
            0    7     0    this  Landroid/media/AudioTrack;
            0    7     1  muting  Z
            0    7     2   level  F
            4    7     3     err  I
    MethodParameters:
        Name  Flags
      muting  
      level   

  public boolean setPreferredDevice(android.media.AudioDeviceInfo);
    descriptor: (Landroid/media/AudioDeviceInfo;)Z
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=5, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioDeviceInfo deviceInfo
         0: .line 2778
            aload 1 /* deviceInfo */
            ifnull 2
            aload 1 /* deviceInfo */
            invokevirtual android.media.AudioDeviceInfo.isSink:()Z
            ifne 2
         1: .line 2779
            iconst_0
            ireturn
         2: .line 2781
      StackMap locals:
      StackMap stack:
            aload 1 /* deviceInfo */
            ifnull 3
            aload 1 /* deviceInfo */
            invokevirtual android.media.AudioDeviceInfo.getId:()I
            goto 4
      StackMap locals:
      StackMap stack:
         3: iconst_0
      StackMap locals:
      StackMap stack: int
         4: istore 2 /* preferredDeviceId */
        start local 2 // int preferredDeviceId
         5: .line 2782
            aload 0 /* this */
            iload 2 /* preferredDeviceId */
            invokevirtual android.media.AudioTrack.native_setOutputDevice:(I)Z
            istore 3 /* status */
        start local 3 // boolean status
         6: .line 2783
            iload 3 /* status */
            ifeq 13
         7: .line 2784
            aload 0 /* this */
            dup
            astore 4
            monitorenter
         8: .line 2785
            aload 0 /* this */
            aload 1 /* deviceInfo */
            putfield android.media.AudioTrack.mPreferredDevice:Landroid/media/AudioDeviceInfo;
         9: .line 2784
            aload 4
            monitorexit
        10: goto 13
      StackMap locals: android.media.AudioTrack android.media.AudioDeviceInfo int int android.media.AudioTrack
      StackMap stack: java.lang.Throwable
        11: aload 4
            monitorexit
        12: athrow
        13: .line 2788
      StackMap locals:
      StackMap stack:
            iload 3 /* status */
            ireturn
        end local 3 // boolean status
        end local 2 // int preferredDeviceId
        end local 1 // android.media.AudioDeviceInfo deviceInfo
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot               Name  Signature
            0   14     0               this  Landroid/media/AudioTrack;
            0   14     1         deviceInfo  Landroid/media/AudioDeviceInfo;
            5   14     2  preferredDeviceId  I
            6   14     3             status  Z
      Exception table:
        from    to  target  type
           8    10      11  any
          11    12      11  any
    MethodParameters:
            Name  Flags
      deviceInfo  

  public android.media.AudioDeviceInfo getPreferredDevice();
    descriptor: ()Landroid/media/AudioDeviceInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2797
            aload 0 /* this */
            dup
            astore 1
            monitorenter
         1: .line 2798
            aload 0 /* this */
            getfield android.media.AudioTrack.mPreferredDevice:Landroid/media/AudioDeviceInfo;
            aload 1
            monitorexit
         2: areturn
         3: .line 2797
      StackMap locals: android.media.AudioTrack android.media.AudioTrack
      StackMap stack: java.lang.Throwable
            aload 1
            monitorexit
         4: athrow
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           1     2       3  any
           3     4       3  any

  public android.media.AudioDeviceInfo getRoutedDevice();
    descriptor: ()Landroid/media/AudioDeviceInfo;
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2809
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_getRoutedDeviceId:()I
            istore 1 /* deviceId */
        start local 1 // int deviceId
         1: .line 2810
            iload 1 /* deviceId */
            ifne 3
         2: .line 2811
            aconst_null
            areturn
         3: .line 2814
      StackMap locals: int
      StackMap stack:
            iconst_2
            invokestatic android.media.AudioManager.getDevicesStatic:(I)[Landroid/media/AudioDeviceInfo;
         4: .line 2813
            astore 2 /* devices */
        start local 2 // android.media.AudioDeviceInfo[] devices
         5: .line 2815
            iconst_0
            istore 3 /* i */
        start local 3 // int i
         6: goto 10
         7: .line 2816
      StackMap locals: android.media.AudioDeviceInfo[] int
      StackMap stack:
            aload 2 /* devices */
            iload 3 /* i */
            aaload
            invokevirtual android.media.AudioDeviceInfo.getId:()I
            iload 1 /* deviceId */
            if_icmpne 9
         8: .line 2817
            aload 2 /* devices */
            iload 3 /* i */
            aaload
            areturn
         9: .line 2815
      StackMap locals:
      StackMap stack:
            iinc 3 /* i */ 1
      StackMap locals:
      StackMap stack:
        10: iload 3 /* i */
            aload 2 /* devices */
            arraylength
            if_icmplt 7
        end local 3 // int i
        11: .line 2820
            aconst_null
            areturn
        end local 2 // android.media.AudioDeviceInfo[] devices
        end local 1 // int deviceId
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   12     0      this  Landroid/media/AudioTrack;
            1   12     1  deviceId  I
            5   12     2   devices  [Landroid/media/AudioDeviceInfo;
            6   11     3         i  I

  private void testEnableNativeRoutingCallbacksLocked();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2828
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.size:()I
            ifne 2
         1: .line 2829
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_enableDeviceCallback:()V
         2: .line 2831
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/AudioTrack;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.GuardedBy(value = "mRoutingChangeListeners")

  private void testDisableNativeRoutingCallbacksLocked();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2838
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.size:()I
            ifne 2
         1: .line 2839
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.native_disableDeviceCallback:()V
         2: .line 2841
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    3     0  this  Landroid/media/AudioTrack;
    RuntimeInvisibleAnnotations: 
      com.android.internal.annotations.GuardedBy(value = "mRoutingChangeListeners")

  public void addOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener, android.os.Handler);
    descriptor: (Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=9, locals=4, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
        start local 2 // android.os.Handler handler
         0: .line 2867
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            dup
            astore 3
            monitorenter
         1: .line 2868
            aload 1 /* listener */
            ifnull 10
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            aload 1 /* listener */
            invokevirtual android.util.ArrayMap.containsKey:(Ljava/lang/Object;)Z
            ifne 10
         2: .line 2869
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.testEnableNativeRoutingCallbacksLocked:()V
         3: .line 2870
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
         4: .line 2871
            aload 1 /* listener */
         5: new android.media.NativeRoutingEventHandlerDelegate
            dup
            aload 0 /* this */
            aload 1 /* listener */
         6: .line 2872
            aload 2 /* handler */
            ifnull 7
            aload 2 /* handler */
            goto 8
      StackMap locals: android.media.AudioTrack android.media.AudioRouting$OnRoutingChangedListener android.os.Handler android.util.ArrayMap
      StackMap stack: android.util.ArrayMap android.media.AudioRouting$OnRoutingChangedListener new 5 new 5 android.media.AudioTrack android.media.AudioRouting$OnRoutingChangedListener
         7: new android.os.Handler
            dup
            aload 0 /* this */
            getfield android.media.AudioTrack.mInitializationLooper:Landroid/os/Looper;
            invokespecial android.os.Handler.<init>:(Landroid/os/Looper;)V
      StackMap locals: android.media.AudioTrack android.media.AudioRouting$OnRoutingChangedListener android.os.Handler android.util.ArrayMap
      StackMap stack: android.util.ArrayMap android.media.AudioRouting$OnRoutingChangedListener new 5 new 5 android.media.AudioTrack android.media.AudioRouting$OnRoutingChangedListener android.os.Handler
         8: invokespecial android.media.NativeRoutingEventHandlerDelegate.<init>:(Landroid/media/AudioRouting;Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V
         9: .line 2870
            invokevirtual android.util.ArrayMap.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
            pop
        10: .line 2867
      StackMap locals:
      StackMap stack:
            aload 3
            monitorexit
        11: goto 14
      StackMap locals:
      StackMap stack: java.lang.Throwable
        12: aload 3
            monitorexit
        13: athrow
        14: .line 2875
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.os.Handler handler
        end local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   15     0      this  Landroid/media/AudioTrack;
            0   15     1  listener  Landroid/media/AudioRouting$OnRoutingChangedListener;
            0   15     2   handler  Landroid/os/Handler;
      Exception table:
        from    to  target  type
           1    11      12  any
          12    13      12  any
    MethodParameters:
          Name  Flags
      listener  
      handler   

  public void removeOnRoutingChangedListener(android.media.AudioRouting$OnRoutingChangedListener);
    descriptor: (Landroid/media/AudioRouting$OnRoutingChangedListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=3, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
         0: .line 2885
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            dup
            astore 2
            monitorenter
         1: .line 2886
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            aload 1 /* listener */
            invokevirtual android.util.ArrayMap.containsKey:(Ljava/lang/Object;)Z
            ifeq 3
         2: .line 2887
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            aload 1 /* listener */
            invokevirtual android.util.ArrayMap.remove:(Ljava/lang/Object;)Ljava/lang/Object;
            pop
         3: .line 2889
      StackMap locals: android.util.ArrayMap
      StackMap stack:
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.testDisableNativeRoutingCallbacksLocked:()V
         4: .line 2885
            aload 2
            monitorexit
         5: goto 8
      StackMap locals:
      StackMap stack: java.lang.Throwable
         6: aload 2
            monitorexit
         7: athrow
         8: .line 2891
      StackMap locals:
      StackMap stack:
            return
        end local 1 // android.media.AudioRouting$OnRoutingChangedListener listener
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    9     0      this  Landroid/media/AudioTrack;
            0    9     1  listener  Landroid/media/AudioRouting$OnRoutingChangedListener;
      Exception table:
        from    to  target  type
           1     5       6  any
           6     7       6  any
    MethodParameters:
          Name  Flags
      listener  

  public void addOnRoutingChangedListener(android.media.AudioTrack$OnRoutingChangedListener, android.os.Handler);
    descriptor: (Landroid/media/AudioTrack$OnRoutingChangedListener;Landroid/os/Handler;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=3, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioTrack$OnRoutingChangedListener listener
        start local 2 // android.os.Handler handler
         0: .line 2934
            aload 0 /* this */
            aload 1 /* listener */
            aload 2 /* handler */
            invokevirtual android.media.AudioTrack.addOnRoutingChangedListener:(Landroid/media/AudioRouting$OnRoutingChangedListener;Landroid/os/Handler;)V
         1: .line 2935
            return
        end local 2 // android.os.Handler handler
        end local 1 // android.media.AudioTrack$OnRoutingChangedListener listener
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Landroid/media/AudioTrack;
            0    2     1  listener  Landroid/media/AudioTrack$OnRoutingChangedListener;
            0    2     2   handler  Landroid/os/Handler;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
          Name  Flags
      listener  
      handler   

  public void removeOnRoutingChangedListener(android.media.AudioTrack$OnRoutingChangedListener);
    descriptor: (Landroid/media/AudioTrack$OnRoutingChangedListener;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=2
        start local 0 // android.media.AudioTrack this
        start local 1 // android.media.AudioTrack$OnRoutingChangedListener listener
         0: .line 2946
            aload 0 /* this */
            aload 1 /* listener */
            invokevirtual android.media.AudioTrack.removeOnRoutingChangedListener:(Landroid/media/AudioRouting$OnRoutingChangedListener;)V
         1: .line 2947
            return
        end local 1 // android.media.AudioTrack$OnRoutingChangedListener listener
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0    2     0      this  Landroid/media/AudioTrack;
            0    2     1  listener  Landroid/media/AudioTrack$OnRoutingChangedListener;
    RuntimeVisibleAnnotations: 
      java.lang.Deprecated()
    MethodParameters:
          Name  Flags
      listener  

  private void broadcastRoutingChange();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=2, locals=4, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 2953
            invokestatic android.media.AudioManager.resetAudioPortGeneration:()I
            pop
         1: .line 2954
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            dup
            astore 1
            monitorenter
         2: .line 2955
            aload 0 /* this */
            getfield android.media.AudioTrack.mRoutingChangeListeners:Landroid/util/ArrayMap;
            invokevirtual android.util.ArrayMap.values:()Ljava/util/Collection;
            invokeinterface java.util.Collection.iterator:()Ljava/util/Iterator;
            astore 3
            goto 5
      StackMap locals: android.media.AudioTrack android.util.ArrayMap top java.util.Iterator
      StackMap stack:
         3: aload 3
            invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
            checkcast android.media.NativeRoutingEventHandlerDelegate
            astore 2 /* delegate */
        start local 2 // android.media.NativeRoutingEventHandlerDelegate delegate
         4: .line 2956
            aload 2 /* delegate */
            invokevirtual android.media.NativeRoutingEventHandlerDelegate.notifyClient:()V
        end local 2 // android.media.NativeRoutingEventHandlerDelegate delegate
         5: .line 2955
      StackMap locals:
      StackMap stack:
            aload 3
            invokeinterface java.util.Iterator.hasNext:()Z
            ifne 3
         6: .line 2954
            aload 1
            monitorexit
         7: goto 10
      StackMap locals: android.media.AudioTrack android.util.ArrayMap
      StackMap stack: java.lang.Throwable
         8: aload 1
            monitorexit
         9: athrow
        10: .line 2959
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0      this  Landroid/media/AudioTrack;
            4    5     2  delegate  Landroid/media/NativeRoutingEventHandlerDelegate;
      Exception table:
        from    to  target  type
           2     7       8  any
           8     9       8  any

  public void setStreamEventCallback(java.util.concurrent.Executor, android.media.AudioTrack$StreamEventCallback);
    descriptor: (Ljava/util/concurrent/Executor;Landroid/media/AudioTrack$StreamEventCallback;)V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=3, locals=4, args_size=3
        start local 0 // android.media.AudioTrack this
        start local 1 // java.util.concurrent.Executor executor
        start local 2 // android.media.AudioTrack$StreamEventCallback eventCallback
         0: .line 3024
            aload 2 /* eventCallback */
            ifnonnull 2
         1: .line 3025
            new java.lang.IllegalArgumentException
            dup
            ldc "Illegal null StreamEventCallback"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         2: .line 3027
      StackMap locals:
      StackMap stack:
            aload 1 /* executor */
            ifnonnull 4
         3: .line 3028
            new java.lang.IllegalArgumentException
            dup
            ldc "Illegal null Executor for the StreamEventCallback"
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
         4: .line 3030
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.media.AudioTrack.mStreamEventCbLock:Ljava/lang/Object;
            dup
            astore 3
            monitorenter
         5: .line 3031
            aload 0 /* this */
            aload 1 /* executor */
            putfield android.media.AudioTrack.mStreamEventExec:Ljava/util/concurrent/Executor;
         6: .line 3032
            aload 0 /* this */
            aload 2 /* eventCallback */
            putfield android.media.AudioTrack.mStreamEventCb:Landroid/media/AudioTrack$StreamEventCallback;
         7: .line 3030
            aload 3
            monitorexit
         8: goto 11
      StackMap locals: android.media.AudioTrack java.util.concurrent.Executor android.media.AudioTrack$StreamEventCallback java.lang.Object
      StackMap stack: java.lang.Throwable
         9: aload 3
            monitorexit
        10: athrow
        11: .line 3034
      StackMap locals:
      StackMap stack:
            return
        end local 2 // android.media.AudioTrack$StreamEventCallback eventCallback
        end local 1 // java.util.concurrent.Executor executor
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot           Name  Signature
            0   12     0           this  Landroid/media/AudioTrack;
            0   12     1       executor  Ljava/util/concurrent/Executor;
            0   12     2  eventCallback  Landroid/media/AudioTrack$StreamEventCallback;
      Exception table:
        from    to  target  type
           5     8       9  any
           9    10       9  any
    MethodParameters:
               Name  Flags
      executor       
      eventCallback  

  public void removeStreamEventCallback();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=2, locals=2, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 3042
            aload 0 /* this */
            getfield android.media.AudioTrack.mStreamEventCbLock:Ljava/lang/Object;
            dup
            astore 1
            monitorenter
         1: .line 3043
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mStreamEventExec:Ljava/util/concurrent/Executor;
         2: .line 3044
            aload 0 /* this */
            aconst_null
            putfield android.media.AudioTrack.mStreamEventCb:Landroid/media/AudioTrack$StreamEventCallback;
         3: .line 3042
            aload 1
            monitorexit
         4: goto 7
      StackMap locals: android.media.AudioTrack java.lang.Object
      StackMap stack: java.lang.Throwable
         5: aload 1
            monitorexit
         6: athrow
         7: .line 3046
      StackMap locals:
      StackMap stack:
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    8     0  this  Landroid/media/AudioTrack;
      Exception table:
        from    to  target  type
           1     4       5  any
           5     6       5  any

  void playerStart();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 3111
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.play:()V
         1: .line 3112
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/AudioTrack;

  void playerPause();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 3116
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.pause:()V
         1: .line 3117
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/AudioTrack;

  void playerStop();
    descriptor: ()V
    flags: (0x0000) 
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.media.AudioTrack this
         0: .line 3121
            aload 0 /* this */
            invokevirtual android.media.AudioTrack.stop:()V
         1: .line 3122
            return
        end local 0 // android.media.AudioTrack this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0  this  Landroid/media/AudioTrack;

  private static void postEventFromNative(java.lang.Object, int, int, int, java.lang.Object);
    descriptor: (Ljava/lang/Object;IIILjava/lang/Object;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=5, locals=9, args_size=5
        start local 0 // java.lang.Object audiotrack_ref
        start local 1 // int what
        start local 2 // int arg1
        start local 3 // int arg2
        start local 4 // java.lang.Object obj
         0: .line 3131
            aload 0 /* audiotrack_ref */
            checkcast java.lang.ref.WeakReference
            invokevirtual java.lang.ref.WeakReference.get:()Ljava/lang/Object;
            checkcast android.media.AudioTrack
            astore 5 /* track */
        start local 5 // android.media.AudioTrack track
         1: .line 3132
            aload 5 /* track */
            ifnonnull 3
         2: .line 3133
            return
         3: .line 3136
      StackMap locals: android.media.AudioTrack
      StackMap stack:
            iload 1 /* what */
            sipush 1000
            if_icmpne 6
         4: .line 3137
            aload 5 /* track */
            invokevirtual android.media.AudioTrack.broadcastRoutingChange:()V
         5: .line 3138
            return
         6: .line 3141
      StackMap locals:
      StackMap stack:
            iload 1 /* what */
            ifeq 8
            iload 1 /* what */
            bipush 6
            if_icmpeq 8
         7: .line 3142
            iload 1 /* what */
            bipush 7
            if_icmpne 24
         8: .line 3145
      StackMap locals:
      StackMap stack:
            aload 5 /* track */
            getfield android.media.AudioTrack.mStreamEventCbLock:Ljava/lang/Object;
            dup
            astore 8
            monitorenter
         9: .line 3146
            aload 5 /* track */
            getfield android.media.AudioTrack.mStreamEventExec:Ljava/util/concurrent/Executor;
            astore 6 /* exec */
        start local 6 // java.util.concurrent.Executor exec
        10: .line 3147
            aload 5 /* track */
            getfield android.media.AudioTrack.mStreamEventCb:Landroid/media/AudioTrack$StreamEventCallback;
            astore 7 /* cb */
        start local 7 // android.media.AudioTrack$StreamEventCallback cb
        11: .line 3145
            aload 8
            monitorexit
        12: goto 15
        end local 7 // android.media.AudioTrack$StreamEventCallback cb
        end local 6 // java.util.concurrent.Executor exec
      StackMap locals: java.lang.Object int int int java.lang.Object android.media.AudioTrack top top java.lang.Object
      StackMap stack: java.lang.Throwable
        13: aload 8
            monitorexit
        14: athrow
        start local 6 // java.util.concurrent.Executor exec
        start local 7 // android.media.AudioTrack$StreamEventCallback cb
        15: .line 3149
      StackMap locals: java.lang.Object int int int java.lang.Object android.media.AudioTrack java.util.concurrent.Executor android.media.AudioTrack$StreamEventCallback
      StackMap stack:
            aload 6 /* exec */
            ifnull 16
            aload 7 /* cb */
            ifnonnull 17
        16: .line 3150
      StackMap locals:
      StackMap stack:
            return
        17: .line 3152
      StackMap locals:
      StackMap stack:
            iload 1 /* what */
            lookupswitch { // 3
                    0: 18
                    6: 20
                    7: 22
              default: 24
          }
        18: .line 3154
      StackMap locals:
      StackMap stack:
            aload 6 /* exec */
            aload 7 /* cb */
            aload 5 /* track */
            invokedynamic run(Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  android/media/AudioTrack.lambda$0(Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)V (6)
                  ()V
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        19: .line 3155
            return
        20: .line 3158
      StackMap locals:
      StackMap stack:
            aload 6 /* exec */
            aload 7 /* cb */
            aload 5 /* track */
            invokedynamic run(Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  android/media/AudioTrack.lambda$1(Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)V (6)
                  ()V
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        21: .line 3159
            return
        22: .line 3161
      StackMap locals:
      StackMap stack:
            aload 6 /* exec */
            aload 7 /* cb */
            aload 5 /* track */
            invokedynamic run(Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)Ljava/lang/Runnable;
              Bootstrap: invokestatic java.lang.invoke.LambdaMetafactory.metafactory:(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;
                Method arguments:
                  ()V
                  android/media/AudioTrack.lambda$2(Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)V (6)
                  ()V
            invokeinterface java.util.concurrent.Executor.execute:(Ljava/lang/Runnable;)V
        23: .line 3162
            return
        end local 7 // android.media.AudioTrack$StreamEventCallback cb
        end local 6 // java.util.concurrent.Executor exec
        24: .line 3163
      StackMap locals:
      StackMap stack:
            aload 5 /* track */
        25: .line 3166
            getfield android.media.AudioTrack.mEventHandlerDelegate:Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;
            astore 6 /* delegate */
        start local 6 // android.media.AudioTrack$NativePositionEventHandlerDelegate delegate
        26: .line 3167
            aload 6 /* delegate */
            ifnull 31
        27: .line 3168
            aload 6 /* delegate */
            invokevirtual android.media.AudioTrack$NativePositionEventHandlerDelegate.getHandler:()Landroid/os/Handler;
            astore 7 /* handler */
        start local 7 // android.os.Handler handler
        28: .line 3169
            aload 7 /* handler */
            ifnull 31
        29: .line 3170
            aload 7 /* handler */
            iload 1 /* what */
            iload 2 /* arg1 */
            iload 3 /* arg2 */
            aload 4 /* obj */
            invokevirtual android.os.Handler.obtainMessage:(IIILjava/lang/Object;)Landroid/os/Message;
            astore 8 /* m */
        start local 8 // android.os.Message m
        30: .line 3171
            aload 7 /* handler */
            aload 8 /* m */
            invokevirtual android.os.Handler.sendMessage:(Landroid/os/Message;)Z
            pop
        end local 8 // android.os.Message m
        end local 7 // android.os.Handler handler
        31: .line 3174
      StackMap locals: android.media.AudioTrack$NativePositionEventHandlerDelegate
      StackMap stack:
            return
        end local 6 // android.media.AudioTrack$NativePositionEventHandlerDelegate delegate
        end local 5 // android.media.AudioTrack track
        end local 4 // java.lang.Object obj
        end local 3 // int arg2
        end local 2 // int arg1
        end local 1 // int what
        end local 0 // java.lang.Object audiotrack_ref
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0   32     0  audiotrack_ref  Ljava/lang/Object;
            0   32     1            what  I
            0   32     2            arg1  I
            0   32     3            arg2  I
            0   32     4             obj  Ljava/lang/Object;
            1   32     5           track  Landroid/media/AudioTrack;
           10   13     6            exec  Ljava/util/concurrent/Executor;
           15   24     6            exec  Ljava/util/concurrent/Executor;
           11   13     7              cb  Landroid/media/AudioTrack$StreamEventCallback;
           15   24     7              cb  Landroid/media/AudioTrack$StreamEventCallback;
           26   32     6        delegate  Landroid/media/AudioTrack$NativePositionEventHandlerDelegate;
           28   31     7         handler  Landroid/os/Handler;
           30   31     8               m  Landroid/os/Message;
      Exception table:
        from    to  target  type
           9    12      13  any
          13    14      13  any
    MethodParameters:
                Name  Flags
      audiotrack_ref  
      what            
      arg1            
      arg2            
      obj             

  private final native int native_setup(java.lang.Object, java.lang.Object, int[], int, int, int, int, int, int[], long, boolean);
    descriptor: (Ljava/lang/Object;Ljava/lang/Object;[IIIIII[IJZ)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                  Name  Flags
      audiotrack_this   
      attributes        
      sampleRate        
      channelMask       
      channelIndexMask  
      audioFormat       
      buffSizeInBytes   
      mode              
      sessionId         
      nativeAudioTrack  
      offload           

  private final native void native_finalize();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  public final native void native_release();
    descriptor: ()V
    flags: (0x0111) ACC_PUBLIC, ACC_FINAL, ACC_NATIVE

  private final native void native_start();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_stop();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_pause();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_flush();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_write_byte(byte[], int, int, int, boolean);
    descriptor: ([BIIIZ)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
               Name  Flags
      audioData      
      offsetInBytes  
      sizeInBytes    
      format         
      isBlocking     

  private final native int native_write_short(short[], int, int, int, boolean);
    descriptor: ([SIIIZ)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                Name  Flags
      audioData       
      offsetInShorts  
      sizeInShorts    
      format          
      isBlocking      

  private final native int native_write_float(float[], int, int, int, boolean);
    descriptor: ([FIIIZ)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                Name  Flags
      audioData       
      offsetInFloats  
      sizeInFloats    
      format          
      isBlocking      

  private final native int native_write_native_bytes(java.lang.Object, int, int, int, boolean);
    descriptor: (Ljava/lang/Object;IIIZ)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                 Name  Flags
      audioData        
      positionInBytes  
      sizeInBytes      
      format           
      blocking         

  private final native int native_reload_static();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_get_buffer_size_frames();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_set_buffer_size_frames(int);
    descriptor: (I)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                    Name  Flags
      bufferSizeInFrames  

  private final native int native_get_buffer_capacity_frames();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_setVolume(float, float);
    descriptor: (FF)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
             Name  Flags
      leftVolume   
      rightVolume  

  private final native int native_set_playback_rate(int);
    descriptor: (I)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                Name  Flags
      sampleRateInHz  

  private final native int native_get_playback_rate();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_set_playback_params(android.media.PlaybackParams);
    descriptor: (Landroid/media/PlaybackParams;)V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
        Name  Flags
      params  

  private final native android.media.PlaybackParams native_get_playback_params();
    descriptor: ()Landroid/media/PlaybackParams;
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_set_marker_pos(int);
    descriptor: (I)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
        Name  Flags
      marker  

  private final native int native_get_marker_pos();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_set_pos_update_period(int);
    descriptor: (I)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
              Name  Flags
      updatePeriod  

  private final native int native_get_pos_update_period();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_set_position(int);
    descriptor: (I)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
          Name  Flags
      position  

  private final native int native_get_position();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_get_latency();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_get_underrun_count();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_get_flags();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native int native_get_timestamp(long[]);
    descriptor: ([J)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
           Name  Flags
      longArray  

  private final native int native_set_loop(int, int, int);
    descriptor: (III)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
           Name  Flags
      start      
      end        
      loopCount  

  private static final native int native_get_output_sample_rate(int);
    descriptor: (I)I
    flags: (0x011a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_NATIVE
    MethodParameters:
            Name  Flags
      streamType  

  private static final native int native_get_min_buff_size(int, int, int);
    descriptor: (III)I
    flags: (0x011a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                Name  Flags
      sampleRateInHz  
      channelConfig   
      audioFormat     

  private final native int native_attachAuxEffect(int);
    descriptor: (I)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
          Name  Flags
      effectId  

  private final native int native_setAuxEffectSendLevel(float);
    descriptor: (F)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
       Name  Flags
      level  

  private final native boolean native_setOutputDevice(int);
    descriptor: (I)Z
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
          Name  Flags
      deviceId  

  private final native int native_getRoutedDeviceId();
    descriptor: ()I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_enableDeviceCallback();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private final native void native_disableDeviceCallback();
    descriptor: ()V
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE

  private static native int native_get_FCC_8();
    descriptor: ()I
    flags: (0x010a) ACC_PRIVATE, ACC_STATIC, ACC_NATIVE

  private native int native_applyVolumeShaper(android.media.VolumeShaper$Configuration, android.media.VolumeShaper$Operation);
    descriptor: (Landroid/media/VolumeShaper$Configuration;Landroid/media/VolumeShaper$Operation;)I
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
               Name  Flags
      configuration  
      operation      

  private native android.media.VolumeShaper$State native_getVolumeShaperState(int);
    descriptor: (I)Landroid/media/VolumeShaper$State;
    flags: (0x0102) ACC_PRIVATE, ACC_NATIVE
    MethodParameters:
      Name  Flags
      id    

  private final native int native_setPresentation(int, int);
    descriptor: (II)I
    flags: (0x0112) ACC_PRIVATE, ACC_FINAL, ACC_NATIVE
    MethodParameters:
                Name  Flags
      presentationId  
      programId       

  private static void logd(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String msg
         0: .line 3281
            ldc "android.media.AudioTrack"
            aload 0 /* msg */
            invokestatic android.util.Log.d:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         1: .line 3282
            return
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   msg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      msg   

  private static void loge(java.lang.String);
    descriptor: (Ljava/lang/String;)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=2, locals=1, args_size=1
        start local 0 // java.lang.String msg
         0: .line 3285
            ldc "android.media.AudioTrack"
            aload 0 /* msg */
            invokestatic android.util.Log.e:(Ljava/lang/String;Ljava/lang/String;)I
            pop
         1: .line 3286
            return
        end local 0 // java.lang.String msg
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    2     0   msg  Ljava/lang/String;
    MethodParameters:
      Name  Flags
      msg   

  private static void lambda$0(android.media.AudioTrack$StreamEventCallback, android.media.AudioTrack);
    descriptor: (Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 3154
            aload 0
            aload 1
            invokevirtual android.media.AudioTrack$StreamEventCallback.onStreamDataRequest:(Landroid/media/AudioTrack;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$1(android.media.AudioTrack$StreamEventCallback, android.media.AudioTrack);
    descriptor: (Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 3158
            aload 0
            aload 1
            invokevirtual android.media.AudioTrack$StreamEventCallback.onTearDown:(Landroid/media/AudioTrack;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature

  private static void lambda$2(android.media.AudioTrack$StreamEventCallback, android.media.AudioTrack);
    descriptor: (Landroid/media/AudioTrack$StreamEventCallback;Landroid/media/AudioTrack;)V
    flags: (0x100a) ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=2, locals=2, args_size=2
         0: .line 3161
            aload 0
            aload 1
            invokevirtual android.media.AudioTrack$StreamEventCallback.onStreamPresentationEnd:(Landroid/media/AudioTrack;)V
            return
      LocalVariableTable:
        Start  End  Slot  Name  Signature
}
SourceFile: "AudioTrack.java"
NestMembers:
  android.media.AudioTrack$1  android.media.AudioTrack$Builder  android.media.AudioTrack$MetricsConstants  android.media.AudioTrack$NativePositionEventHandlerDelegate  android.media.AudioTrack$NativePositionEventHandlerDelegate$1  android.media.AudioTrack$OnPlaybackPositionUpdateListener  android.media.AudioTrack$OnRoutingChangedListener  android.media.AudioTrack$PerformanceMode  android.media.AudioTrack$StreamEventCallback  android.media.AudioTrack$TransferMode  android.media.AudioTrack$WriteMode
InnerClasses:
  public Builder = android.media.AudioAttributes$Builder of android.media.AudioAttributes
  public Builder = android.media.AudioFormat$Builder of android.media.AudioFormat
  public abstract OnRoutingChangedListener = android.media.AudioRouting$OnRoutingChangedListener of android.media.AudioRouting
  android.media.AudioTrack$1
  public Builder = android.media.AudioTrack$Builder of android.media.AudioTrack
  public final MetricsConstants = android.media.AudioTrack$MetricsConstants of android.media.AudioTrack
  private NativePositionEventHandlerDelegate = android.media.AudioTrack$NativePositionEventHandlerDelegate of android.media.AudioTrack
  public abstract OnPlaybackPositionUpdateListener = android.media.AudioTrack$OnPlaybackPositionUpdateListener of android.media.AudioTrack
  public abstract OnRoutingChangedListener = android.media.AudioTrack$OnRoutingChangedListener of android.media.AudioTrack
  public abstract PerformanceMode = android.media.AudioTrack$PerformanceMode of android.media.AudioTrack
  public abstract StreamEventCallback = android.media.AudioTrack$StreamEventCallback of android.media.AudioTrack
  public abstract TransferMode = android.media.AudioTrack$TransferMode of android.media.AudioTrack
  public abstract WriteMode = android.media.AudioTrack$WriteMode of android.media.AudioTrack
  public final Configuration = android.media.VolumeShaper$Configuration of android.media.VolumeShaper
  public final Operation = android.media.VolumeShaper$Operation of android.media.VolumeShaper
  public final State = android.media.VolumeShaper$State of android.media.VolumeShaper
  public final Lookup = java.lang.invoke.MethodHandles$Lookup of java.lang.invoke.MethodHandles