MediaCodecAudioRenderer.smali
.class public Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;
.super Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;
.source "MediaCodecAudioRenderer.java"
# interfaces
.implements Lcom/google/android/exoplayer2/util/MediaClock;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer$AudioTrackListener;
}
.end annotation
# instance fields
.field private allowPositionDiscontinuity:Z
.field private final audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
.field private currentPositionUs:J
.field private final eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
.field private passthroughEnabled:Z
.field private passthroughMediaFormat:Landroid/media/MediaFormat;
.field private pcmEncoding:I
# direct methods
.method public constructor <init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;)V
.registers 4
const/4 v0, 0x0
const/4 v1, 0x1
.line 59
invoke-direct {p0, p1, v0, v1}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;-><init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;Z)V
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;)V
.registers 10
const/4 v2, 0x0
const/4 v3, 0x1
move-object v0, p0
move-object v1, p1
move-object v4, p2
move-object v5, p3
.line 86
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;-><init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;)V
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;Z)V
.registers 10
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;",
"Lcom/google/android/exoplayer2/drm/DrmSessionManager<",
"Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;",
">;Z)V"
}
.end annotation
const/4 v4, 0x0
const/4 v5, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move v3, p3
.line 75
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;-><init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;)V
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;)V
.registers 13
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;",
"Lcom/google/android/exoplayer2/drm/DrmSessionManager<",
"Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;",
">;Z",
"Landroid/os/Handler;",
"Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;",
")V"
}
.end annotation
const/4 v6, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move v3, p3
move-object v4, p4
move-object v5, p5
.line 106
invoke-direct/range {v0 .. v6}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;-><init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;Lcom/google/android/exoplayer2/audio/AudioCapabilities;)V
return-void
.end method
.method public constructor <init>(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZLandroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;Lcom/google/android/exoplayer2/audio/AudioCapabilities;)V
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;",
"Lcom/google/android/exoplayer2/drm/DrmSessionManager<",
"Lcom/google/android/exoplayer2/drm/FrameworkMediaCrypto;",
">;Z",
"Landroid/os/Handler;",
"Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;",
"Lcom/google/android/exoplayer2/audio/AudioCapabilities;",
")V"
}
.end annotation
const/4 v0, 0x1
.line 129
invoke-direct {p0, v0, p1, p2, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;-><init>(ILcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/drm/DrmSessionManager;Z)V
.line 130
new-instance p1, Lcom/google/android/exoplayer2/audio/AudioTrack;
new-instance p2, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer$AudioTrackListener;
const/4 p3, 0x0
invoke-direct {p2, p0, p3}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer$AudioTrackListener;-><init>(Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer$1;)V
invoke-direct {p1, p6, p2}, Lcom/google/android/exoplayer2/audio/AudioTrack;-><init>(Lcom/google/android/exoplayer2/audio/AudioCapabilities;Lcom/google/android/exoplayer2/audio/AudioTrack$Listener;)V
iput-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
.line 131
new-instance p1, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
invoke-direct {p1, p4, p5}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;-><init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;)V
iput-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
return-void
.end method
.method static synthetic access$100(Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;)Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
.registers 1
.line 44
iget-object p0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
return-object p0
.end method
.method static synthetic access$202(Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;Z)Z
.registers 2
.line 44
iput-boolean p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->allowPositionDiscontinuity:Z
return p1
.end method
# virtual methods
.method protected allowPassthrough(Ljava/lang/String;)Z
.registers 3
.line 182
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/audio/AudioTrack;->isPassthroughSupported(Ljava/lang/String;)Z
move-result p1
return p1
.end method
.method protected configureCodec(Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;Landroid/media/MediaCodec;Lcom/google/android/exoplayer2/Format;Landroid/media/MediaCrypto;)V
.registers 9
.line 188
iget-boolean p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughEnabled:Z
const/4 v0, 0x0
const/4 v1, 0x0
if-eqz p1, :cond_20
.line 190
invoke-virtual {p3}, Lcom/google/android/exoplayer2/Format;->getFrameworkMediaFormatV16()Landroid/media/MediaFormat;
move-result-object p1
iput-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
const-string v2, "mime"
const-string v3, "audio/raw"
.line 191
invoke-virtual {p1, v2, v3}, Landroid/media/MediaFormat;->setString(Ljava/lang/String;Ljava/lang/String;)V
.line 192
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
invoke-virtual {p2, p1, v1, p4, v0}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 193
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
iget-object p2, p3, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
invoke-virtual {p1, v2, p2}, Landroid/media/MediaFormat;->setString(Ljava/lang/String;Ljava/lang/String;)V
goto :goto_29
.line 195
:cond_20
invoke-virtual {p3}, Lcom/google/android/exoplayer2/Format;->getFrameworkMediaFormatV16()Landroid/media/MediaFormat;
move-result-object p1
invoke-virtual {p2, p1, v1, p4, v0}, Landroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
.line 196
iput-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
:goto_29
return-void
.end method
.method protected getDecoderInfo(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/Format;Z)Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
.registers 5
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 162
iget-object v0, p2, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->allowPassthrough(Ljava/lang/String;)Z
move-result v0
if-eqz v0, :cond_12
.line 163
invoke-interface {p1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;->getPassthroughDecoderInfo()Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
move-result-object v0
if-eqz v0, :cond_12
const/4 p1, 0x1
.line 165
iput-boolean p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughEnabled:Z
return-object v0
:cond_12
const/4 v0, 0x0
.line 169
iput-boolean v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughEnabled:Z
.line 170
invoke-super {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->getDecoderInfo(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/Format;Z)Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
move-result-object p1
return-object p1
.end method
.method public getMediaClock()Lcom/google/android/exoplayer2/util/MediaClock;
.registers 1
return-object p0
.end method
.method public getPositionUs()J
.registers 6
.line 317
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->isEnded()Z
move-result v1
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/audio/AudioTrack;->getCurrentPositionUs(Z)J
move-result-wide v0
const-wide/high16 v2, -0x8000000000000000L
cmp-long v4, v0, v2
if-eqz v4, :cond_20
.line 319
iget-boolean v2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->allowPositionDiscontinuity:Z
if-eqz v2, :cond_15
goto :goto_1b
:cond_15
iget-wide v2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->currentPositionUs:J
.line 320
invoke-static {v2, v3, v0, v1}, Ljava/lang/Math;->max(JJ)J
move-result-wide v0
:goto_1b
iput-wide v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->currentPositionUs:J
const/4 v0, 0x0
.line 321
iput-boolean v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->allowPositionDiscontinuity:Z
.line 323
:cond_20
iget-wide v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->currentPositionUs:J
return-wide v0
.end method
.method public handleMessage(ILjava/lang/Object;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
const/4 v0, 0x2
if-eq p1, v0, :cond_21
const/4 v0, 0x3
if-eq p1, v0, :cond_19
const/4 v0, 0x4
if-eq p1, v0, :cond_d
.line 374
invoke-super {p0, p1, p2}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->handleMessage(ILjava/lang/Object;)V
goto :goto_2c
.line 370
:cond_d
check-cast p2, Ljava/lang/Integer;
invoke-virtual {p2}, Ljava/lang/Integer;->intValue()I
move-result p1
.line 371
iget-object p2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {p2, p1}, Lcom/google/android/exoplayer2/audio/AudioTrack;->setStreamType(I)V
goto :goto_2c
.line 367
:cond_19
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
check-cast p2, Landroid/media/PlaybackParams;
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/audio/AudioTrack;->setPlaybackParams(Landroid/media/PlaybackParams;)V
goto :goto_2c
.line 364
:cond_21
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
check-cast p2, Ljava/lang/Float;
invoke-virtual {p2}, Ljava/lang/Float;->floatValue()F
move-result p2
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/audio/AudioTrack;->setVolume(F)V
:goto_2c
return-void
.end method
.method public isEnded()Z
.registers 2
.line 307
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->isEnded()Z
move-result v0
if-eqz v0, :cond_10
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTrack;->hasPendingData()Z
move-result v0
if-nez v0, :cond_10
const/4 v0, 0x1
goto :goto_11
:cond_10
const/4 v0, 0x0
:goto_11
return v0
.end method
.method public isReady()Z
.registers 2
.line 312
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTrack;->hasPendingData()Z
move-result v0
if-nez v0, :cond_11
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->isReady()Z
move-result v0
if-eqz v0, :cond_f
goto :goto_11
:cond_f
const/4 v0, 0x0
goto :goto_12
:cond_11
:goto_11
const/4 v0, 0x1
:goto_12
return v0
.end method
.method protected onAudioSessionId(I)V
.registers 2
return-void
.end method
.method protected onAudioTrackPositionDiscontinuity()V
.registers 1
return-void
.end method
.method protected onAudioTrackUnderrun(IJJ)V
.registers 6
return-void
.end method
.method protected onCodecInitialized(Ljava/lang/String;JJ)V
.registers 12
.line 208
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
move-object v1, p1
move-wide v2, p2
move-wide v4, p4
invoke-virtual/range {v0 .. v5}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->decoderInitialized(Ljava/lang/String;JJ)V
return-void
.end method
.method protected onDisabled()V
.registers 4
.line 294
:try_start_0
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTrack;->release()V
:try_end_5
.catchall {:try_start_0 .. :try_end_5} :catchall_23
.line 297
:try_start_5
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onDisabled()V
:try_end_8
.catchall {:try_start_5 .. :try_end_8} :catchall_15
.line 299
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->ensureUpdated()V
.line 300
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v0, v1}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->disabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
return-void
:catchall_15
move-exception v0
.line 299
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->ensureUpdated()V
.line 300
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
iget-object v2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->disabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
throw v0
:catchall_23
move-exception v0
.line 297
:try_start_24
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onDisabled()V
:try_end_27
.catchall {:try_start_24 .. :try_end_27} :catchall_34
.line 299
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->ensureUpdated()V
.line 300
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
iget-object v2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->disabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
throw v0
:catchall_34
move-exception v0
.line 299
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->ensureUpdated()V
.line 300
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
iget-object v2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {v1, v2}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->disabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
throw v0
.end method
.method protected onEnabled(Z)V
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 261
invoke-super {p0, p1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onEnabled(Z)V
.line 262
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
invoke-virtual {p1, v0}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->enabled(Lcom/google/android/exoplayer2/decoder/DecoderCounters;)V
.line 263
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->getConfiguration()Lcom/google/android/exoplayer2/RendererConfiguration;
move-result-object p1
iget p1, p1, Lcom/google/android/exoplayer2/RendererConfiguration;->tunnelingAudioSessionId:I
if-eqz p1, :cond_18
.line 265
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/audio/AudioTrack;->enableTunnelingV21(I)V
goto :goto_1d
.line 267
:cond_18
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/audio/AudioTrack;->disableTunneling()V
:goto_1d
return-void
.end method
.method protected onInputFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 213
invoke-super {p0, p1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onInputFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.line 214
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->eventDispatcher:Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;
invoke-virtual {v0, p1}, Lcom/google/android/exoplayer2/audio/AudioRendererEventListener$EventDispatcher;->inputFormatChanged(Lcom/google/android/exoplayer2/Format;)V
.line 217
iget-object v0, p1, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
const-string v1, "audio/raw"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_15
iget p1, p1, Lcom/google/android/exoplayer2/Format;->pcmEncoding:I
goto :goto_16
:cond_15
const/4 p1, 0x2
:goto_16
iput p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->pcmEncoding:I
return-void
.end method
.method protected onOutputFormatChanged(Landroid/media/MediaCodec;Landroid/media/MediaFormat;)V
.registers 10
.line 223
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
if-eqz p1, :cond_6
const/4 p1, 0x1
goto :goto_7
:cond_6
const/4 p1, 0x0
:goto_7
if-eqz p1, :cond_12
.line 224
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
const-string v1, "mime"
invoke-virtual {v0, v1}, Landroid/media/MediaFormat;->getString(Ljava/lang/String;)Ljava/lang/String;
move-result-object v0
goto :goto_14
:cond_12
const-string v0, "audio/raw"
:goto_14
move-object v2, v0
if-eqz p1, :cond_19
.line 226
iget-object p2, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughMediaFormat:Landroid/media/MediaFormat;
:cond_19
const-string p1, "channel-count"
.line 227
invoke-virtual {p2, p1}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v3
const-string p1, "sample-rate"
.line 228
invoke-virtual {p2, p1}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
move-result v4
.line 229
iget-object v1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
iget v5, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->pcmEncoding:I
const/4 v6, 0x0
invoke-virtual/range {v1 .. v6}, Lcom/google/android/exoplayer2/audio/AudioTrack;->configure(Ljava/lang/String;IIII)V
return-void
.end method
.method protected onOutputStreamEnded()V
.registers 2
.line 357
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTrack;->handleEndOfStream()V
return-void
.end method
.method protected onPositionReset(JZ)V
.registers 4
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 273
invoke-super {p0, p1, p2, p3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onPositionReset(JZ)V
.line 274
iget-object p3, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {p3}, Lcom/google/android/exoplayer2/audio/AudioTrack;->reset()V
.line 275
iput-wide p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->currentPositionUs:J
const/4 p1, 0x1
.line 276
iput-boolean p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->allowPositionDiscontinuity:Z
return-void
.end method
.method protected onStarted()V
.registers 2
.line 281
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onStarted()V
.line 282
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTrack;->play()V
return-void
.end method
.method protected onStopped()V
.registers 2
.line 287
iget-object v0, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/audio/AudioTrack;->pause()V
.line 288
invoke-super {p0}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecRenderer;->onStopped()V
return-void
.end method
.method protected processOutputBuffer(JJLandroid/media/MediaCodec;Ljava/nio/ByteBuffer;IIJZ)Z
.registers 12
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 330
iget-boolean p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->passthroughEnabled:Z
const/4 p2, 0x0
const/4 p3, 0x1
if-eqz p1, :cond_e
and-int/lit8 p1, p8, 0x2
if-eqz p1, :cond_e
.line 332
invoke-virtual {p5, p7, p2}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
return p3
:cond_e
if-eqz p11, :cond_20
.line 337
invoke-virtual {p5, p7, p2}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
.line 338
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget p2, p1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->skippedOutputBufferCount:I
add-int/2addr p2, p3
iput p2, p1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->skippedOutputBufferCount:I
.line 339
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {p1}, Lcom/google/android/exoplayer2/audio/AudioTrack;->handleDiscontinuity()V
return p3
.line 344
:cond_20
:try_start_20
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->audioTrack:Lcom/google/android/exoplayer2/audio/AudioTrack;
invoke-virtual {p1, p6, p9, p10}, Lcom/google/android/exoplayer2/audio/AudioTrack;->handleBuffer(Ljava/nio/ByteBuffer;J)Z
move-result p1
if-eqz p1, :cond_33
.line 345
invoke-virtual {p5, p7, p2}, Landroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
.line 346
iget-object p1, p0, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->decoderCounters:Lcom/google/android/exoplayer2/decoder/DecoderCounters;
iget p2, p1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->renderedOutputBufferCount:I
add-int/2addr p2, p3
iput p2, p1, Lcom/google/android/exoplayer2/decoder/DecoderCounters;->renderedOutputBufferCount:I
:try_end_32
.catch Lcom/google/android/exoplayer2/audio/AudioTrack$InitializationException; {:try_start_20 .. :try_end_32} :catch_36
.catch Lcom/google/android/exoplayer2/audio/AudioTrack$WriteException; {:try_start_20 .. :try_end_32} :catch_34
return p3
:cond_33
return p2
:catch_34
move-exception p1
goto :goto_37
:catch_36
move-exception p1
.line 350
:goto_37
invoke-virtual {p0}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->getIndex()I
move-result p2
invoke-static {p1, p2}, Lcom/google/android/exoplayer2/ExoPlaybackException;->createForRenderer(Ljava/lang/Exception;I)Lcom/google/android/exoplayer2/ExoPlaybackException;
move-result-object p1
throw p1
.end method
.method protected supportsFormat(Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;Lcom/google/android/exoplayer2/Format;)I
.registers 9
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/mediacodec/MediaCodecUtil$DecoderQueryException;
}
.end annotation
.line 137
iget-object v0, p2, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
.line 138
invoke-static {v0}, Lcom/google/android/exoplayer2/util/MimeTypes;->isAudio(Ljava/lang/String;)Z
move-result v1
const/4 v2, 0x0
if-nez v1, :cond_a
return v2
.line 141
:cond_a
sget v1, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
const/16 v3, 0x15
if-lt v1, v3, :cond_13
const/16 v1, 0x10
goto :goto_14
:cond_13
const/4 v1, 0x0
.line 142
:goto_14
invoke-virtual {p0, v0}, Lcom/google/android/exoplayer2/audio/MediaCodecAudioRenderer;->allowPassthrough(Ljava/lang/String;)Z
move-result v4
const/4 v5, 0x3
if-eqz v4, :cond_25
invoke-interface {p1}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;->getPassthroughDecoderInfo()Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
move-result-object v4
if-eqz v4, :cond_25
or-int/lit8 p1, v1, 0x4
or-int/2addr p1, v5
return p1
.line 145
:cond_25
invoke-interface {p1, v0, v2}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecSelector;->getDecoderInfo(Ljava/lang/String;Z)Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;
move-result-object p1
const/4 v0, 0x1
if-nez p1, :cond_2d
return v0
.line 150
:cond_2d
sget v4, Lcom/google/android/exoplayer2/util/Util;->SDK_INT:I
if-lt v4, v3, :cond_4a
iget v3, p2, Lcom/google/android/exoplayer2/Format;->sampleRate:I
const/4 v4, -0x1
if-eq v3, v4, :cond_3e
iget v3, p2, Lcom/google/android/exoplayer2/Format;->sampleRate:I
.line 152
invoke-virtual {p1, v3}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isAudioSampleRateSupportedV21(I)Z
move-result v3
if-eqz v3, :cond_4b
:cond_3e
iget v3, p2, Lcom/google/android/exoplayer2/Format;->channelCount:I
if-eq v3, v4, :cond_4a
iget p2, p2, Lcom/google/android/exoplayer2/Format;->channelCount:I
.line 154
invoke-virtual {p1, p2}, Lcom/google/android/exoplayer2/mediacodec/MediaCodecInfo;->isAudioChannelCountSupportedV21(I)Z
move-result p1
if-eqz p1, :cond_4b
:cond_4a
const/4 v2, 0x1
:cond_4b
if-eqz v2, :cond_4e
goto :goto_4f
:cond_4e
const/4 v5, 0x2
:goto_4f
or-int/lit8 p1, v1, 0x4
or-int/2addr p1, v5
return p1
.end method