final class com.sun.media.sound.DirectAudioDevice$DirectClip extends com.sun.media.sound.DirectAudioDevice$DirectDL implements javax.sound.sampled.Clip, java.lang.Runnable, com.sun.media.sound.AutoClosingClip
minor version: 0
major version: 59
flags: flags: (0x0030) ACC_FINAL, ACC_SUPER
this_class: com.sun.media.sound.DirectAudioDevice$DirectClip
super_class: com.sun.media.sound.DirectAudioDevice$DirectDL
{
private volatile java.lang.Thread thread;
descriptor: Ljava/lang/Thread;
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile byte[] audioData;
descriptor: [B
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int frameSize;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int m_lengthInFrames;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int loopCount;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int clipBytePosition;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int newFramePosition;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int loopStartFrame;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private volatile int loopEndFrame;
descriptor: I
flags: (0x0042) ACC_PRIVATE, ACC_VOLATILE
private boolean autoclosing;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
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_1
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: aload 0
aconst_null
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
2: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
3: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 4 1 info Ljavax/sound/sampled/DataLine$Info;
0 4 2 format Ljavax/sound/sampled/AudioFormat;
0 4 3 bufferSize I
0 4 4 mixer Lcom/sun/media/sound/DirectAudioDevice;
MethodParameters:
Name Flags
info
format
bufferSize
mixer
public void open(javax.sound.sampled.AudioFormat, byte[], int, int);
descriptor: (Ljavax/sound/sampled/AudioFormat;[BII)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 1
invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
1: aload 1
invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
iload 4
invokestatic com.sun.media.sound.Toolkit.validateBuffer:(II)V
2: iload 4
newarray 8
astore 5
start local 5 3: aload 2
iload 3
aload 5
iconst_0
iload 4
invokestatic java.lang.System.arraycopy:(Ljava/lang/Object;ILjava/lang/Object;II)V
4: aload 0
aload 1
aload 5
iload 4
aload 1
invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
idiv
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.open:(Ljavax/sound/sampled/AudioFormat;[BI)V
5: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 6 1 format Ljavax/sound/sampled/AudioFormat;
0 6 2 data [B
0 6 3 offset I
0 6 4 bufferSize I
3 6 5 newData [B
Exceptions:
throws javax.sound.sampled.LineUnavailableException
MethodParameters:
Name Flags
format
data
offset
bufferSize
private void open(javax.sound.sampled.AudioFormat, byte[], int);
descriptor: (Ljavax/sound/sampled/AudioFormat;[BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
1: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
dup
astore 4
monitorenter
2: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
ifeq 6
3: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Clip is already open with format "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
4: ldc " and frame lengh of "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
5: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
6: StackMap locals: com.sun.media.sound.AbstractMixer
StackMap stack:
aload 0
aload 2
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
7: aload 0
aload 1
invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
8: aload 0
iload 3
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.m_lengthInFrames:I
9: aload 0
lconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.bytePosition:J
10: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
11: aload 0
iconst_m1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
12: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
13: aload 0
iload 3
iconst_1
isub
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
14: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
15: aload 0
aload 1
aload 1
ldc 1000
invokestatic com.sun.media.sound.Toolkit.millis2bytes:(Ljavax/sound/sampled/AudioFormat;J)J
l2i
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.open:(Ljavax/sound/sampled/AudioFormat;I)V
16: goto 23
StackMap locals:
StackMap stack: javax.sound.sampled.LineUnavailableException
17: astore 5
start local 5 18: aload 0
aconst_null
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
19: aload 5
athrow
end local 5 20: StackMap locals:
StackMap stack: java.lang.IllegalArgumentException
astore 5
start local 5 21: aload 0
aconst_null
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
22: aload 5
athrow
end local 5 23: StackMap locals:
StackMap stack:
bipush 6
istore 5
start local 5 24: aload 0
aload 0
25: ldc "Direct Clip"
26: iconst_1
27: iload 5
28: iconst_0
29: invokestatic com.sun.media.sound.JSSecurityManager.createThread:(Ljava/lang/Runnable;Ljava/lang/String;ZIZ)Ljava/lang/Thread;
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
30: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
invokevirtual java.lang.Thread.start:()V
end local 5 31: aload 4
monitorexit
32: goto 35
StackMap locals:
StackMap stack: java.lang.Throwable
33: aload 4
monitorexit
34: athrow
35: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isAutoClosing:()Z
ifeq 37
36: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
aload 0
invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipOpened:(Lcom/sun/media/sound/AutoClosingClip;)V
37: StackMap locals:
StackMap stack:
return
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 38 1 format Ljavax/sound/sampled/AudioFormat;
0 38 2 data [B
0 38 3 frameLength I
18 20 5 lue Ljavax/sound/sampled/LineUnavailableException;
21 23 5 iae Ljava/lang/IllegalArgumentException;
24 31 5 priority I
Exception table:
from to target type
15 16 17 Class javax.sound.sampled.LineUnavailableException
15 16 20 Class java.lang.IllegalArgumentException
2 32 33 any
33 34 33 any
Exceptions:
throws javax.sound.sampled.LineUnavailableException
MethodParameters:
Name Flags
format
data
frameLength
public void open(javax.sound.sampled.AudioInputStream);
descriptor: (Ljavax/sound/sampled/AudioInputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
invokestatic com.sun.media.sound.Toolkit.isFullySpecifiedAudioFormat:(Ljavax/sound/sampled/AudioFormat;)V
1: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.mixer:Lcom/sun/media/sound/AbstractMixer;
dup
astore 2
monitorenter
2: aconst_null
astore 3
start local 3 3: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
ifeq 7
4: new java.lang.IllegalStateException
dup
new java.lang.StringBuilder
dup
ldc "Clip is already open with format "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
5: ldc " and frame lengh of "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
6: invokespecial java.lang.IllegalStateException.<init>:(Ljava/lang/String;)V
athrow
7: StackMap locals: com.sun.media.sound.AbstractMixer byte[]
StackMap stack:
aload 1
invokevirtual javax.sound.sampled.AudioInputStream.getFrameLength:()J
l2i
istore 4
start local 4 8: iconst_0
istore 5
start local 5 9: aload 1
invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
invokevirtual javax.sound.sampled.AudioFormat.getFrameSize:()I
istore 6
start local 6 10: iload 4
iconst_m1
if_icmpeq 30
11: iload 4
iload 6
imul
istore 7
start local 7 12: iload 7
ifge 14
13: new java.lang.IllegalArgumentException
dup
ldc "Audio data < 0"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
14: StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int int
StackMap stack:
iload 7
newarray 8
astore 3
15: goto 18
StackMap locals:
StackMap stack: java.lang.OutOfMemoryError
16: pop
17: new java.io.IOException
dup
ldc "Audio data is too big"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
18: StackMap locals:
StackMap stack:
iload 7
istore 8
start local 8 19: iconst_0
istore 9
start local 9 20: goto 28
21: StackMap locals: int int
StackMap stack:
aload 1
aload 3
iload 5
iload 8
invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
istore 9
22: iload 9
ifle 26
23: iload 5
iload 9
iadd
istore 5
24: iload 8
iload 9
isub
istore 8
25: goto 28
26: StackMap locals:
StackMap stack:
iload 9
ifne 28
27: invokestatic java.lang.Thread.yield:()V
28: StackMap locals:
StackMap stack:
iload 8
ifle 47
iload 9
ifge 21
end local 9 end local 8 end local 7 29: goto 47
30: StackMap locals:
StackMap stack:
sipush 16384
iload 6
invokestatic java.lang.Math.max:(II)I
istore 7
start local 7 31: new com.sun.media.sound.DirectAudioDevice$DirectBAOS
dup
invokespecial com.sun.media.sound.DirectAudioDevice$DirectBAOS.<init>:()V
astore 8
start local 8 32: iload 7
newarray 8
astore 9
start local 9 33: goto 36
end local 9 StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int int com.sun.media.sound.DirectAudioDevice$DirectBAOS
StackMap stack: java.lang.OutOfMemoryError
34: pop
35: new java.io.IOException
dup
ldc "Audio data is too big"
invokespecial java.io.IOException.<init>:(Ljava/lang/String;)V
athrow
start local 9 36: StackMap locals: byte[]
StackMap stack:
iconst_0
istore 10
start local 10 37: goto 45
38: StackMap locals: int
StackMap stack:
aload 1
aload 9
iconst_0
aload 9
arraylength
invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
istore 10
39: iload 10
ifle 43
40: aload 8
aload 9
iconst_0
iload 10
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.write:([BII)V
41: iload 5
iload 10
iadd
istore 5
42: goto 45
43: StackMap locals:
StackMap stack:
iload 10
ifne 45
44: invokestatic java.lang.Thread.yield:()V
45: StackMap locals:
StackMap stack:
iload 10
ifge 38
46: aload 8
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectBAOS.getInternalBuffer:()[B
astore 3
end local 10 end local 9 end local 8 end local 7 47: StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer byte[] int int int
StackMap stack:
iload 5
iload 6
idiv
istore 4
48: aload 0
aload 1
invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
aload 3
iload 4
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.open:(Ljavax/sound/sampled/AudioFormat;[BI)V
end local 6 end local 5 end local 4 end local 3 49: aload 2
monitorexit
50: goto 53
StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip javax.sound.sampled.AudioInputStream com.sun.media.sound.AbstractMixer
StackMap stack: java.lang.Throwable
51: aload 2
monitorexit
52: athrow
53: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 54 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 54 1 stream Ljavax/sound/sampled/AudioInputStream;
3 49 3 streamData [B
8 49 4 lengthInFrames I
9 49 5 bytesRead I
10 49 6 frameSize I
12 29 7 arraysize I
19 29 8 bytesRemaining I
20 29 9 thisRead I
31 47 7 maxReadLimit I
32 47 8 dbaos Lcom/sun/media/sound/DirectAudioDevice$DirectBAOS;
33 34 9 tmp [B
36 47 9 tmp [B
37 47 10 thisRead I
Exception table:
from to target type
14 15 16 Class java.lang.OutOfMemoryError
32 33 34 Class java.lang.OutOfMemoryError
2 50 51 any
51 52 51 any
Exceptions:
throws javax.sound.sampled.LineUnavailableException, java.io.IOException
MethodParameters:
Name Flags
stream
public int getFrameLength();
descriptor: ()I
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.m_lengthInFrames:I
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
public long getMicrosecondLength();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
i2l
invokestatic com.sun.media.sound.Toolkit.frames2micros:(Ljavax/sound/sampled/AudioFormat;J)J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
public void setFramePosition(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=2
start local 0 start local 1 0: iload 1
ifge 3
1: iconst_0
istore 1
2: goto 5
3: StackMap locals:
StackMap stack:
iload 1
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
if_icmplt 5
4: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
istore 1
5: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
ifeq 8
6: aload 0
iload 1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
7: goto 10
8: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
imul
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
9: aload 0
iconst_m1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
10: StackMap locals:
StackMap stack:
aload 0
iload 1
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
imul
i2l
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.bytePosition:J
11: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.flush:()V
12: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lockNative:Ljava/lang/Object;
dup
astore 2
monitorenter
13: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.id:J
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.isSource:Z
iload 1
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
imul
i2l
invokestatic com.sun.media.sound.DirectAudioDevice.nSetBytePosition:(JZJ)V
14: aload 2
monitorexit
15: goto 18
StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip int java.lang.Object
StackMap stack: java.lang.Throwable
16: aload 2
monitorexit
17: athrow
18: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 19 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 19 1 frames I
Exception table:
from to target type
13 15 16 any
16 17 16 any
MethodParameters:
Name Flags
frames
public long getLongFramePosition();
descriptor: ()J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.getLongFramePosition:()J
lreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
public synchronized void setMicrosecondPosition(long);
descriptor: (J)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=5, args_size=2
start local 0 start local 1 0: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFormat:()Ljavax/sound/sampled/AudioFormat;
lload 1
invokestatic com.sun.media.sound.Toolkit.micros2frames:(Ljavax/sound/sampled/AudioFormat;J)J
lstore 3
start local 3 1: aload 0
lload 3
l2i
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.setFramePosition:(I)V
2: return
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 3 1 microseconds J
1 3 3 frames J
MethodParameters:
Name Flags
microseconds
public void setLoopPoints(int, int);
descriptor: (II)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=3, args_size=3
start local 0 start local 1 start local 2 0: iload 1
iflt 1
iload 1
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
if_icmplt 2
1: StackMap locals:
StackMap stack:
new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "illegal value for start: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 1
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
2: StackMap locals:
StackMap stack:
iload 2
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
if_icmplt 4
3: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "illegal value for end: "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
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
4: StackMap locals:
StackMap stack:
iload 2
iconst_m1
if_icmpne 8
5: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
iconst_1
isub
istore 2
6: iload 2
ifge 8
7: iconst_0
istore 2
8: StackMap locals:
StackMap stack:
iload 2
iload 1
if_icmpge 10
9: new java.lang.IllegalArgumentException
dup
new java.lang.StringBuilder
dup
ldc "End position "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
iload 2
invokevirtual java.lang.StringBuilder.append:(I)Ljava/lang/StringBuilder;
ldc " preceeds start position "
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
iload 1
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
10: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
11: aload 0
iload 2
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
12: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 13 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 13 1 start I
0 13 2 end I
MethodParameters:
Name Flags
start
end
public void loop(int);
descriptor: (I)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
iload 1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
1: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.start:()V
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 3 1 count I
MethodParameters:
Name Flags
count
void implOpen(javax.sound.sampled.AudioFormat, int);
descriptor: (Ljavax/sound/sampled/AudioFormat;I)V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
ifnonnull 2
1: new java.lang.IllegalArgumentException
dup
ldc "illegal call to open() in interface Clip"
invokespecial java.lang.IllegalArgumentException.<init>:(Ljava/lang/String;)V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
iload 2
invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implOpen:(Ljavax/sound/sampled/AudioFormat;I)V
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 4 1 format Ljavax/sound/sampled/AudioFormat;
0 4 2 bufferSize I
Exceptions:
throws javax.sound.sampled.LineUnavailableException
MethodParameters:
Name Flags
format
bufferSize
void implClose();
descriptor: ()V
flags: (0x0000)
Code:
stack=3, locals=3, args_size=1
start local 0 0: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
astore 1
start local 1 1: aload 0
aconst_null
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
2: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
3: aload 1
ifnull 13
4: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
dup
astore 2
monitorenter
5: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
invokevirtual java.lang.Object.notifyAll:()V
6: aload 2
monitorexit
7: goto 10
StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip java.lang.Thread java.lang.Object
StackMap stack: java.lang.Throwable
8: aload 2
monitorexit
9: athrow
10: StackMap locals:
StackMap stack:
aload 1
ldc 2000
invokevirtual java.lang.Thread.join:(J)V
11: goto 13
StackMap locals:
StackMap stack: java.lang.InterruptedException
12: pop
13: StackMap locals:
StackMap stack:
aload 0
invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implClose:()V
14: aload 0
aconst_null
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
15: aload 0
iconst_m1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
16: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
aload 0
invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipClosed:(Lcom/sun/media/sound/AutoClosingClip;)V
17: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
1 18 1 oldThread Ljava/lang/Thread;
Exception table:
from to target type
5 7 8 any
8 9 8 any
10 11 12 Class java.lang.InterruptedException
void implStart();
descriptor: ()V
flags: (0x0000)
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStart:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
void implStop();
descriptor: ()V
flags: (0x0000)
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
invokespecial com.sun.media.sound.DirectAudioDevice$DirectDL.implStop:()V
1: aload 0
iconst_0
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
2: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=1
start local 0 0: invokestatic java.lang.Thread.currentThread:()Ljava/lang/Thread;
astore 1
start local 1 1: goto 36
2: StackMap locals: java.lang.Thread
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
dup
astore 2
monitorenter
3: goto 7
4: StackMap locals: java.lang.Object
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.lock:Ljava/lang/Object;
invokevirtual java.lang.Object.wait:()V
5: goto 7
StackMap locals:
StackMap stack: java.lang.InterruptedException
6: pop
7: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
ifne 8
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
aload 1
if_acmpeq 4
8: StackMap locals:
StackMap stack:
aload 2
monitorexit
9: goto 35
StackMap locals:
StackMap stack: java.lang.Throwable
10: aload 2
monitorexit
11: athrow
12: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
iflt 15
13: aload 0
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
imul
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
14: aload 0
iconst_m1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
15: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getFrameLength:()I
iconst_1
isub
istore 2
start local 2 16: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
ifgt 17
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
iconst_m1
if_icmpne 18
17: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopEndFrame:I
istore 2
18: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
idiv
i2l
lstore 3
start local 3 19: iload 2
i2l
lload 3
lsub
lconst_1
ladd
l2i
istore 5
start local 5 20: iload 5
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
imul
istore 6
start local 6 21: iload 6
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
if_icmple 23
22: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getBufferSize:()I
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
invokestatic com.sun.media.sound.Toolkit.align:(II)I
istore 6
23: StackMap locals: long int int
StackMap stack:
aload 0
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.audioData:[B
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
iload 6
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.write:([BII)I
istore 7
start local 7 24: aload 0
dup
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
iload 7
iadd
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
25: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
ifeq 35
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
ifge 35
iload 7
iflt 35
26: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.clipBytePosition:I
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.frameSize:I
idiv
i2l
lstore 3
27: lload 3
iload 2
i2l
lcmp
ifle 35
28: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
ifgt 29
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
iconst_m1
if_icmpne 33
29: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
iconst_m1
if_icmpeq 31
30: aload 0
dup
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
iconst_1
isub
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopCount:I
31: StackMap locals:
StackMap stack:
aload 0
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.loopStartFrame:I
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.newFramePosition:I
32: goto 35
33: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.drain:()V
34: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.stop:()V
end local 7 end local 6 end local 5 end local 3 end local 2 35: StackMap locals: com.sun.media.sound.DirectAudioDevice$DirectClip java.lang.Thread
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.doIO:Z
ifeq 36
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
aload 1
if_acmpeq 12
36: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.thread:Ljava/lang/Thread;
aload 1
if_acmpeq 2
37: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 38 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
1 38 1 curThread Ljava/lang/Thread;
16 35 2 endFrame I
19 35 3 framePos J
20 35 5 toWriteFrames I
21 35 6 toWriteBytes I
24 35 7 written I
Exception table:
from to target type
4 5 6 Class java.lang.InterruptedException
3 9 10 any
10 11 10 any
public boolean isAutoClosing();
descriptor: ()Z
flags: (0x0001) ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
public void setAutoClosing(boolean);
descriptor: (Z)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: iload 1
aload 0
getfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
if_icmpeq 7
1: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.isOpen:()Z
ifeq 6
2: iload 1
ifeq 5
3: aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
aload 0
invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipOpened:(Lcom/sun/media/sound/AutoClosingClip;)V
4: goto 6
5: StackMap locals:
StackMap stack:
aload 0
invokevirtual com.sun.media.sound.DirectAudioDevice$DirectClip.getEventDispatcher:()Lcom/sun/media/sound/EventDispatcher;
aload 0
invokevirtual com.sun.media.sound.EventDispatcher.autoClosingClipClosed:(Lcom/sun/media/sound/AutoClosingClip;)V
6: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield com.sun.media.sound.DirectAudioDevice$DirectClip.autoclosing:Z
7: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
0 8 1 value Z
MethodParameters:
Name Flags
value
protected boolean requiresServicing();
descriptor: ()Z
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: iconst_0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/sun/media/sound/DirectAudioDevice$DirectClip;
}
SourceFile: "DirectAudioDevice.java"
NestHost: com.sun.media.sound.DirectAudioDevice
InnerClasses:
private DirectBAOS = com.sun.media.sound.DirectAudioDevice$DirectBAOS of com.sun.media.sound.DirectAudioDevice
private final DirectClip = com.sun.media.sound.DirectAudioDevice$DirectClip of com.sun.media.sound.DirectAudioDevice
private DirectDL = com.sun.media.sound.DirectAudioDevice$DirectDL of com.sun.media.sound.DirectAudioDevice
public Info = javax.sound.sampled.DataLine$Info of javax.sound.sampled.DataLine