class android.media.MediaSync$1 implements java.lang.Runnable
minor version: 0
major version: 59
flags: flags: (0x0020) ACC_SUPER
this_class: android.media.MediaSync$1
super_class: java.lang.Object
{
final android.media.MediaSync this$0;
descriptor: Landroid/media/MediaSync;
flags: (0x1010) ACC_FINAL, ACC_SYNTHETIC
void <init>(android.media.MediaSync);
descriptor: (Landroid/media/MediaSync;)V
flags: (0x0000)
Code:
stack=2, locals=2, args_size=2
start local 0 // android.media.MediaSync$1 this
0: .line 525
aload 0 /* this */
aload 1
putfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
aload 0 /* this */
invokespecial java.lang.Object.<init>:()V
return
end local 0 // android.media.MediaSync$1 this
LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Landroid/media/MediaSync$1;
MethodParameters:
Name Flags
this$0 final
public void run();
descriptor: ()V
flags: (0x0001) ACC_PUBLIC
Code:
stack=5, locals=7, args_size=1
start local 0 // android.media.MediaSync$1 this
0: .line 527
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioLock:Ljava/lang/Object;
dup
astore 1
monitorenter
1: .line 528
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mPlaybackRate:F
f2d
dconst_0
dcmpl
ifne 4
2: .line 529
aload 1
monitorexit
3: return
4: .line 532
StackMap locals: java.lang.Object
StackMap stack:
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioBuffers:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifeq 7
5: .line 533
aload 1
monitorexit
6: return
7: .line 536
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioBuffers:Ljava/util/List;
iconst_0
invokeinterface java.util.List.get:(I)Ljava/lang/Object;
checkcast android.media.MediaSync$AudioBuffer
astore 2 /* audioBuffer */
start local 2 // android.media.MediaSync$AudioBuffer audioBuffer
8: .line 537
aload 2 /* audioBuffer */
getfield android.media.MediaSync$AudioBuffer.mByteBuffer:Ljava/nio/ByteBuffer;
invokevirtual java.nio.ByteBuffer.remaining:()I
istore 3 /* size */
start local 3 // int size
9: .line 539
iload 3 /* size */
ifle 14
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioTrack:Landroid/media/AudioTrack;
invokevirtual android.media.AudioTrack.getPlayState:()I
iconst_3
if_icmpeq 14
10: .line 541
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioTrack:Landroid/media/AudioTrack;
invokevirtual android.media.AudioTrack.play:()V
11: .line 542
goto 14
StackMap locals: android.media.MediaSync$1 java.lang.Object android.media.MediaSync$AudioBuffer int
StackMap stack: java.lang.IllegalStateException
12: pop
13: .line 543
ldc "MediaSync"
ldc "could not start audio track"
invokestatic android.util.Log.w:(Ljava/lang/String;Ljava/lang/String;)I
pop
14: .line 546
StackMap locals:
StackMap stack:
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioTrack:Landroid/media/AudioTrack;
15: .line 547
aload 2 /* audioBuffer */
getfield android.media.MediaSync$AudioBuffer.mByteBuffer:Ljava/nio/ByteBuffer;
16: .line 548
iload 3 /* size */
17: .line 549
iconst_1
18: .line 546
invokevirtual android.media.AudioTrack.write:(Ljava/nio/ByteBuffer;II)I
istore 4 /* sizeWritten */
start local 4 // int sizeWritten
19: .line 550
iload 4 /* sizeWritten */
ifle 32
20: .line 551
aload 2 /* audioBuffer */
getfield android.media.MediaSync$AudioBuffer.mPresentationTimeUs:J
ldc -1
lcmp
ifeq 25
21: .line 552
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
22: .line 553
iload 3 /* size */
aload 2 /* audioBuffer */
getfield android.media.MediaSync$AudioBuffer.mPresentationTimeUs:J
23: .line 552
invokevirtual android.media.MediaSync.native_updateQueuedAudioData:(IJ)V
24: .line 554
aload 2 /* audioBuffer */
ldc -1
putfield android.media.MediaSync$AudioBuffer.mPresentationTimeUs:J
25: .line 557
StackMap locals: int
StackMap stack:
iload 4 /* sizeWritten */
iload 3 /* size */
if_icmpne 32
26: .line 558
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
aload 2 /* audioBuffer */
invokevirtual android.media.MediaSync.postReturnByteBuffer:(Landroid/media/MediaSync$AudioBuffer;)V
27: .line 559
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioBuffers:Ljava/util/List;
iconst_0
invokeinterface java.util.List.remove:(I)Ljava/lang/Object;
pop
28: .line 560
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
getfield android.media.MediaSync.mAudioBuffers:Ljava/util/List;
invokeinterface java.util.List.isEmpty:()Z
ifne 30
29: .line 561
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
lconst_0
invokevirtual android.media.MediaSync.postRenderAudio:(J)V
30: .line 563
StackMap locals:
StackMap stack:
aload 1
monitorexit
31: return
32: .line 566
StackMap locals:
StackMap stack:
getstatic java.util.concurrent.TimeUnit.MICROSECONDS:Ljava/util/concurrent/TimeUnit;
33: .line 567
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
invokevirtual android.media.MediaSync.native_getPlayTimeForPendingAudioFrames:()J
34: .line 566
invokevirtual java.util.concurrent.TimeUnit.toMillis:(J)J
lstore 5 /* pendingTimeMs */
start local 5 // long pendingTimeMs
35: .line 568
aload 0 /* this */
getfield android.media.MediaSync$1.this$0:Landroid/media/MediaSync;
lload 5 /* pendingTimeMs */
ldc 2
ldiv
invokevirtual android.media.MediaSync.postRenderAudio:(J)V
end local 5 // long pendingTimeMs
end local 4 // int sizeWritten
end local 3 // int size
end local 2 // android.media.MediaSync$AudioBuffer audioBuffer
36: .line 527
aload 1
monitorexit
37: goto 40
StackMap locals: android.media.MediaSync$1 java.lang.Object
StackMap stack: java.lang.Throwable
38: aload 1
monitorexit
39: athrow
40: .line 570
StackMap locals:
StackMap stack:
return
end local 0 // android.media.MediaSync$1 this
LocalVariableTable:
Start End Slot Name Signature
0 41 0 this Landroid/media/MediaSync$1;
8 36 2 audioBuffer Landroid/media/MediaSync$AudioBuffer;
9 36 3 size I
19 36 4 sizeWritten I
35 36 5 pendingTimeMs J
Exception table:
from to target type
10 11 12 Class java.lang.IllegalStateException
1 3 38 any
4 6 38 any
7 31 38 any
32 37 38 any
38 39 38 any
}
SourceFile: "MediaSync.java"
EnclosingMethod: android.media.MediaSync.postRenderAudio:(J)V
NestHost: android.media.MediaSync
InnerClasses:
android.media.MediaSync$1
private AudioBuffer = android.media.MediaSync$AudioBuffer of android.media.MediaSync