final class com.sun.media.sound.DirectAudioDevice$DirectTDL extends com.sun.media.sound.DirectAudioDevice$DirectDL implements javax.sound.sampled.TargetDataLine
  minor version: 0
  major version: 59
  flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
  this_class: com.sun.media.sound.DirectAudioDevice$DirectTDL
  super_class: com.sun.media.sound.DirectAudioDevice$DirectDL
{
  private void <init>(javax.sound.sampled.DataLine$Info, javax.sound.sampled.AudioFormat, int, com.sun.media.sound.DirectAudioDevice);
    descriptor: (Ljavax/sound/sampled/DataLine$Info;Ljavax/sound/sampled/AudioFormat;ILcom/sun/media/sound/DirectAudioDevice;)V
    flags: (0x0002) ACC_PRIVATE
    Code:
      stack=8, locals=5, args_size=5
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectTDL this
        start local 1 // javax.sound.sampled.DataLine$Info info
        start local 2 // javax.sound.sampled.AudioFormat format
        start local 3 // int bufferSize
        start local 4 // com.sun.media.sound.DirectAudioDevice mixer
         0: .line 902
            aload 0 /* this */
            aload 1 /* info */
            aload 4 /* mixer */
            aload 2 /* format */
            iload 3 /* bufferSize */
            aload 4 /* mixer */
            invokevirtual com.sun.media.sound.DirectAudioDevice.getMixerIndex:()I
            aload 4 /* mixer */
            invokevirtual com.sun.media.sound.DirectAudioDevice.getDeviceID:()I
            iconst_0
            invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.<init>:(Ljavax/sound/sampled/DataLine$Info;Lcom/sun/media/sound/DirectAudioDevice;Ljavax/sound/sampled/AudioFormat;IIIZ)V
         1: .line 903
            return
        end local 4 // com.sun.media.sound.DirectAudioDevice mixer
        end local 3 // int bufferSize
        end local 2 // javax.sound.sampled.AudioFormat format
        end local 1 // javax.sound.sampled.DataLine$Info info
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectTDL this
      LocalVariableTable:
        Start  End  Slot        Name  Signature
            0    2     0        this  Lcom/sun/media/sound/DirectAudioDevice$DirectTDL;
            0    2     1        info  Ljavax/sound/sampled/DataLine$Info;
            0    2     2      format  Ljavax/sound/sampled/AudioFormat;
            0    2     3  bufferSize  I
            0    2     4       mixer  Lcom/sun/media/sound/DirectAudioDevice;
    MethodParameters:
            Name  Flags
      info        
      format      
      bufferSize  
      mixer       

  public int read(byte[], int, int);
    descriptor: ([BII)I
    flags: (0x0001) ACC_PUBLIC
    Code:
      stack=6, locals=7, args_size=4
        start local 0 // com.sun.media.sound.DirectAudioDevice$DirectTDL this
        start local 1 // byte[] b
        start local 2 // int off
        start local 3 // int len
         0: .line 907
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
         1: .line 908
            iload 3 /* len */
            ifne 3
         2: .line 909
            iconst_0
            ireturn
         3: .line 911
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            ifge 5
         4: .line 912
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal len: "
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
            iload 3 /* len */
            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
         5: .line 914
      StackMap locals:
      StackMap stack:
            iload 3 /* len */
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            irem
            ifeq 10
         6: .line 915
            new java.lang.IllegalArgumentException
            dup
            new java.lang.StringBuilder
            dup
            ldc "illegal request to read non-integral number of frames ("
            invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
         7: .line 917
            iload 3 /* len */
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes, "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
         8: .line 918
            ldc "frameSize = "
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
            invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
            invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
            ldc " bytes)"
            invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
         9: .line 915
            invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
            athrow
        10: .line 920
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            ifge 12
        11: .line 921
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            iload 2 /* off */
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        12: .line 923
      StackMap locals:
      StackMap stack:
            iload 2 /* off */
            i2l
            iload 3 /* len */
            i2l
            ladd
            aload 1 /* b */
            arraylength
            i2l
            lcmp
            ifle 14
        13: .line 924
            new java.lang.ArrayIndexOutOfBoundsException
            dup
            aload 1 /* b */
            arraylength
            invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
            athrow
        14: .line 926
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            dup
            astore 4
            monitorenter
        15: .line 927
            aload 0 /* this */
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.isActive:()Z
            ifne 18
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 18
        16: .line 931
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setActive:(Z)V
        17: .line 932
            aload 0 /* this */
            iconst_1
            invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setStarted:(Z)V
        18: .line 926
      StackMap locals: java.lang.Object
      StackMap stack:
            aload 4
            monitorexit
        19: goto 22
      StackMap locals:
      StackMap stack: java.lang.Throwable
        20: aload 4
            monitorexit
        21: athrow
        22: .line 935
      StackMap locals:
      StackMap stack:
            iconst_0
            istore 4 /* read */
        start local 4 // int read
        23: .line 936
            goto 48
        24: .line 938
      StackMap locals: int
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lockNative:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        25: .line 939
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.id:J
            aload 1 /* b */
            iload 2 /* off */
            iload 3 /* len */
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.softwareConversionSize:I
            invokestatic com.sun.media.sound.DirectAudioDevice.nRead:(J[BIII)I
            istore 5 /* thisRead */
        start local 5 // int thisRead
        26: .line 940
            iload 5 /* thisRead */
            ifge 29
        27: .line 942
            aload 6
            monitorexit
        28: goto 49
        29: .line 944
      StackMap locals: int java.lang.Object
      StackMap stack:
            aload 0 /* this */
            dup
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.bytePosition:J
            iload 5 /* thisRead */
            i2l
            ladd
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.bytePosition:J
        30: .line 945
            iload 5 /* thisRead */
            ifle 32
        31: .line 946
            aload 0 /* this */
            iconst_0
            putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.drained:Z
        32: .line 938
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        33: goto 36
        end local 5 // int thisRead
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int top java.lang.Object
      StackMap stack: java.lang.Throwable
        34: aload 6
            monitorexit
        35: athrow
        start local 5 // int thisRead
        36: .line 949
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int
      StackMap stack:
            iload 3 /* len */
            iload 5 /* thisRead */
            isub
            istore 3 /* len */
        37: .line 950
            iload 4 /* read */
            iload 5 /* thisRead */
            iadd
            istore 4 /* read */
        38: .line 951
            iload 3 /* len */
            ifle 49
        39: .line 952
            iload 2 /* off */
            iload 5 /* thisRead */
            iadd
            istore 2 /* off */
        40: .line 953
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            dup
            astore 6
            monitorenter
        41: .line 955
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.waitTime:I
            i2l
            invokevirtual java.lang.Object.wait:(J)V
        42: .line 956
            goto 44
      StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int java.lang.Object
      StackMap stack: java.lang.InterruptedException
        43: pop
        44: .line 953
      StackMap locals:
      StackMap stack:
            aload 6
            monitorexit
        45: goto 48
      StackMap locals:
      StackMap stack: java.lang.Throwable
        46: aload 6
            monitorexit
        47: athrow
        end local 5 // int thisRead
        48: .line 936
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
            ifeq 49
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 24
        49: .line 962
      StackMap locals:
      StackMap stack:
            aload 0 /* this */
            getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
            ifeq 51
        50: .line 963
            iconst_0
            istore 4 /* read */
        51: .line 965
      StackMap locals:
      StackMap stack:
            iload 4 /* read */
            ireturn
        end local 4 // int read
        end local 3 // int len
        end local 2 // int off
        end local 1 // byte[] b
        end local 0 // com.sun.media.sound.DirectAudioDevice$DirectTDL this
      LocalVariableTable:
        Start  End  Slot      Name  Signature
            0   52     0      this  Lcom/sun/media/sound/DirectAudioDevice$DirectTDL;
            0   52     1         b  [B
            0   52     2       off  I
            0   52     3       len  I
           23   52     4      read  I
           26   34     5  thisRead  I
           36   48     5  thisRead  I
      Exception table:
        from    to  target  type
          15    19      20  any
          20    21      20  any
          25    28      34  any
          29    33      34  any
          34    35      34  any
          41    42      43  Class java.lang.InterruptedException
          41    45      46  any
          46    47      46  any
    MethodParameters:
      Name  Flags
      b     
      off   
      len   
}
SourceFile: "DirectAudioDevice.java"
NestHost: com.sun.media.sound.DirectAudioDevice
InnerClasses:
  private DirectDL = com.sun.media.sound.DirectAudioDevice$DirectDL of com.sun.media.sound.DirectAudioDevice
  private final DirectTDL = com.sun.media.sound.DirectAudioDevice$DirectTDL of com.sun.media.sound.DirectAudioDevice
  public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine