FfmpegAudioRenderer.smali
.class public final Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;
.super Lcom/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer;
.source "FfmpegAudioRenderer.java"
# static fields
.field private static final DEFAULT_INPUT_BUFFER_SIZE:I
.field private static final NUM_BUFFERS:I
# instance fields
.field private decoder:Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
.field private final enableFloatOutput:Z
# direct methods
.method static constructor <clinit>()V
.registers 1
const v0, 0x3ef
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->DEFAULT_INPUT_BUFFER_SIZE:I
const v0, 0x157f
invoke-static {v0}, Lnp/NPFog;->d(I)I
move-result v0
sput v0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->NUM_BUFFERS:I
return-void
.end method
.method public constructor <init>()V
.registers 3
.line 50
const/4 v0, 0x0
new-array v0, v0, [Lcom/google/android/exoplayer2/audio/AudioProcessor;
const/4 v1, 0x0
invoke-direct {p0, v1, v1, v0}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;-><init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;[Lcom/google/android/exoplayer2/audio/AudioProcessor;)V
.line 51
return-void
.end method
.method public constructor <init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;Lcom/google/android/exoplayer2/audio/AudioSink;Z)V
.registers 11
.param p1, "eventHandler" # Landroid/os/Handler;
.param p2, "eventListener" # Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;
.param p3, "audioSink" # Lcom/google/android/exoplayer2/audio/AudioSink;
.param p4, "enableFloatOutput" # Z
.line 85
const/4 v3, 0x0
const/4 v4, 0x0
move-object v0, p0
move-object v1, p1
move-object v2, p2
move-object v5, p3
invoke-direct/range {v0 .. v5}, Lcom/google/android/exoplayer2/audio/SimpleDecoderAudioRenderer;-><init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;Lcom/google/android/exoplayer2/drm/DrmSessionManager;ZLcom/google/android/exoplayer2/audio/AudioSink;)V
.line 91
iput-boolean p4, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->enableFloatOutput:Z
.line 92
return-void
.end method
.method public varargs constructor <init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;[Lcom/google/android/exoplayer2/audio/AudioProcessor;)V
.registers 6
.param p1, "eventHandler" # Landroid/os/Handler;
.param p2, "eventListener" # Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;
.param p3, "audioProcessors" # [Lcom/google/android/exoplayer2/audio/AudioProcessor;
.line 63
new-instance v0, Lcom/google/android/exoplayer2/audio/DefaultAudioSink;
const/4 v1, 0x0
invoke-direct {v0, v1, p3}, Lcom/google/android/exoplayer2/audio/DefaultAudioSink;-><init>(Lcom/google/android/exoplayer2/audio/AudioCapabilities;[Lcom/google/android/exoplayer2/audio/AudioProcessor;)V
const/4 v1, 0x0
invoke-direct {p0, p1, p2, v0, v1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;-><init>(Landroid/os/Handler;Lcom/google/android/exoplayer2/audio/AudioRendererEventListener;Lcom/google/android/exoplayer2/audio/AudioSink;Z)V
.line 68
return-void
.end method
.method private isOutputSupported(Lcom/google/android/exoplayer2/Format;)Z
.registers 4
.param p1, "inputFormat" # Lcom/google/android/exoplayer2/Format;
.line 146
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->shouldUseFloatOutput(Lcom/google/android/exoplayer2/Format;)Z
move-result v0
if-nez v0, :cond_12
iget v0, p1, Lcom/google/android/exoplayer2/Format;->channelCount:I
const/4 v1, 0x2
.line 147
invoke-virtual {p0, v0, v1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->supportsOutput(II)Z
move-result v0
if-eqz v0, :cond_10
goto :goto_12
:cond_10
const/4 v0, 0x0
goto :goto_13
:cond_12
:goto_12
const/4 v0, 0x1
.line 146
:goto_13
return v0
.end method
.method private shouldUseFloatOutput(Lcom/google/android/exoplayer2/Format;)Z
.registers 9
.param p1, "inputFormat" # Lcom/google/android/exoplayer2/Format;
.line 151
iget-object v0, p1, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 152
iget-boolean v0, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->enableFloatOutput:Z
const/4 v1, 0x0
if-eqz v0, :cond_52
iget v0, p1, Lcom/google/android/exoplayer2/Format;->channelCount:I
const/4 v2, 0x4
invoke-virtual {p0, v0, v2}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->supportsOutput(II)Z
move-result v0
if-nez v0, :cond_14
goto :goto_52
.line 155
:cond_14
iget-object v0, p1, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
const/4 v3, -0x1
invoke-virtual {v0}, Ljava/lang/String;->hashCode()I
move-result v4
const v5, 0xb269698
const/4 v6, 0x1
if-eq v4, v5, :cond_31
const v5, 0xb26d66f
if-eq v4, v5, :cond_27
:cond_26
goto :goto_3a
:cond_27
const-string v4, "audio/raw"
invoke-virtual {v0, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_26
const/4 v3, 0x0
goto :goto_3a
:cond_31
const-string v4, "audio/ac3"
invoke-virtual {v0, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_26
const/4 v3, 0x1
:goto_3a
if-eqz v3, :cond_40
if-eq v3, v6, :cond_3f
.line 166
return v6
.line 163
:cond_3f
return v1
.line 158
:cond_40
iget v0, p1, Lcom/google/android/exoplayer2/Format;->pcmEncoding:I
const/high16 v3, -0x80000000
if-eq v0, v3, :cond_50
iget v0, p1, Lcom/google/android/exoplayer2/Format;->pcmEncoding:I
const/high16 v3, 0x40000000 # 2.0f
if-eq v0, v3, :cond_50
iget v0, p1, Lcom/google/android/exoplayer2/Format;->pcmEncoding:I
if-ne v0, v2, :cond_51
:cond_50
const/4 v1, 0x1
:cond_51
return v1
.line 153
:cond_52
:goto_52
return v1
.end method
# virtual methods
.method protected bridge synthetic createDecoder(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/drm/ExoMediaCrypto;)Lcom/google/android/exoplayer2/decoder/SimpleDecoder;
.registers 3
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/audio/AudioDecoderException;
}
.end annotation
.line 38
invoke-virtual {p0, p1, p2}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->createDecoder(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/drm/ExoMediaCrypto;)Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
move-result-object p1
return-object p1
.end method
.method protected createDecoder(Lcom/google/android/exoplayer2/Format;Lcom/google/android/exoplayer2/drm/ExoMediaCrypto;)Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
.registers 10
.param p1, "format" # Lcom/google/android/exoplayer2/Format;
.param p2, "mediaCrypto" # Lcom/google/android/exoplayer2/drm/ExoMediaCrypto;
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoderException;
}
.end annotation
.line 116
iget v0, p1, Lcom/google/android/exoplayer2/Format;->maxInputSize:I
const/4 v1, -0x1
if-eq v0, v1, :cond_9
iget v0, p1, Lcom/google/android/exoplayer2/Format;->maxInputSize:I
move v4, v0
goto :goto_d
:cond_9
const/16 v0, 0x1680
const/16 v4, 0x1680
.line 118
.local v4, "initialInputBufferSize":I
:goto_d
new-instance v0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
const/16 v2, 0x10
const/16 v3, 0x10
.line 120
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->shouldUseFloatOutput(Lcom/google/android/exoplayer2/Format;)Z
move-result v6
move-object v1, v0
move-object v5, p1
invoke-direct/range {v1 .. v6}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;-><init>(IIILcom/google/android/exoplayer2/Format;Z)V
iput-object v0, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->decoder:Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
.line 121
return-object v0
.end method
.method public getOutputFormat()Lcom/google/android/exoplayer2/Format;
.registers 16
.line 126
iget-object v0, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->decoder:Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 127
iget-object v0, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->decoder:Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;->getChannelCount()I
move-result v0
.line 128
.local v0, "channelCount":I
iget-object v1, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->decoder:Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;->getSampleRate()I
move-result v13
.line 129
.local v13, "sampleRate":I
iget-object v1, p0, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->decoder:Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;
invoke-virtual {v1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegDecoder;->getEncoding()I
move-result v14
.line 130
.local v14, "encoding":I
nop
.line 139
invoke-static {}, Ljava/util/Collections;->emptyList()Ljava/util/List;
move-result-object v9
.line 130
const/4 v1, 0x0
const-string v2, "audio/raw"
const/4 v3, 0x0
const/4 v4, -0x1
const/4 v5, -0x1
const/4 v10, 0x0
const/4 v11, 0x0
const/4 v12, 0x0
move v6, v0
move v7, v13
move v8, v14
invoke-static/range {v1 .. v12}, Lcom/google/android/exoplayer2/Format;->createAudioSampleFormat(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIILjava/util/List;Lcom/google/android/exoplayer2/drm/DrmInitData;ILjava/lang/String;)Lcom/google/android/exoplayer2/Format;
move-result-object v1
return-object v1
.end method
.method protected supportsFormatInternal(Lcom/google/android/exoplayer2/drm/DrmSessionManager;Lcom/google/android/exoplayer2/Format;)I
.registers 5
.param p2, "format" # Lcom/google/android/exoplayer2/Format;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/google/android/exoplayer2/drm/DrmSessionManager<",
"Lcom/google/android/exoplayer2/drm/ExoMediaCrypto;",
">;",
"Lcom/google/android/exoplayer2/Format;",
")I"
}
.end annotation
.line 97
.local p1, "drmSessionManager":Lcom/google/android/exoplayer2/drm/DrmSessionManager;, "Lcom/google/android/exoplayer2/drm/DrmSessionManager<Lcom/google/android/exoplayer2/drm/ExoMediaCrypto;>;"
iget-object v0, p2, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
invoke-static {v0}, Lcom/google/android/exoplayer2/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
.line 98
iget-object v0, p2, Lcom/google/android/exoplayer2/Format;->sampleMimeType:Ljava/lang/String;
iget v1, p2, Lcom/google/android/exoplayer2/Format;->pcmEncoding:I
invoke-static {v0, v1}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegLibrary;->supportsFormat(Ljava/lang/String;I)Z
move-result v0
if-eqz v0, :cond_22
.line 99
invoke-direct {p0, p2}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->isOutputSupported(Lcom/google/android/exoplayer2/Format;)Z
move-result v0
if-nez v0, :cond_16
goto :goto_22
.line 101
:cond_16
iget-object v0, p2, Lcom/google/android/exoplayer2/Format;->drmInitData:Lcom/google/android/exoplayer2/drm/DrmInitData;
invoke-static {p1, v0}, Lcom/google/android/exoplayer2/ext/ffmpeg/FfmpegAudioRenderer;->supportsFormatDrm(Lcom/google/android/exoplayer2/drm/DrmSessionManager;Lcom/google/android/exoplayer2/drm/DrmInitData;)Z
move-result v0
if-nez v0, :cond_20
.line 102
const/4 v0, 0x2
return v0
.line 104
:cond_20
const/4 v0, 0x4
return v0
.line 100
:cond_22
:goto_22
const/4 v0, 0x1
return v0
.end method
.method public final supportsMixedMimeTypeAdaptation()I
.registers 2
.annotation system Ldalvik/annotation/Throws;
value = {
Lcom/google/android/exoplayer2/ExoPlaybackException;
}
.end annotation
.line 110
const/16 v0, 0x8
return v0
.end method