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 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 4
aload 2
iload 3
aload 4
invokevirtual com.sun.media.sound.DirectAudioDevice.getMixerIndex:()I
aload 4
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: return
end local 4 end local 3 end local 2 end local 1 end local 0 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 start local 1 start local 2 start local 3 0: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
1: iload 3
ifne 3
2: iconst_0
ireturn
3: StackMap locals:
StackMap stack:
iload 3
ifge 5
4: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "illegal len: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 3
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: StackMap locals:
StackMap stack:
iload 3
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.getFormat:()Ljavax/sound/sampled/AudioFormat;
invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
irem
ifeq 10
6: 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: iload 3
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " bytes, "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
8: ldc "frameSize = "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
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: invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
10: StackMap locals:
StackMap stack:
iload 2
ifge 12
11: new java.lang.ArrayIndexOutOfBoundsException
dup
iload 2
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
athrow
12: StackMap locals:
StackMap stack:
iload 2
i2l
iload 3
i2l
ladd
aload 1
arraylength
i2l
lcmp
ifle 14
13: new java.lang.ArrayIndexOutOfBoundsException
dup
aload 1
arraylength
invokespecial java.lang.ArrayIndexOutOfBoundsException.<init>:(I)V
athrow
14: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
dup
astore 4
monitorenter
15: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.isActive:()Z
ifne 18
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
ifeq 18
16: aload 0
iconst_1
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setActive:(Z)V
17: aload 0
iconst_1
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectTDL.setStarted:(Z)V
18: 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: StackMap locals:
StackMap stack:
iconst_0
istore 4
start local 4 23: goto 48
24: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lockNative:Ljava/lang/Object;
dup
astore 6
monitorenter
25: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.id:J
aload 1
iload 2
iload 3
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.softwareConversionSize:I
invokestatic com.sun.media.sound.DirectAudioDevice.nRead:(J[BIII)I
istore 5
start local 5 26: iload 5
ifge 29
27: aload 6
monitorexit
28: goto 49
29: StackMap locals: int java.lang.Object
StackMap stack:
aload 0
dup
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.bytePosition:J
iload 5
i2l
ladd
putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.bytePosition:J
30: iload 5
ifle 32
31: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectTDL.drained:Z
32: StackMap locals:
StackMap stack:
aload 6
monitorexit
33: goto 36
end local 5 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 36: StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectTDL byte[] int int int int
StackMap stack:
iload 3
iload 5
isub
istore 3
37: iload 4
iload 5
iadd
istore 4
38: iload 3
ifle 49
39: iload 2
iload 5
iadd
istore 2
40: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
dup
astore 6
monitorenter
41: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.lock:Ljava/lang/Object;
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.waitTime:I
i2l
invokevirtual java.lang.Object.wait:(J)V
42: 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: 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 48: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.doIO:Z
ifeq 49
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
ifeq 24
49: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectTDL.flushing:Z
ifeq 51
50: iconst_0
istore 4
51: StackMap locals:
StackMap stack:
iload 4
ireturn
end local 4 end local 3 end local 2 end local 1 end local 0 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