public final class com.sun.media.sound.DataPusher implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0031) ACC_PUBLIC, ACC_FINAL, ACC_SUPER
this_class: com.sun.media.sound.DataPusher
super_class: java.lang.Object
{
private static final int AUTO_CLOSE_TIME;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 5000
private final javax.sound.sampled.SourceDataLine source;
descriptor: Ljavax/sound/sampled/SourceDataLine;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.sound.sampled.AudioFormat format;
descriptor: Ljavax/sound/sampled/AudioFormat;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final javax.sound.sampled.AudioInputStream ais;
descriptor: Ljavax/sound/sampled/AudioInputStream;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final byte[] audioData;
descriptor: [B
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final int audioDataByteLength;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private int pos;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int newPos;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private boolean looping;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
private java.lang.Thread pushThread;
descriptor: Ljava/lang/Thread;
flags: (0x0002) ACC_PRIVATE
private int wantedState;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private int threadState;
descriptor: I
flags: (0x0002) ACC_PRIVATE
private final int STATE_NONE;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 0
private final int STATE_PLAYING;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 1
private final int STATE_WAITING;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 2
private final int STATE_STOPPING;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 3
private final int STATE_STOPPED;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 4
private final int BUFFER_SIZE;
descriptor: I
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
ConstantValue: 16384
public void <init>(javax.sound.sampled.SourceDataLine, javax.sound.sampled.AudioFormat, byte[], int);
descriptor: (Ljavax/sound/sampled/SourceDataLine;Ljavax/sound/sampled/AudioFormat;[BI)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, 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 2
aconst_null
aload 3
iload 4
invokespecial com.sun.media.sound.DataPusher.<init>:(Ljavax/sound/sampled/SourceDataLine;Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/AudioInputStream;[BI)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/DataPusher;
0 2 1 sourceLine Ljavax/sound/sampled/SourceDataLine;
0 2 2 format Ljavax/sound/sampled/AudioFormat;
0 2 3 audioData [B
0 2 4 byteLength I
MethodParameters:
Name Flags
sourceLine
format
audioData
byteLength
public void <init>(javax.sound.sampled.SourceDataLine, javax.sound.sampled.AudioInputStream);
descriptor: (Ljavax/sound/sampled/SourceDataLine;Ljavax/sound/sampled/AudioInputStream;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=6, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokevirtual javax.sound.sampled.AudioInputStream.getFormat:()Ljavax/sound/sampled/AudioFormat;
aload 2
aconst_null
iconst_0
invokespecial com.sun.media.sound.DataPusher.<init>:(Ljavax/sound/sampled/SourceDataLine;Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/AudioInputStream;[BI)V
1: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/media/sound/DataPusher;
0 2 1 sourceLine Ljavax/sound/sampled/SourceDataLine;
0 2 2 ais Ljavax/sound/sampled/AudioInputStream;
MethodParameters:
Name Flags
sourceLine
ais
private void <init>(javax.sound.sampled.SourceDataLine, javax.sound.sampled.AudioFormat, javax.sound.sampled.AudioInputStream, byte[], int);
descriptor: (Ljavax/sound/sampled/SourceDataLine;Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/AudioInputStream;[BI)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=3, locals=6, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: aload 0
iconst_m1
putfield com.sun.media.sound.DataPusher.newPos:I
2: aload 0
aconst_null
putfield com.sun.media.sound.DataPusher.pushThread:Ljava/lang/Thread;
3: aload 0
iconst_0
putfield com.sun.media.sound.DataPusher.STATE_NONE:I
4: aload 0
iconst_1
putfield com.sun.media.sound.DataPusher.STATE_PLAYING:I
5: aload 0
iconst_2
putfield com.sun.media.sound.DataPusher.STATE_WAITING:I
6: aload 0
iconst_3
putfield com.sun.media.sound.DataPusher.STATE_STOPPING:I
7: aload 0
iconst_4
putfield com.sun.media.sound.DataPusher.STATE_STOPPED:I
8: aload 0
sipush 16384
putfield com.sun.media.sound.DataPusher.BUFFER_SIZE:I
9: aload 0
aload 1
putfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
10: aload 0
aload 2
putfield com.sun.media.sound.DataPusher.format:Ljavax/sound/sampled/AudioFormat;
11: aload 0
aload 3
putfield com.sun.media.sound.DataPusher.ais:Ljavax/sound/sampled/AudioInputStream;
12: aload 0
iload 5
putfield com.sun.media.sound.DataPusher.audioDataByteLength:I
13: aload 0
aload 4
ifnonnull 14
aconst_null
goto 17
StackMap locals: com.sun.media.sound.DataPusher javax.sound.sampled.SourceDataLine javax.sound.sampled.AudioFormat javax.sound.sampled.AudioInputStream byte[] int
StackMap stack: com.sun.media.sound.DataPusher
14: aload 4
15: aload 4
arraylength
16: invokestatic java.util.Arrays.copyOf:([BI)[B
StackMap locals: com.sun.media.sound.DataPusher javax.sound.sampled.SourceDataLine javax.sound.sampled.AudioFormat javax.sound.sampled.AudioInputStream byte[] int
StackMap stack: com.sun.media.sound.DataPusher byte[]
17: putfield com.sun.media.sound.DataPusher.audioData:[B
18: 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 19 0 this Lcom/sun/media/sound/DataPusher;
0 19 1 source Ljavax/sound/sampled/SourceDataLine;
0 19 2 format Ljavax/sound/sampled/AudioFormat;
0 19 3 ais Ljavax/sound/sampled/AudioInputStream;
0 19 4 audioData [B
0 19 5 audioDataByteLength I
MethodParameters:
Name Flags
source final
format final
ais final
audioData final
audioDataByteLength final
public synchronized void start();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=2, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
invokevirtual com.sun.media.sound.DataPusher.start:(Z)V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/sun/media/sound/DataPusher;
public synchronized void start(boolean);
descriptor: (Z)V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=6, locals=3, args_size=2
start local 0 start local 1 0: aload 0
getfield com.sun.media.sound.DataPusher.threadState:I
iconst_3
if_icmpne 2
1: aload 0
invokevirtual com.sun.media.sound.DataPusher.stop:()V
2: StackMap locals:
StackMap stack:
aload 0
iload 1
putfield com.sun.media.sound.DataPusher.looping:Z
3: aload 0
iconst_0
putfield com.sun.media.sound.DataPusher.newPos:I
4: aload 0
iconst_1
putfield com.sun.media.sound.DataPusher.wantedState:I
5: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.isOpen:()Z
ifne 7
6: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
aload 0
getfield com.sun.media.sound.DataPusher.format:Ljavax/sound/sampled/AudioFormat;
invokeinterface javax.sound.sampled.SourceDataLine.open:(Ljavax/sound/sampled/AudioFormat;)V
7: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.flush:()V
8: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.start:()V
9: aload 0
getfield com.sun.media.sound.DataPusher.pushThread:Ljava/lang/Thread;
ifnonnull 16
10: aload 0
aload 0
11: aconst_null
12: iconst_0
13: iconst_m1
14: iconst_1
15: invokestatic com.sun.media.sound.JSSecurityManager.createThread:(Ljava/lang/Runnable;Ljava/lang/String;ZIZ)Ljava/lang/Thread;
putfield com.sun.media.sound.DataPusher.pushThread:Ljava/lang/Thread;
16: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.Object.notifyAll:()V
17: goto 20
StackMap locals:
StackMap stack: java.lang.Exception
18: astore 2
start local 2 19: getstatic com.sun.media.sound.Printer.err:Z
ifeq 20
aload 2
invokevirtual java.lang.Exception.printStackTrace:()V
end local 2 20: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/sun/media/sound/DataPusher;
0 21 1 loop Z
19 20 2 e Ljava/lang/Exception;
Exception table:
from to target type
0 17 18 Class java.lang.Exception
MethodParameters:
Name Flags
loop
public synchronized void stop();
descriptor: ()V
flags: (0x0021) ACC_PUBLIC, ACC_SYNCHRONIZED
Code:
stack=3, locals=2, args_size=1
start local 0 0: aload 0
getfield com.sun.media.sound.DataPusher.threadState:I
iconst_3
if_icmpeq 3
1: aload 0
getfield com.sun.media.sound.DataPusher.threadState:I
iconst_4
if_icmpeq 3
2: aload 0
getfield com.sun.media.sound.DataPusher.pushThread:Ljava/lang/Thread;
ifnonnull 4
3: StackMap locals:
StackMap stack:
return
4: StackMap locals:
StackMap stack:
aload 0
iconst_2
putfield com.sun.media.sound.DataPusher.wantedState:I
5: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
ifnull 7
6: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.flush:()V
7: StackMap locals:
StackMap stack:
aload 0
invokevirtual java.lang.Object.notifyAll:()V
8: bipush 50
istore 1
start local 1 9: goto 13
10: StackMap locals: int
StackMap stack:
aload 0
ldc 100
invokevirtual java.lang.Object.wait:(J)V
11: goto 13
StackMap locals:
StackMap stack: java.lang.InterruptedException
12: pop
13: StackMap locals:
StackMap stack:
iload 1
iinc 1 -1
iflt 14
aload 0
getfield com.sun.media.sound.DataPusher.threadState:I
iconst_1
if_icmpeq 10
14: StackMap locals:
StackMap stack:
return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/sun/media/sound/DataPusher;
9 15 1 maxWaitCount I
Exception table:
from to target type
10 11 12 Class java.lang.InterruptedException
synchronized void close();
descriptor: ()V
flags: (0x0020) ACC_SYNCHRONIZED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
ifnull 2
1: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.close:()V
2: StackMap locals:
StackMap stack:
return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/sun/media/sound/DataPusher;
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=5, args_size=1
start local 0 0: aconst_null
astore 1
start local 1 1: aload 0
getfield com.sun.media.sound.DataPusher.ais:Ljavax/sound/sampled/AudioInputStream;
ifnull 2
iconst_1
goto 3
StackMap locals: byte[]
StackMap stack:
2: iconst_0
StackMap locals:
StackMap stack: int
3: istore 2
start local 2 4: iload 2
ifeq 7
5: sipush 16384
newarray 8
astore 1
6: goto 45
7: StackMap locals: int
StackMap stack:
aload 0
getfield com.sun.media.sound.DataPusher.audioData:[B
astore 1
8: goto 45
9: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DataPusher.wantedState:I
iconst_2
if_icmpne 20
10: aload 0
dup
astore 3
monitorenter
11: aload 0
iconst_2
putfield com.sun.media.sound.DataPusher.threadState:I
12: aload 0
iconst_3
putfield com.sun.media.sound.DataPusher.wantedState:I
13: aload 0
ldc 5000
invokevirtual java.lang.Object.wait:(J)V
14: aload 3
monitorexit
15: goto 45
StackMap locals: com.sun.media.sound.DataPusher byte[] int com.sun.media.sound.DataPusher
StackMap stack: java.lang.Throwable
16: aload 3
monitorexit
17: athrow
18: StackMap locals: com.sun.media.sound.DataPusher byte[] int
StackMap stack: java.lang.InterruptedException
pop
19: goto 45
20: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DataPusher.newPos:I
iflt 23
21: aload 0
aload 0
getfield com.sun.media.sound.DataPusher.newPos:I
putfield com.sun.media.sound.DataPusher.pos:I
22: aload 0
iconst_m1
putfield com.sun.media.sound.DataPusher.newPos:I
23: StackMap locals:
StackMap stack:
aload 0
iconst_1
putfield com.sun.media.sound.DataPusher.threadState:I
24: sipush 16384
istore 3
start local 3 25: iload 2
ifeq 32
26: aload 0
iconst_0
putfield com.sun.media.sound.DataPusher.pos:I
27: aload 0
getfield com.sun.media.sound.DataPusher.ais:Ljavax/sound/sampled/AudioInputStream;
aload 1
iconst_0
aload 1
arraylength
invokevirtual javax.sound.sampled.AudioInputStream.read:([BII)I
istore 3
28: goto 36
StackMap locals: com.sun.media.sound.DataPusher byte[] int int
StackMap stack: java.io.IOException
29: pop
30: iconst_m1
istore 3
31: goto 36
32: StackMap locals:
StackMap stack:
iload 3
aload 0
getfield com.sun.media.sound.DataPusher.audioDataByteLength:I
aload 0
getfield com.sun.media.sound.DataPusher.pos:I
isub
if_icmple 34
33: aload 0
getfield com.sun.media.sound.DataPusher.audioDataByteLength:I
aload 0
getfield com.sun.media.sound.DataPusher.pos:I
isub
istore 3
34: StackMap locals:
StackMap stack:
iload 3
ifne 36
35: iconst_m1
istore 3
36: StackMap locals:
StackMap stack:
iload 3
ifge 43
37: iload 2
ifne 40
aload 0
getfield com.sun.media.sound.DataPusher.looping:Z
ifeq 40
38: aload 0
iconst_0
putfield com.sun.media.sound.DataPusher.pos:I
39: goto 45
40: StackMap locals:
StackMap stack:
aload 0
iconst_2
putfield com.sun.media.sound.DataPusher.wantedState:I
41: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.drain:()V
42: goto 45
43: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
aload 1
aload 0
getfield com.sun.media.sound.DataPusher.pos:I
iload 3
invokeinterface javax.sound.sampled.SourceDataLine.write:([BII)I
istore 4
start local 4 44: aload 0
dup
getfield com.sun.media.sound.DataPusher.pos:I
iload 4
iadd
putfield com.sun.media.sound.DataPusher.pos:I
end local 4 end local 3 45: StackMap locals:
StackMap stack:
aload 0
getfield com.sun.media.sound.DataPusher.wantedState:I
iconst_3
if_icmpne 9
46: aload 0
iconst_3
putfield com.sun.media.sound.DataPusher.threadState:I
47: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.flush:()V
48: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.stop:()V
49: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.flush:()V
50: aload 0
getfield com.sun.media.sound.DataPusher.source:Ljavax/sound/sampled/SourceDataLine;
invokeinterface javax.sound.sampled.SourceDataLine.close:()V
51: aload 0
iconst_4
putfield com.sun.media.sound.DataPusher.threadState:I
52: aload 0
dup
astore 3
monitorenter
53: aload 0
aconst_null
putfield com.sun.media.sound.DataPusher.pushThread:Ljava/lang/Thread;
54: aload 0
invokevirtual java.lang.Object.notifyAll:()V
55: aload 3
monitorexit
56: goto 59
StackMap locals: com.sun.media.sound.DataPusher byte[] int com.sun.media.sound.DataPusher
StackMap stack: java.lang.Throwable
57: aload 3
monitorexit
58: athrow
59: StackMap locals:
StackMap stack:
return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 60 0 this Lcom/sun/media/sound/DataPusher;
1 60 1 buffer [B
4 60 2 useStream Z
25 45 3 toWrite I
44 45 4 bytesWritten I
Exception table:
from to target type
11 15 16 any
16 17 16 any
10 18 18 Class java.lang.InterruptedException
26 28 29 Class java.io.IOException
53 56 57 any
57 58 57 any
}
SourceFile: "DataPusher.java"