class android.speech.tts.AudioPlaybackQueueItem extends android.speech.tts.PlaybackQueueItem
  minor version: 0
  major version: 59
  flags: flags: (0x0020) ACC_SUPER
  this_class: android.speech.tts.AudioPlaybackQueueItem
  super_class: android.speech.tts.PlaybackQueueItem
{
  private static final java.lang.String TAG;
    descriptor: Ljava/lang/String;
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    ConstantValue: "TTS.AudioQueueItem"

  private final android.content.Context mContext;
    descriptor: Landroid/content/Context;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final android.net.Uri mUri;
    descriptor: Landroid/net/Uri;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

  private final android.speech.tts.TextToSpeechService$AudioOutputParams mAudioParams;
    descriptor: Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
    flags: (0x0012) ACC_PRIVATE, ACC_FINAL

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

  private android.media.MediaPlayer mPlayer;
    descriptor: Landroid/media/MediaPlayer;
    flags: (0x0002) ACC_PRIVATE

  private volatile boolean mFinished;
    descriptor: Z
    flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE

  void <init>(android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher, java.lang.Object, android.content.Context, android.net.Uri, android.speech.tts.TextToSpeechService$AudioOutputParams);
    descriptor: (Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;Ljava/lang/Object;Landroid/content/Context;Landroid/net/Uri;Landroid/speech/tts/TextToSpeechService$AudioOutputParams;)V
    flags: (0x0000) 
    Code:
      stack=3, locals=6, args_size=6
        start local 0 // android.speech.tts.AudioPlaybackQueueItem this
        start local 1 // android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher dispatcher
        start local 2 // java.lang.Object callerIdentity
        start local 3 // android.content.Context context
        start local 4 // android.net.Uri uri
        start local 5 // android.speech.tts.TextToSpeechService$AudioOutputParams audioParams
         0: .line 41
            aload 0 /* this */
            aload 1 /* dispatcher */
            aload 2 /* callerIdentity */
            invokespecial android.speech.tts.PlaybackQueueItem.<init>:(Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;Ljava/lang/Object;)V
         1: .line 43
            aload 0 /* this */
            aload 3 /* context */
            putfield android.speech.tts.AudioPlaybackQueueItem.mContext:Landroid/content/Context;
         2: .line 44
            aload 0 /* this */
            aload 4 /* uri */
            putfield android.speech.tts.AudioPlaybackQueueItem.mUri:Landroid/net/Uri;
         3: .line 45
            aload 0 /* this */
            aload 5 /* audioParams */
            putfield android.speech.tts.AudioPlaybackQueueItem.mAudioParams:Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
         4: .line 47
            aload 0 /* this */
            new android.os.ConditionVariable
            dup
            invokespecial android.os.ConditionVariable.<init>:()V
            putfield android.speech.tts.AudioPlaybackQueueItem.mDone:Landroid/os/ConditionVariable;
         5: .line 48
            aload 0 /* this */
            aconst_null
            putfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
         6: .line 49
            aload 0 /* this */
            iconst_0
            putfield android.speech.tts.AudioPlaybackQueueItem.mFinished:Z
         7: .line 50
            return
        end local 5 // android.speech.tts.TextToSpeechService$AudioOutputParams audioParams
        end local 4 // android.net.Uri uri
        end local 3 // android.content.Context context
        end local 2 // java.lang.Object callerIdentity
        end local 1 // android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher dispatcher
        end local 0 // android.speech.tts.AudioPlaybackQueueItem this
      LocalVariableTable:
        Start  End  Slot            Name  Signature
            0    8     0            this  Landroid/speech/tts/AudioPlaybackQueueItem;
            0    8     1      dispatcher  Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;
            0    8     2  callerIdentity  Ljava/lang/Object;
            0    8     3         context  Landroid/content/Context;
            0    8     4             uri  Landroid/net/Uri;
            0    8     5     audioParams  Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
    MethodParameters:
                Name  Flags
      dispatcher      
      callerIdentity  
      context         
      uri             
      audioParams     

  public void run();
    descriptor: ()V
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=4, args_size=1
        start local 0 // android.speech.tts.AudioPlaybackQueueItem this
         0: .line 53
            aload 0 /* this */
            invokevirtual android.speech.tts.AudioPlaybackQueueItem.getDispatcher:()Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;
            astore 1 /* dispatcher */
        start local 1 // android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher dispatcher
         1: .line 55
            aload 1 /* dispatcher */
            invokeinterface android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher.dispatchOnStart:()V
         2: .line 57
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mAudioParams:Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
            getfield android.speech.tts.TextToSpeechService$AudioOutputParams.mSessionId:I
            istore 2 /* sessionId */
        start local 2 // int sessionId
         3: .line 58
            aload 0 /* this */
         4: .line 59
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mContext:Landroid/content/Context;
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mUri:Landroid/net/Uri;
            aconst_null
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mAudioParams:Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
            getfield android.speech.tts.TextToSpeechService$AudioOutputParams.mAudioAttributes:Landroid/media/AudioAttributes;
         5: .line 60
            iload 2 /* sessionId */
            ifle 6
            iload 2 /* sessionId */
            goto 7
      StackMap locals: android.speech.tts.AudioPlaybackQueueItem android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher int
      StackMap stack: android.speech.tts.AudioPlaybackQueueItem android.content.Context android.net.Uri null android.media.AudioAttributes
         6: iconst_0
         7: .line 58
      StackMap locals: android.speech.tts.AudioPlaybackQueueItem android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher int
      StackMap stack: android.speech.tts.AudioPlaybackQueueItem android.content.Context android.net.Uri null android.media.AudioAttributes int
            invokestatic android.media.MediaPlayer.create:(Landroid/content/Context;Landroid/net/Uri;Landroid/view/SurfaceHolder;Landroid/media/AudioAttributes;I)Landroid/media/MediaPlayer;
            putfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
         8: .line 61
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            ifnonnull 11
         9: .line 62
            aload 1 /* dispatcher */
            bipush -5
            invokeinterface android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher.dispatchOnError:(I)V
        10: .line 63
            return
        11: .line 67
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            new android.speech.tts.AudioPlaybackQueueItem$1
            dup
            aload 0 /* this */
            invokespecial android.speech.tts.AudioPlaybackQueueItem$1.<init>:(Landroid/speech/tts/AudioPlaybackQueueItem;)V
            invokevirtual android.media.MediaPlayer.setOnErrorListener:(Landroid/media/MediaPlayer$OnErrorListener;)V
        12: .line 75
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            new android.speech.tts.AudioPlaybackQueueItem$2
            dup
            aload 0 /* this */
            invokespecial android.speech.tts.AudioPlaybackQueueItem$2.<init>:(Landroid/speech/tts/AudioPlaybackQueueItem;)V
            invokevirtual android.media.MediaPlayer.setOnCompletionListener:(Landroid/media/MediaPlayer$OnCompletionListener;)V
        13: .line 83
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mAudioParams:Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
            getfield android.speech.tts.TextToSpeechService$AudioOutputParams.mVolume:F
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mAudioParams:Landroid/speech/tts/TextToSpeechService$AudioOutputParams;
            getfield android.speech.tts.TextToSpeechService$AudioOutputParams.mPan:F
            invokestatic android.speech.tts.AudioPlaybackQueueItem.setupVolume:(Landroid/media/MediaPlayer;FF)V
        14: .line 84
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            invokevirtual android.media.MediaPlayer.start:()V
        15: .line 85
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mDone:Landroid/os/ConditionVariable;
            invokevirtual android.os.ConditionVariable.block:()V
        16: .line 86
            aload 0 /* this */
            invokevirtual android.speech.tts.AudioPlaybackQueueItem.finish:()V
        17: .line 87
            goto 21
      StackMap locals:
      StackMap stack: java.lang.IllegalArgumentException
        18: astore 3 /* ex */
        start local 3 // java.lang.IllegalArgumentException ex
        19: .line 88
            ldc "TTS.AudioQueueItem"
            ldc "MediaPlayer failed"
            aload 3 /* ex */
            invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
            pop
        20: .line 89
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mDone:Landroid/os/ConditionVariable;
            invokevirtual android.os.ConditionVariable.open:()V
        end local 3 // java.lang.IllegalArgumentException ex
        21: .line 92
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mFinished:Z
            ifeq 24
        22: .line 93
            aload 1 /* dispatcher */
            invokeinterface android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher.dispatchOnSuccess:()V
        23: .line 94
            goto 25
        24: .line 95
      StackMap locals:
      StackMap stack:
            aload 1 /* dispatcher */
            invokeinterface android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher.dispatchOnStop:()V
        25: .line 97
      StackMap locals:
      StackMap stack:
            return
        end local 2 // int sessionId
        end local 1 // android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher dispatcher
        end local 0 // android.speech.tts.AudioPlaybackQueueItem this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0   26     0        this  Landroid/speech/tts/AudioPlaybackQueueItem;
            1   26     1  dispatcher  Landroid/speech/tts/TextToSpeechService$UtteranceProgressDispatcher;
            3   26     2   sessionId  I
           19   21     3          ex  Ljava/lang/IllegalArgumentException;
      Exception table:
        from    to  target  type
          11    17      18  Class java.lang.IllegalArgumentException

  private static void setupVolume(android.media.MediaPlayer, float, float);
    descriptor: (Landroid/media/MediaPlayer;FF)V
    flags: (0x000a) ACC_PRIVATE, ACC_STATIC
    Code:
      stack=3, locals=7, args_size=3
        start local 0 // android.media.MediaPlayer player
        start local 1 // float volume
        start local 2 // float pan
         0: .line 100
            fload 1 /* volume */
            fconst_0
            fconst_1
            invokestatic android.speech.tts.AudioPlaybackQueueItem.clip:(FFF)F
            fstore 3 /* vol */
        start local 3 // float vol
         1: .line 101
            fload 2 /* pan */
            ldc -1.0
            fconst_1
            invokestatic android.speech.tts.AudioPlaybackQueueItem.clip:(FFF)F
            fstore 4 /* panning */
        start local 4 // float panning
         2: .line 103
            fload 3 /* vol */
            fstore 5 /* volLeft */
        start local 5 // float volLeft
         3: fload 3 /* vol */
            fstore 6 /* volRight */
        start local 6 // float volRight
         4: .line 104
            fload 4 /* panning */
            fconst_0
            fcmpl
            ifle 7
         5: .line 105
            fload 5 /* volLeft */
            fconst_1
            fload 4 /* panning */
            fsub
            fmul
            fstore 5 /* volLeft */
         6: .line 106
            goto 9
      StackMap locals: android.media.MediaPlayer float float float float float float
      StackMap stack:
         7: fload 4 /* panning */
            fconst_0
            fcmpg
            ifge 9
         8: .line 107
            fload 6 /* volRight */
            fconst_1
            fload 4 /* panning */
            fadd
            fmul
            fstore 6 /* volRight */
         9: .line 109
      StackMap locals:
      StackMap stack:
            aload 0 /* player */
            fload 5 /* volLeft */
            fload 6 /* volRight */
            invokevirtual android.media.MediaPlayer.setVolume:(FF)V
        10: .line 110
            return
        end local 6 // float volRight
        end local 5 // float volLeft
        end local 4 // float panning
        end local 3 // float vol
        end local 2 // float pan
        end local 1 // float volume
        end local 0 // android.media.MediaPlayer player
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   11     0    player  Landroid/media/MediaPlayer;
            0   11     1    volume  F
            0   11     2       pan  F
            1   11     3       vol  F
            2   11     4   panning  F
            3   11     5   volLeft  F
            4   11     6  volRight  F
    MethodParameters:
        Name  Flags
      player  
      volume  
      pan     

  private static final float clip(float, float, float);
    descriptor: (FFF)F
    flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
    Code:
      stack=2, locals=3, args_size=3
        start local 0 // float value
        start local 1 // float min
        start local 2 // float max
         0: .line 113
            fload 0 /* value */
            fload 1 /* min */
            fcmpg
            ifge 1
            fload 1 /* min */
            goto 3
      StackMap locals:
      StackMap stack:
         1: fload 0 /* value */
            fload 2 /* max */
            fcmpg
            ifge 2
            fload 0 /* value */
            goto 3
      StackMap locals:
      StackMap stack:
         2: fload 2 /* max */
      StackMap locals:
      StackMap stack: float
         3: freturn
        end local 2 // float max
        end local 1 // float min
        end local 0 // float value
      LocalVariableTable:
        Start  End  Slot   Name  Signature
            0    4     0  value  F
            0    4     1    min  F
            0    4     2    max  F
    MethodParameters:
       Name  Flags
      value  
      min    
      max    

  private void finish();
    descriptor: ()V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=1, locals=1, args_size=1
        start local 0 // android.speech.tts.AudioPlaybackQueueItem this
         0: .line 118
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            invokevirtual android.media.MediaPlayer.stop:()V
         1: .line 119
            goto 3
      StackMap locals:
      StackMap stack: java.lang.IllegalStateException
         2: pop
         3: .line 122
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mPlayer:Landroid/media/MediaPlayer;
            invokevirtual android.media.MediaPlayer.release:()V
         4: .line 123
            return
        end local 0 // android.speech.tts.AudioPlaybackQueueItem this
      LocalVariableTable:
        Start  End  Slot  Name  Signature
            0    5     0  this  Landroid/speech/tts/AudioPlaybackQueueItem;
      Exception table:
        from    to  target  type
           0     1       2  Class java.lang.IllegalStateException

  void stop(int);
    descriptor: (I)V
    flags: (0x0000) 
    Code:
      stack=1, locals=2, args_size=2
        start local 0 // android.speech.tts.AudioPlaybackQueueItem this
        start local 1 // int errorCode
         0: .line 127
            aload 0 /* this */
            getfield android.speech.tts.AudioPlaybackQueueItem.mDone:Landroid/os/ConditionVariable;
            invokevirtual android.os.ConditionVariable.open:()V
         1: .line 128
            return
        end local 1 // int errorCode
        end local 0 // android.speech.tts.AudioPlaybackQueueItem this
      LocalVariableTable:
        Start  End  Slot       Name  Signature
            0    2     0       this  Landroid/speech/tts/AudioPlaybackQueueItem;
            0    2     1  errorCode  I
    MethodParameters:
           Name  Flags
      errorCode  
}
SourceFile: "AudioPlaybackQueueItem.java"
NestMembers:
  android.speech.tts.AudioPlaybackQueueItem$1  android.speech.tts.AudioPlaybackQueueItem$2
InnerClasses:
  public abstract OnCompletionListener = android.media.MediaPlayer$OnCompletionListener of android.media.MediaPlayer
  public abstract OnErrorListener = android.media.MediaPlayer$OnErrorListener of android.media.MediaPlayer
  android.speech.tts.AudioPlaybackQueueItem$1
  android.speech.tts.AudioPlaybackQueueItem$2
  AudioOutputParams = android.speech.tts.TextToSpeechService$AudioOutputParams of android.speech.tts.TextToSpeechService
  abstract UtteranceProgressDispatcher = android.speech.tts.TextToSpeechService$UtteranceProgressDispatcher of android.speech.tts.TextToSpeechService