MMCDefaultAudioSink$Configuration.smali

.class public final Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;
.super Ljava/lang/Object;
.source "SourceFile"


# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
    value = Lcom/mmc/player/audioRender/MMCDefaultAudioSink;
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x19
    name = "Configuration"
.end annotation


# instance fields
.field public final bufferSize:I

.field public final inputChannelConfig:I

.field public final inputEncoding:I

.field public final inputPcmFrameSize:I

.field public final inputSampleRate:I

.field private speed:F


# direct methods
.method public constructor <init>(IIIIF)V
    .registers 6

    .line 1
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    .line 2
    iput p1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputPcmFrameSize:I

    .line 3
    iput p2, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    .line 4
    iput p3, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    .line 5
    iput p4, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    .line 6
    invoke-direct {p0}, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->getDefaultBufferSize()I

    move-result p1

    iput p1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->bufferSize:I

    .line 7
    iput p5, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->speed:F

    return-void
.end method

.method public static synthetic access$100(Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;)F
    .registers 1

    iget p0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->speed:F

    return p0
.end method

.method private createAudioTrackV21(Lcom/mmc/player/audioRender/MMCAudioAttributes;I)Landroid/media/AudioTrack;
    .registers 9
    .annotation build Landroid/annotation/TargetApi;
        value = 0x15
    .end annotation

    .line 1
    invoke-virtual {p1}, Lcom/mmc/player/audioRender/MMCAudioAttributes;->getAudioAttributesV21()Landroid/media/AudioAttributes;

    move-result-object v1

    .line 2
    new-instance p1, Landroid/media/AudioFormat$Builder;

    invoke-direct {p1}, Landroid/media/AudioFormat$Builder;-><init>()V

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    .line 3
    invoke-virtual {p1, v0}, Landroid/media/AudioFormat$Builder;->setChannelMask(I)Landroid/media/AudioFormat$Builder;

    move-result-object p1

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    .line 4
    invoke-virtual {p1, v0}, Landroid/media/AudioFormat$Builder;->setEncoding(I)Landroid/media/AudioFormat$Builder;

    move-result-object p1

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    .line 5
    invoke-virtual {p1, v0}, Landroid/media/AudioFormat$Builder;->setSampleRate(I)Landroid/media/AudioFormat$Builder;

    move-result-object p1

    .line 6
    invoke-virtual {p1}, Landroid/media/AudioFormat$Builder;->build()Landroid/media/AudioFormat;

    move-result-object v2

    .line 7
    new-instance p1, Landroid/media/AudioTrack;

    iget v3, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->bufferSize:I

    if-eqz p2, :cond_27

    move v5, p2

    goto :goto_29

    :cond_27
    const/4 p2, 0x0

    const/4 v5, 0x0

    :goto_29
    const/4 v4, 0x1

    move-object v0, p1

    .line 8
    invoke-direct/range {v0 .. v5}, Landroid/media/AudioTrack;-><init>(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;III)V

    return-object p1
.end method

.method private getDefaultBufferSize()I
    .registers 11

    .line 1
    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    iget v1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    iget v2, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    .line 2
    invoke-static {v0, v1, v2}, Landroid/media/AudioTrack;->getMinBufferSize(III)I

    move-result v0

    const/4 v1, -0x2

    if-eq v0, v1, :cond_f

    const/4 v1, 0x1

    goto :goto_10

    :cond_f
    const/4 v1, 0x0

    .line 3
    :goto_10
    invoke-static {v1}, Lcom/mmc/player/audioRender/util/Assertions;->checkState(Z)V

    mul-int/lit8 v1, v0, 0x4

    const-wide/32 v2, 0x3d090

    .line 4
    invoke-virtual {p0, v2, v3}, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->durationUsToFrames(J)J

    move-result-wide v2

    long-to-int v3, v2

    iget v2, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputPcmFrameSize:I

    mul-int v3, v3, v2

    int-to-long v4, v0

    const-wide/32 v6, 0xb71b0

    .line 5
    invoke-virtual {p0, v6, v7}, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->durationUsToFrames(J)J

    move-result-wide v6

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputPcmFrameSize:I

    int-to-long v8, v0

    mul-long v6, v6, v8

    invoke-static {v4, v5, v6, v7}, Ljava/lang/Math;->max(JJ)J

    move-result-wide v4

    long-to-int v0, v4

    .line 6
    invoke-static {v1, v3, v0}, Lcom/mmc/player/audioRender/util/AudioUtils;->constrainValue(III)I

    move-result v0

    return v0
.end method


# virtual methods
.method public buildAudioTrack(Lcom/mmc/player/audioRender/MMCAudioAttributes;I)Landroid/media/AudioTrack;
    .registers 11
    .annotation system Ldalvik/annotation/Throws;
        value = {
            Lcom/mmc/player/audioRender/MMCAudioSink$InitializationException;
        }
    .end annotation

    .line 1
    sget v0, Lcom/mmc/player/audioRender/util/AudioUtils;->SDK_INT:I

    const/16 v1, 0x15

    if-lt v0, v1, :cond_b

    .line 2
    invoke-direct {p0, p1, p2}, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->createAudioTrackV21(Lcom/mmc/player/audioRender/MMCAudioAttributes;I)Landroid/media/AudioTrack;

    move-result-object p1

    goto :goto_33

    .line 3
    :cond_b
    iget p1, p1, Lcom/mmc/player/audioRender/MMCAudioAttributes;->usage:I

    invoke-static {p1}, Lcom/mmc/player/audioRender/util/AudioUtils;->getStreamTypeForAudioUsage(I)I

    move-result v1

    if-nez p2, :cond_23

    .line 4
    new-instance p1, Landroid/media/AudioTrack;

    iget v2, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    iget v3, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    iget v4, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    iget v5, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->bufferSize:I

    const/4 v6, 0x1

    move-object v0, p1

    invoke-direct/range {v0 .. v6}, Landroid/media/AudioTrack;-><init>(IIIIII)V

    goto :goto_33

    .line 5
    :cond_23
    new-instance p1, Landroid/media/AudioTrack;

    iget v2, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    iget v3, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    iget v4, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    iget v5, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->bufferSize:I

    const/4 v6, 0x1

    move-object v0, p1

    move v7, p2

    invoke-direct/range {v0 .. v7}, Landroid/media/AudioTrack;-><init>(IIIIIII)V

    .line 6
    :goto_33
    invoke-virtual {p1}, Landroid/media/AudioTrack;->getState()I

    move-result p2

    const/4 v0, 0x1

    if-ne p2, v0, :cond_3b

    return-object p1

    .line 7
    :cond_3b
    :try_start_3b
    invoke-virtual {p1}, Landroid/media/AudioTrack;->release()V
    :try_end_3e
    .catch Ljava/lang/Exception; {:try_start_3b .. :try_end_3e} :catch_3e

    .line 8
    :catch_3e
    new-instance p1, Lcom/mmc/player/audioRender/MMCAudioSink$InitializationException;

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    iget v1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    iget v2, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->bufferSize:I

    invoke-direct {p1, p2, v0, v1, v2}, Lcom/mmc/player/audioRender/MMCAudioSink$InitializationException;-><init>(IIII)V

    throw p1
.end method

.method public canReuseAudioTrack(Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;)Z
    .registers 4

    iget v0, p1, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    iget v1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputEncoding:I

    if-ne v0, v1, :cond_14

    iget v0, p1, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    iget v1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    if-ne v0, v1, :cond_14

    iget p1, p1, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputChannelConfig:I

    if-ne p1, v0, :cond_14

    const/4 p1, 0x1

    goto :goto_15

    :cond_14
    const/4 p1, 0x0

    :goto_15
    return p1
.end method

.method public durationUsToFrames(J)J
    .registers 5

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    int-to-long v0, v0

    mul-long p1, p1, v0

    const-wide/32 v0, 0xf4240

    div-long/2addr p1, v0

    return-wide p1
.end method

.method public framesToDurationUs(J)J
    .registers 5

    const-wide/32 v0, 0xf4240

    mul-long p1, p1, v0

    iget v0, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->inputSampleRate:I

    int-to-long v0, v0

    div-long/2addr p1, v0

    return-wide p1
.end method

.method public setSpeed(F)V
    .registers 2

    iput p1, p0, Lcom/mmc/player/audioRender/MMCDefaultAudioSink$Configuration;->speed:F

    return-void
.end method