Rabbit-R1/android (non root)/smali/smali_classes2/androidx/media3/exoplayer/audio/DefaultAudioSink.smali
2024-05-21 17:08:36 -04:00

5167 lines
154 KiB
Smali

.class public final Landroidx/media3/exoplayer/audio/DefaultAudioSink;
.super Ljava/lang/Object;
.source "DefaultAudioSink.java"
# interfaces
.implements Landroidx/media3/exoplayer/audio/AudioSink;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioTrackBufferSizeProvider;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$PositionTrackerListener;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$Api31;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$Api23;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$OutputMode;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$OffloadMode;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$DefaultAudioProcessorChain;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioProcessorChain;,
Landroidx/media3/exoplayer/audio/DefaultAudioSink$InvalidAudioTrackTimestampException;
}
.end annotation
# static fields
.field private static final AUDIO_TRACK_RETRY_DURATION_MS:I = 0x64
.field private static final AUDIO_TRACK_SMALLER_BUFFER_RETRY_SIZE:I = 0xf4240
.field public static final DEFAULT_PLAYBACK_SPEED:F = 1.0f
.field private static final DEFAULT_SKIP_SILENCE:Z = false
.field private static final ERROR_NATIVE_DEAD_OBJECT:I = -0x20
.field public static final MAX_PITCH:F = 8.0f
.field public static final MAX_PLAYBACK_SPEED:F = 8.0f
.field public static final MIN_PITCH:F = 0.1f
.field public static final MIN_PLAYBACK_SPEED:F = 0.1f
.field public static final OFFLOAD_MODE_DISABLED:I = 0x0
.field public static final OFFLOAD_MODE_ENABLED_GAPLESS_DISABLED:I = 0x3
.field public static final OFFLOAD_MODE_ENABLED_GAPLESS_NOT_REQUIRED:I = 0x2
.field public static final OFFLOAD_MODE_ENABLED_GAPLESS_REQUIRED:I = 0x1
.field public static final OUTPUT_MODE_OFFLOAD:I = 0x1
.field public static final OUTPUT_MODE_PASSTHROUGH:I = 0x2
.field public static final OUTPUT_MODE_PCM:I = 0x0
.field private static final TAG:Ljava/lang/String; = "DefaultAudioSink"
.field public static failOnSpuriousAudioTimestamp:Z = false
.field private static pendingReleaseCount:I
.field private static releaseExecutor:Ljava/util/concurrent/ExecutorService;
.field private static final releaseExecutorLock:Ljava/lang/Object;
# instance fields
.field private afterDrainParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.field private audioAttributes:Landroidx/media3/common/AudioAttributes;
.field private audioCapabilities:Landroidx/media3/exoplayer/audio/AudioCapabilities;
.field private audioCapabilitiesReceiver:Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;
.field private final audioOffloadListener:Landroidx/media3/exoplayer/ExoPlayer$AudioOffloadListener;
.field private audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.field private final audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
.field private audioSessionId:I
.field private audioTrack:Landroid/media/AudioTrack;
.field private final audioTrackBufferSizeProvider:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioTrackBufferSizeProvider;
.field private final audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.field private auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.field private avSyncHeader:Ljava/nio/ByteBuffer;
.field private bytesUntilNextAvSync:I
.field private final channelMappingAudioProcessor:Landroidx/media3/exoplayer/audio/ChannelMappingAudioProcessor;
.field private configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.field private final context:Landroid/content/Context;
.field private final enableFloatOutput:Z
.field private externalAudioSessionIdProvided:Z
.field private framesPerEncodedSample:I
.field private handledEndOfStream:Z
.field private final initializationExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder<",
"Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;",
">;"
}
.end annotation
.end field
.field private inputBuffer:Ljava/nio/ByteBuffer;
.field private inputBufferAccessUnitCount:I
.field private isWaitingForOffloadEndOfStreamHandled:Z
.field private lastFeedElapsedRealtimeMs:J
.field private lastTunnelingAvSyncPresentationTimeUs:J
.field private listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
.field private mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.field private final mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/ArrayDeque<",
"Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;",
">;"
}
.end annotation
.end field
.field private offloadDisabledUntilNextConfiguration:Z
.field private final offloadMode:I
.field private offloadStreamEventCallbackV29:Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
.field private outputBuffer:Ljava/nio/ByteBuffer;
.field private pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.field private playbackLooper:Landroid/os/Looper;
.field private playbackParameters:Landroidx/media3/common/PlaybackParameters;
.field private playerId:Landroidx/media3/exoplayer/analytics/PlayerId;
.field private playing:Z
.field private preV21OutputBuffer:[B
.field private preV21OutputBufferOffset:I
.field private final preferAudioTrackPlaybackParams:Z
.field private preferredDevice:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;
.field private final releasingConditionVariable:Landroidx/media3/common/util/ConditionVariable;
.field private skipSilenceEnabled:Z
.field private startMediaTimeUs:J
.field private startMediaTimeUsNeedsInit:Z
.field private startMediaTimeUsNeedsSync:Z
.field private stoppedAudioTrack:Z
.field private submittedEncodedFrames:J
.field private submittedPcmBytes:J
.field private final toFloatPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/collect/ImmutableList<",
"Landroidx/media3/common/audio/AudioProcessor;",
">;"
}
.end annotation
.end field
.field private final toIntPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.annotation system Ldalvik/annotation/Signature;
value = {
"Lcom/google/common/collect/ImmutableList<",
"Landroidx/media3/common/audio/AudioProcessor;",
">;"
}
.end annotation
.end field
.field private final trimmingAudioProcessor:Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;
.field private tunneling:Z
.field private volume:F
.field private final writeExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.annotation system Ldalvik/annotation/Signature;
value = {
"Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder<",
"Landroidx/media3/exoplayer/audio/AudioSink$WriteException;",
">;"
}
.end annotation
.end field
.field private writtenEncodedFrames:J
.field private writtenPcmBytes:J
# direct methods
.method static constructor <clinit>()V
.locals 1
.line 481
new-instance v0, Ljava/lang/Object;
invoke-direct {v0}, Ljava/lang/Object;-><init>()V
sput-object v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutorLock:Ljava/lang/Object;
return-void
.end method
.method private constructor <init>(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)V
.locals 11
.annotation runtime Lorg/checkerframework/checker/nullness/qual/RequiresNonNull;
value = {
"#1.audioProcessorChain"
}
.end annotation
.line 558
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 559
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->access$100(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)Landroid/content/Context;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->context:Landroid/content/Context;
if-eqz v0, :cond_0
.line 560
invoke-static {v0}, Landroidx/media3/exoplayer/audio/AudioCapabilities;->getCapabilities(Landroid/content/Context;)Landroidx/media3/exoplayer/audio/AudioCapabilities;
move-result-object v0
goto :goto_0
:cond_0
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->access$200(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)Landroidx/media3/exoplayer/audio/AudioCapabilities;
move-result-object v0
:goto_0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilities:Landroidx/media3/exoplayer/audio/AudioCapabilities;
.line 561
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->access$300(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)Landroidx/media3/common/audio/AudioProcessorChain;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
.line 562
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x15
const/4 v2, 0x1
const/4 v3, 0x0
if-lt v0, v1, :cond_1
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->access$400(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)Z
move-result v0
if-eqz v0, :cond_1
move v0, v2
goto :goto_1
:cond_1
move v0, v3
:goto_1
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->enableFloatOutput:Z
.line 563
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_2
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->access$500(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)Z
move-result v0
if-eqz v0, :cond_2
goto :goto_2
:cond_2
move v2, v3
:goto_2
iput-boolean v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preferAudioTrackPlaybackParams:Z
.line 564
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x1d
if-lt v0, v1, :cond_3
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->access$600(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)I
move-result v0
goto :goto_3
:cond_3
move v0, v3
:goto_3
iput v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadMode:I
.line 565
iget-object v0, p1, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->audioTrackBufferSizeProvider:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioTrackBufferSizeProvider;
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackBufferSizeProvider:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioTrackBufferSizeProvider;
.line 566
new-instance v0, Landroidx/media3/common/util/ConditionVariable;
sget-object v1, Landroidx/media3/common/util/Clock;->DEFAULT:Landroidx/media3/common/util/Clock;
invoke-direct {v0, v1}, Landroidx/media3/common/util/ConditionVariable;-><init>(Landroidx/media3/common/util/Clock;)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releasingConditionVariable:Landroidx/media3/common/util/ConditionVariable;
.line 567
invoke-virtual {v0}, Landroidx/media3/common/util/ConditionVariable;->open()Z
.line 568
new-instance v0, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
new-instance v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PositionTrackerListener;
const/4 v2, 0x0
invoke-direct {v1, p0, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PositionTrackerListener;-><init>(Landroidx/media3/exoplayer/audio/DefaultAudioSink;Landroidx/media3/exoplayer/audio/DefaultAudioSink$1;)V
invoke-direct {v0, v1}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;-><init>(Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker$Listener;)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 569
new-instance v0, Landroidx/media3/exoplayer/audio/ChannelMappingAudioProcessor;
invoke-direct {v0}, Landroidx/media3/exoplayer/audio/ChannelMappingAudioProcessor;-><init>()V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->channelMappingAudioProcessor:Landroidx/media3/exoplayer/audio/ChannelMappingAudioProcessor;
.line 570
new-instance v1, Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;
invoke-direct {v1}, Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;-><init>()V
iput-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->trimmingAudioProcessor:Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;
.line 571
new-instance v2, Landroidx/media3/common/audio/ToInt16PcmAudioProcessor;
invoke-direct {v2}, Landroidx/media3/common/audio/ToInt16PcmAudioProcessor;-><init>()V
.line 572
invoke-static {v2, v0, v1}, Lcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->toIntPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.line 574
new-instance v0, Landroidx/media3/exoplayer/audio/ToFloatPcmAudioProcessor;
invoke-direct {v0}, Landroidx/media3/exoplayer/audio/ToFloatPcmAudioProcessor;-><init>()V
invoke-static {v0}, Lcom/google/common/collect/ImmutableList;->of(Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->toFloatPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
const/high16 v0, 0x3f800000 # 1.0f
iput v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->volume:F
.line 576
sget-object v0, Landroidx/media3/common/AudioAttributes;->DEFAULT:Landroidx/media3/common/AudioAttributes;
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
iput v3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioSessionId:I
.line 578
new-instance v0, Landroidx/media3/common/AuxEffectInfo;
const/4 v1, 0x0
invoke-direct {v0, v3, v1}, Landroidx/media3/common/AuxEffectInfo;-><init>(IF)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.line 579
new-instance v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
sget-object v5, Landroidx/media3/common/PlaybackParameters;->DEFAULT:Landroidx/media3/common/PlaybackParameters;
const-wide/16 v6, 0x0
const-wide/16 v8, 0x0
const/4 v10, 0x0
move-object v4, v0
invoke-direct/range {v4 .. v10}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;-><init>(Landroidx/media3/common/PlaybackParameters;JJLandroidx/media3/exoplayer/audio/DefaultAudioSink$1;)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 582
sget-object v0, Landroidx/media3/common/PlaybackParameters;->DEFAULT:Landroidx/media3/common/PlaybackParameters;
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
iput-boolean v3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->skipSilenceEnabled:Z
.line 584
new-instance v0, Ljava/util/ArrayDeque;
invoke-direct {v0}, Ljava/util/ArrayDeque;-><init>()V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 585
new-instance v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
const-wide/16 v1, 0x64
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;-><init>(J)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->initializationExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 587
new-instance v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;-><init>(J)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 589
iget-object p1, p1, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;->audioOffloadListener:Landroidx/media3/exoplayer/ExoPlayer$AudioOffloadListener;
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioOffloadListener:Landroidx/media3/exoplayer/ExoPlayer$AudioOffloadListener;
return-void
.end method
.method synthetic constructor <init>(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;Landroidx/media3/exoplayer/audio/DefaultAudioSink$1;)V
.locals 0
.line 93
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;-><init>(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Builder;)V
return-void
.end method
.method static synthetic access$1000(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)Landroidx/media3/exoplayer/audio/AudioSink$Listener;
.locals 0
.line 93
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
return-object p0
.end method
.method static synthetic access$1100(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)Z
.locals 0
.line 93
iget-boolean p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playing:Z
return p0
.end method
.method static synthetic access$1200(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)J
.locals 2
.line 93
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getSubmittedFrames()J
move-result-wide v0
return-wide v0
.end method
.method static synthetic access$1300(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)J
.locals 2
.line 93
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v0
return-wide v0
.end method
.method static synthetic access$1500(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)J
.locals 2
.line 93
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->lastFeedElapsedRealtimeMs:J
return-wide v0
.end method
.method static synthetic access$1600(III)Landroid/media/AudioFormat;
.locals 0
.line 93
invoke-static {p0, p1, p2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getAudioFormat(III)Landroid/media/AudioFormat;
move-result-object p0
return-object p0
.end method
.method static synthetic access$900(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)Landroid/media/AudioTrack;
.locals 0
.line 93
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
return-object p0
.end method
.method private applyAudioProcessorPlaybackParametersAndSkipSilence(J)V
.locals 9
.line 1545
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->useAudioTrackPlaybackParams()Z
move-result v0
if-nez v0, :cond_1
.line 1547
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->shouldApplyAudioProcessorPlaybackParameters()Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
.line 1548
invoke-interface {v0, v1}, Landroidx/media3/common/audio/AudioProcessorChain;->applyPlaybackParameters(Landroidx/media3/common/PlaybackParameters;)Landroidx/media3/common/PlaybackParameters;
move-result-object v0
goto :goto_0
.line 1549
:cond_0
sget-object v0, Landroidx/media3/common/PlaybackParameters;->DEFAULT:Landroidx/media3/common/PlaybackParameters;
:goto_0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
goto :goto_1
.line 1552
:cond_1
sget-object v0, Landroidx/media3/common/PlaybackParameters;->DEFAULT:Landroidx/media3/common/PlaybackParameters;
:goto_1
move-object v2, v0
.line 1555
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->shouldApplyAudioProcessorPlaybackParameters()Z
move-result v0
if-eqz v0, :cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
iget-boolean v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->skipSilenceEnabled:Z
.line 1556
invoke-interface {v0, v1}, Landroidx/media3/common/audio/AudioProcessorChain;->applySkipSilenceEnabled(Z)Z
move-result v0
goto :goto_2
:cond_2
const/4 v0, 0x0
:goto_2
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->skipSilenceEnabled:Z
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1558
new-instance v8, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
const-wide/16 v3, 0x0
.line 1561
invoke-static {v3, v4, p1, p2}, Ljava/lang/Math;->max(JJ)J
move-result-wide v3
iget-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1562
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v5
invoke-virtual {p1, v5, v6}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->framesToDurationUs(J)J
move-result-wide v5
const/4 v7, 0x0
move-object v1, v8
invoke-direct/range {v1 .. v7}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;-><init>(Landroidx/media3/common/PlaybackParameters;JJLandroidx/media3/exoplayer/audio/DefaultAudioSink$1;)V
.line 1558
invoke-virtual {v0, v8}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z
.line 1563
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setupAudioProcessors()V
iget-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz p1, :cond_3
iget-boolean p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->skipSilenceEnabled:Z
.line 1565
invoke-interface {p1, p0}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onSkipSilenceEnabledChanged(Z)V
:cond_3
return-void
.end method
.method private applyMediaPositionParameters(J)J
.locals 4
:goto_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1607
invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v0
if-nez v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1608
invoke-virtual {v0}, Ljava/util/ArrayDeque;->getFirst()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
iget-wide v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->audioTrackPositionUs:J
cmp-long v0, p1, v0
if-ltz v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1610
invoke-virtual {v0}, Ljava/util/ArrayDeque;->remove()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
goto :goto_0
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 1613
iget-wide v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->audioTrackPositionUs:J
sub-long v0, p1, v0
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 1615
iget-object v2, v2, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
sget-object v3, Landroidx/media3/common/PlaybackParameters;->DEFAULT:Landroidx/media3/common/PlaybackParameters;
invoke-virtual {v2, v3}, Landroidx/media3/common/PlaybackParameters;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_1
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 1616
iget-wide p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->mediaTimeUs:J
add-long/2addr p0, v0
return-wide p0
:cond_1
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1617
invoke-virtual {v2}, Ljava/util/ArrayDeque;->isEmpty()Z
move-result v2
if-eqz v2, :cond_2
iget-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
.line 1619
invoke-interface {p1, v0, v1}, Landroidx/media3/common/audio/AudioProcessorChain;->getMediaDuration(J)J
move-result-wide p1
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 1620
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->mediaTimeUs:J
add-long/2addr v0, p1
return-wide v0
:cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1631
invoke-virtual {v0}, Ljava/util/ArrayDeque;->getFirst()Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 1632
iget-wide v1, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->audioTrackPositionUs:J
sub-long/2addr v1, p1
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
.line 1634
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
iget p0, p0, Landroidx/media3/common/PlaybackParameters;->speed:F
.line 1635
invoke-static {v1, v2, p0}, Landroidx/media3/common/util/Util;->getMediaDurationForPlayoutDuration(JF)J
move-result-wide p0
.line 1638
iget-wide v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;->mediaTimeUs:J
sub-long/2addr v0, p0
return-wide v0
.end method
.method private applySkipping(J)J
.locals 3
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
.line 1644
invoke-interface {p0}, Landroidx/media3/common/audio/AudioProcessorChain;->getSkippedOutputFrameCount()J
move-result-wide v1
invoke-virtual {v0, v1, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->framesToDurationUs(J)J
move-result-wide v0
add-long/2addr p1, v0
return-wide p1
.end method
.method private buildAudioTrack(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;)Landroid/media/AudioTrack;
.locals 3
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;
}
.end annotation
:try_start_0
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
iget v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioSessionId:I
.line 1019
invoke-virtual {p1, v0, v1, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->buildAudioTrack(ZLandroidx/media3/common/AudioAttributes;I)Landroid/media/AudioTrack;
move-result-object p1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioOffloadListener:Landroidx/media3/exoplayer/ExoPlayer$AudioOffloadListener;
if-eqz v0, :cond_0
.line 1021
invoke-static {p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isOffloadedPlayback(Landroid/media/AudioTrack;)Z
move-result v1
invoke-interface {v0, v1}, Landroidx/media3/exoplayer/ExoPlayer$AudioOffloadListener;->onExperimentalOffloadedPlayback(Z)V
:try_end_0
.catch Landroidx/media3/exoplayer/audio/AudioSink$InitializationException; {:try_start_0 .. :try_end_0} :catch_0
:cond_0
return-object p1
:catch_0
move-exception p1
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz p0, :cond_1
.line 1026
invoke-interface {p0, p1}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onAudioSinkError(Ljava/lang/Exception;)V
.line 1028
:cond_1
throw p1
.end method
.method private buildAudioTrackWithRetry()Landroid/media/AudioTrack;
.locals 3
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;
}
.end annotation
:try_start_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 997
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
invoke-direct {p0, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->buildAudioTrack(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;)Landroid/media/AudioTrack;
move-result-object p0
:try_end_0
.catch Landroidx/media3/exoplayer/audio/AudioSink$InitializationException; {:try_start_0 .. :try_end_0} :catch_0
return-object p0
:catch_0
move-exception v0
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1000
iget v1, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->bufferSize:I
const v2, 0xf4240
if-le v1, v2, :cond_0
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1002
invoke-virtual {v1, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->copyWithBufferSize(I)Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
move-result-object v1
.line 1004
:try_start_1
invoke-direct {p0, v1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->buildAudioTrack(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;)Landroid/media/AudioTrack;
move-result-object v2
iput-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
:try_end_1
.catch Landroidx/media3/exoplayer/audio/AudioSink$InitializationException; {:try_start_1 .. :try_end_1} :catch_1
return-object v2
:catch_1
move-exception v1
.line 1008
invoke-virtual {v0, v1}, Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;->addSuppressed(Ljava/lang/Throwable;)V
.line 1011
:cond_0
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->maybeDisableOffload()V
.line 1012
throw v0
.end method
.method private drainToEndOfStream()Z
.locals 5
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$WriteException;
}
.end annotation
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 1082
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->isOperational()Z
move-result v0
const/4 v1, 0x0
const-wide/high16 v2, -0x8000000000000000L
const/4 v4, 0x1
if-nez v0, :cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
if-nez v0, :cond_0
return v4
.line 1086
:cond_0
invoke-direct {p0, v0, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeBuffer(Ljava/nio/ByteBuffer;J)V
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
if-nez p0, :cond_1
move v1, v4
:cond_1
return v1
:cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 1090
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->queueEndOfStream()V
.line 1091
invoke-direct {p0, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->processBuffers(J)V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 1092
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->isEnded()Z
move-result v0
if-eqz v0, :cond_4
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
if-eqz p0, :cond_3
.line 1093
invoke-virtual {p0}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result p0
if-nez p0, :cond_4
:cond_3
move v1, v4
:cond_4
return v1
.end method
.method private getAudioCapabilities()Landroidx/media3/exoplayer/audio/AudioCapabilities;
.locals 3
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilitiesReceiver:Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;
if-nez v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->context:Landroid/content/Context;
if-eqz v0, :cond_0
.line 1697
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackLooper:Landroid/os/Looper;
.line 1698
new-instance v0, Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->context:Landroid/content/Context;
new-instance v2, Landroidx/media3/exoplayer/audio/DefaultAudioSink$$ExternalSyntheticLambda1;
invoke-direct {v2, p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$$ExternalSyntheticLambda1;-><init>(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)V
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;-><init>(Landroid/content/Context;Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver$Listener;)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilitiesReceiver:Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;
.line 1700
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;->register()Landroidx/media3/exoplayer/audio/AudioCapabilities;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilities:Landroidx/media3/exoplayer/audio/AudioCapabilities;
:cond_0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilities:Landroidx/media3/exoplayer/audio/AudioCapabilities;
return-object p0
.end method
.method private static getAudioFormat(III)Landroid/media/AudioFormat;
.locals 1
.line 1940
new-instance v0, Landroid/media/AudioFormat$Builder;
invoke-direct {v0}, Landroid/media/AudioFormat$Builder;-><init>()V
.line 1941
invoke-virtual {v0, p0}, Landroid/media/AudioFormat$Builder;->setSampleRate(I)Landroid/media/AudioFormat$Builder;
move-result-object p0
.line 1942
invoke-virtual {p0, p1}, Landroid/media/AudioFormat$Builder;->setChannelMask(I)Landroid/media/AudioFormat$Builder;
move-result-object p0
.line 1943
invoke-virtual {p0, p2}, Landroid/media/AudioFormat$Builder;->setEncoding(I)Landroid/media/AudioFormat$Builder;
move-result-object p0
.line 1944
invoke-virtual {p0}, Landroid/media/AudioFormat$Builder;->build()Landroid/media/AudioFormat;
move-result-object p0
return-object p0
.end method
.method private static getAudioTrackMinBufferSize(III)I
.locals 0
.line 1949
invoke-static {p0, p1, p2}, Landroid/media/AudioTrack;->getMinBufferSize(III)I
move-result p0
const/4 p1, -0x2
if-eq p0, p1, :cond_0
const/4 p1, 0x1
goto :goto_0
:cond_0
const/4 p1, 0x0
.line 1950
:goto_0
invoke-static {p1}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
return p0
.end method
.method private static getFramesPerEncodedSample(ILjava/nio/ByteBuffer;)I
.locals 2
const/16 v0, 0x400
const/4 v1, -0x1
packed-switch p0, :pswitch_data_0
.line 1771
:pswitch_0
new-instance p1, Ljava/lang/IllegalStateException;
new-instance v0, Ljava/lang/StringBuilder;
const-string v1, "Unexpected audio encoding: "
invoke-direct {v0, v1}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v0, p0}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
invoke-direct {p1, p0}, Ljava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
throw p1
.line 1760
:pswitch_1
invoke-static {p1}, Landroidx/media3/extractor/OpusUtil;->parseOggPacketAudioSampleCount(Ljava/nio/ByteBuffer;)I
move-result p0
return p0
.line 1752
:pswitch_2
invoke-static {p1}, Landroidx/media3/extractor/Ac4Util;->parseAc4SyncframeAudioSampleCount(Ljava/nio/ByteBuffer;)I
move-result p0
return p0
:pswitch_3
return v0
:pswitch_4
const/16 p0, 0x200
return p0
.line 1754
:pswitch_5
invoke-static {p1}, Landroidx/media3/extractor/Ac3Util;->findTrueHdSyncframeOffset(Ljava/nio/ByteBuffer;)I
move-result p0
if-ne p0, v1, :cond_0
const/4 p0, 0x0
goto :goto_0
.line 1757
:cond_0
invoke-static {p1, p0}, Landroidx/media3/extractor/Ac3Util;->parseTrueHdSyncframeAudioSampleCount(Ljava/nio/ByteBuffer;I)I
move-result p0
mul-int/lit8 p0, p0, 0x10
:goto_0
return p0
:pswitch_6
const/16 p0, 0x800
return p0
:pswitch_7
return v0
.line 1729
:pswitch_8
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->position()I
move-result p0
invoke-static {p1, p0}, Landroidx/media3/common/util/Util;->getBigEndianInt(Ljava/nio/ByteBuffer;I)I
move-result p0
.line 1730
invoke-static {p0}, Landroidx/media3/extractor/MpegAudioUtil;->parseMpegAudioFrameSampleCount(I)I
move-result p0
if-eq p0, v1, :cond_1
return p0
.line 1732
:cond_1
new-instance p0, Ljava/lang/IllegalArgumentException;
invoke-direct {p0}, Ljava/lang/IllegalArgumentException;-><init>()V
throw p0
.line 1746
:pswitch_9
invoke-static {p1}, Landroidx/media3/extractor/DtsUtil;->parseDtsAudioSampleCount(Ljava/nio/ByteBuffer;)I
move-result p0
return p0
.line 1750
:pswitch_a
invoke-static {p1}, Landroidx/media3/extractor/Ac3Util;->parseAc3SyncframeAudioSampleCount(Ljava/nio/ByteBuffer;)I
move-result p0
return p0
nop
:pswitch_data_0
.packed-switch 0x5
:pswitch_a
:pswitch_a
:pswitch_9
:pswitch_9
:pswitch_8
:pswitch_7
:pswitch_6
:pswitch_6
:pswitch_0
:pswitch_5
:pswitch_4
:pswitch_3
:pswitch_2
:pswitch_a
:pswitch_0
:pswitch_1
.end packed-switch
.end method
.method private getOffloadedPlaybackSupport(Landroid/media/AudioFormat;Landroid/media/AudioAttributes;)I
.locals 1
.line 1709
sget p0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v0, 0x1f
if-lt p0, v0, :cond_0
.line 1710
invoke-static {p1, p2}, Landroid/media/AudioManager;->getPlaybackOffloadSupport(Landroid/media/AudioFormat;Landroid/media/AudioAttributes;)I
move-result p0
return p0
.line 1712
:cond_0
invoke-static {p1, p2}, Landroid/media/AudioManager;->isOffloadedPlaybackSupported(Landroid/media/AudioFormat;Landroid/media/AudioAttributes;)Z
move-result p0
if-nez p0, :cond_1
const/4 p0, 0x0
return p0
.line 1716
:cond_1
sget p0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 p1, 0x1e
if-ne p0, p1, :cond_2
sget-object p0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String;
const-string p1, "Pixel"
invoke-virtual {p0, p1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z
move-result p0
if-eqz p0, :cond_2
const/4 p0, 0x2
return p0
:cond_2
const/4 p0, 0x1
return p0
.end method
.method private getSubmittedFrames()J
.locals 4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1652
iget v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-nez v0, :cond_0
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedPcmBytes:J
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1653
iget p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputPcmFrameSize:I
int-to-long v2, p0
div-long/2addr v0, v2
goto :goto_0
:cond_0
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedEncodedFrames:J
:goto_0
return-wide v0
.end method
.method private getWrittenFrames()J
.locals 4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1658
iget v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-nez v0, :cond_0
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenPcmBytes:J
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1659
iget p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputPcmFrameSize:I
int-to-long v2, p0
div-long/2addr v0, v2
goto :goto_0
:cond_0
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenEncodedFrames:J
:goto_0
return-wide v0
.end method
.method private initializeAudioTrack()Z
.locals 9
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;
}
.end annotation
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releasingConditionVariable:Landroidx/media3/common/util/ConditionVariable;
.line 785
invoke-virtual {v0}, Landroidx/media3/common/util/ConditionVariable;->isOpen()Z
move-result v0
const/4 v1, 0x0
if-nez v0, :cond_0
return v1
.line 789
:cond_0
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->buildAudioTrackWithRetry()Landroid/media/AudioTrack;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 790
invoke-static {v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isOffloadedPlayback(Landroid/media/AudioTrack;)Z
move-result v0
if-eqz v0, :cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 791
invoke-direct {p0, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->registerStreamEventCallbackV29(Landroid/media/AudioTrack;)V
iget v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadMode:I
const/4 v2, 0x3
if-eq v0, v2, :cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 793
iget-object v2, v2, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFormat:Landroidx/media3/common/Format;
iget v2, v2, Landroidx/media3/common/Format;->encoderDelay:I
iget-object v3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object v3, v3, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFormat:Landroidx/media3/common/Format;
iget v3, v3, Landroidx/media3/common/Format;->encoderPadding:I
invoke-virtual {v0, v2, v3}, Landroid/media/AudioTrack;->setOffloadDelayPadding(II)V
.line 797
:cond_1
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v2, 0x1f
if-lt v0, v2, :cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playerId:Landroidx/media3/exoplayer/analytics/PlayerId;
if-eqz v0, :cond_2
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 798
invoke-static {v2, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Api31;->setLogSessionIdOnAudioTrack(Landroid/media/AudioTrack;Landroidx/media3/exoplayer/analytics/PlayerId;)V
:cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 800
invoke-virtual {v0}, Landroid/media/AudioTrack;->getAudioSessionId()I
move-result v0
iput v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioSessionId:I
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
iget-object v3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 801
iget v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
const/4 v4, 0x2
const/4 v8, 0x1
if-ne v0, v4, :cond_3
move v4, v8
goto :goto_0
:cond_3
move v4, v1
:goto_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget v5, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputEncoding:I
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget v6, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputPcmFrameSize:I
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->bufferSize:I
invoke-virtual/range {v2 .. v7}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->setAudioTrack(Landroid/media/AudioTrack;ZIII)V
.line 807
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setVolumeInternal()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.line 809
iget v0, v0, Landroidx/media3/common/AuxEffectInfo;->effectId:I
if-eqz v0, :cond_4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.line 810
iget v1, v1, Landroidx/media3/common/AuxEffectInfo;->effectId:I
invoke-virtual {v0, v1}, Landroid/media/AudioTrack;->attachAuxEffect(I)I
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.line 811
iget v1, v1, Landroidx/media3/common/AuxEffectInfo;->sendLevel:F
invoke-virtual {v0, v1}, Landroid/media/AudioTrack;->setAuxEffectSendLevel(F)I
:cond_4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preferredDevice:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;
if-eqz v0, :cond_5
.line 813
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x17
if-lt v0, v1, :cond_5
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preferredDevice:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;
.line 814
invoke-static {v0, v1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Api23;->setPreferredDeviceOnAudioTrack(Landroid/media/AudioTrack;Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;)V
:cond_5
iput-boolean v8, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsInit:Z
return v8
.end method
.method private static isAudioTrackDeadObject(I)Z
.locals 2
.line 1233
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x18
if-lt v0, v1, :cond_0
const/4 v0, -0x6
if-eq p0, v0, :cond_1
:cond_0
const/16 v0, -0x20
if-ne p0, v0, :cond_2
:cond_1
const/4 p0, 0x1
goto :goto_0
:cond_2
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private isAudioTrackInitialized()Z
.locals 0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private static isOffloadedPlayback(Landroid/media/AudioTrack;)Z
.locals 2
.line 1723
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x1d
if-lt v0, v1, :cond_0
invoke-virtual {p0}, Landroid/media/AudioTrack;->isOffloadedPlayback()Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method static synthetic lambda$releaseAudioTrackAsync$0(Landroid/media/AudioTrack;Landroidx/media3/common/util/ConditionVariable;)V
.locals 2
const/4 v0, 0x0
.line 1852
:try_start_0
invoke-virtual {p0}, Landroid/media/AudioTrack;->flush()V
.line 1853
invoke-virtual {p0}, Landroid/media/AudioTrack;->release()V
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_1
.line 1855
invoke-virtual {p1}, Landroidx/media3/common/util/ConditionVariable;->open()Z
sget-object p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutorLock:Ljava/lang/Object;
.line 1856
monitor-enter p0
:try_start_1
sget p1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingReleaseCount:I
add-int/lit8 p1, p1, -0x1
sput p1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingReleaseCount:I
if-nez p1, :cond_0
sget-object p1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
.line 1859
invoke-interface {p1}, Ljava/util/concurrent/ExecutorService;->shutdown()V
sput-object v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
.line 1862
:cond_0
monitor-exit p0
return-void
:catchall_0
move-exception p1
monitor-exit p0
:try_end_1
.catchall {:try_start_1 .. :try_end_1} :catchall_0
throw p1
:catchall_1
move-exception p0
.line 1855
invoke-virtual {p1}, Landroidx/media3/common/util/ConditionVariable;->open()Z
sget-object p1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutorLock:Ljava/lang/Object;
.line 1856
monitor-enter p1
:try_start_2
sget v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingReleaseCount:I
add-int/lit8 v1, v1, -0x1
sput v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingReleaseCount:I
if-nez v1, :cond_1
sget-object v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
.line 1859
invoke-interface {v1}, Ljava/util/concurrent/ExecutorService;->shutdown()V
sput-object v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
.line 1862
:cond_1
monitor-exit p1
:try_end_2
.catchall {:try_start_2 .. :try_end_2} :catchall_2
.line 1863
throw p0
:catchall_2
move-exception p0
.line 1862
:try_start_3
monitor-exit p1
:try_end_3
.catchall {:try_start_3 .. :try_end_3} :catchall_2
throw p0
.end method
.method private maybeDisableOffload()V
.locals 1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1223
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputModeIsOffload()Z
move-result v0
if-nez v0, :cond_0
return-void
:cond_0
const/4 v0, 0x1
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadDisabledUntilNextConfiguration:Z
return-void
.end method
.method private playPendingData()V
.locals 3
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->stoppedAudioTrack:Z
if-nez v0, :cond_0
const/4 v0, 0x1
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->stoppedAudioTrack:Z
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1832
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v1
invoke-virtual {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->handleEndOfStream(J)V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1833
invoke-virtual {v0}, Landroid/media/AudioTrack;->stop()V
const/4 v0, 0x0
iput v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
:cond_0
return-void
.end method
.method private processBuffers(J)V
.locals 2
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$WriteException;
}
.end annotation
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 1055
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->isOperational()Z
move-result v0
if-nez v0, :cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
if-eqz v0, :cond_0
goto :goto_0
.line 1056
:cond_0
sget-object v0, Landroidx/media3/common/audio/AudioProcessor;->EMPTY_BUFFER:Ljava/nio/ByteBuffer;
:goto_0
invoke-direct {p0, v0, p1, p2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeBuffer(Ljava/nio/ByteBuffer;J)V
return-void
:cond_1
:goto_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 1060
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->isEnded()Z
move-result v0
if-nez v0, :cond_5
:cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 1062
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->getOutput()Ljava/nio/ByteBuffer;
move-result-object v0
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v1
if-eqz v1, :cond_3
.line 1063
invoke-direct {p0, v0, p1, p2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeBuffer(Ljava/nio/ByteBuffer;J)V
.line 1064
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v0
if-eqz v0, :cond_2
return-void
:cond_3
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
if-eqz v0, :cond_5
.line 1069
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v0
if-nez v0, :cond_4
goto :goto_2
:cond_4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
.line 1072
invoke-virtual {v0, v1}, Landroidx/media3/common/audio/AudioProcessingPipeline;->queueInput(Ljava/nio/ByteBuffer;)V
goto :goto_1
:cond_5
:goto_2
return-void
.end method
.method private registerStreamEventCallbackV29(Landroid/media/AudioTrack;)V
.locals 1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadStreamEventCallbackV29:Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
if-nez v0, :cond_0
.line 1037
new-instance v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
invoke-direct {v0, p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;-><init>(Landroidx/media3/exoplayer/audio/DefaultAudioSink;)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadStreamEventCallbackV29:Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
:cond_0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadStreamEventCallbackV29:Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
.line 1039
invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;->register(Landroid/media/AudioTrack;)V
return-void
.end method
.method private static releaseAudioTrackAsync(Landroid/media/AudioTrack;Landroidx/media3/common/util/ConditionVariable;)V
.locals 3
.line 1843
invoke-virtual {p1}, Landroidx/media3/common/util/ConditionVariable;->close()Z
sget-object v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutorLock:Ljava/lang/Object;
.line 1844
monitor-enter v0
:try_start_0
sget-object v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
if-nez v1, :cond_0
const-string v1, "ExoPlayer:AudioTrackReleaseThread"
.line 1846
invoke-static {v1}, Landroidx/media3/common/util/Util;->newSingleThreadExecutor(Ljava/lang/String;)Ljava/util/concurrent/ExecutorService;
move-result-object v1
sput-object v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
:cond_0
sget v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingReleaseCount:I
add-int/lit8 v1, v1, 0x1
sput v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingReleaseCount:I
sget-object v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseExecutor:Ljava/util/concurrent/ExecutorService;
.line 1849
new-instance v2, Landroidx/media3/exoplayer/audio/DefaultAudioSink$$ExternalSyntheticLambda0;
invoke-direct {v2, p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$$ExternalSyntheticLambda0;-><init>(Landroid/media/AudioTrack;Landroidx/media3/common/util/ConditionVariable;)V
invoke-interface {v1, v2}, Ljava/util/concurrent/ExecutorService;->execute(Ljava/lang/Runnable;)V
.line 1865
monitor-exit v0
return-void
:catchall_0
move-exception p0
monitor-exit v0
:try_end_0
.catchall {:try_start_0 .. :try_end_0} :catchall_0
throw p0
.end method
.method private resetSinkStateForFlush()V
.locals 11
const-wide/16 v0, 0x0
iput-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedPcmBytes:J
iput-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedEncodedFrames:J
iput-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenPcmBytes:J
iput-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenEncodedFrames:J
const/4 v2, 0x0
iput-boolean v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isWaitingForOffloadEndOfStreamHandled:Z
iput v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->framesPerEncodedSample:I
.line 1487
new-instance v10, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
iget-object v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
const-wide/16 v5, 0x0
const-wide/16 v7, 0x0
const/4 v9, 0x0
move-object v3, v10
invoke-direct/range {v3 .. v9}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;-><init>(Landroidx/media3/common/PlaybackParameters;JJLandroidx/media3/exoplayer/audio/DefaultAudioSink$1;)V
iput-object v10, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
iput-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUs:J
const/4 v0, 0x0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->afterDrainParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParametersCheckpoints:Ljava/util/ArrayDeque;
.line 1492
invoke-virtual {v1}, Ljava/util/ArrayDeque;->clear()V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
iput v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBufferAccessUnitCount:I
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
iput-boolean v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->stoppedAudioTrack:Z
iput-boolean v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->handledEndOfStream:Z
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
iput v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->trimmingAudioProcessor:Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;
.line 1500
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;->resetTrimmedFrameCount()V
.line 1501
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setupAudioProcessors()V
return-void
.end method
.method private setAudioProcessorPlaybackParameters(Landroidx/media3/common/PlaybackParameters;)V
.locals 8
.line 1527
new-instance v7, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
const-wide v2, -0x7fffffffffffffffL # -4.9E-324
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
const/4 v6, 0x0
move-object v0, v7
move-object v1, p1
invoke-direct/range {v0 .. v6}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;-><init>(Landroidx/media3/common/PlaybackParameters;JJLandroidx/media3/exoplayer/audio/DefaultAudioSink$1;)V
.line 1532
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result p1
if-eqz p1, :cond_0
iput-object v7, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->afterDrainParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
goto :goto_0
:cond_0
iput-object v7, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->mediaPositionParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
:goto_0
return-void
.end method
.method private setAudioTrackPlaybackParametersV23()V
.locals 3
.line 1506
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_0
.line 1507
new-instance v0, Landroid/media/PlaybackParams;
invoke-direct {v0}, Landroid/media/PlaybackParams;-><init>()V
.line 1509
invoke-virtual {v0}, Landroid/media/PlaybackParams;->allowDefaults()Landroid/media/PlaybackParams;
move-result-object v0
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
iget v1, v1, Landroidx/media3/common/PlaybackParameters;->speed:F
.line 1510
invoke-virtual {v0, v1}, Landroid/media/PlaybackParams;->setSpeed(F)Landroid/media/PlaybackParams;
move-result-object v0
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
iget v1, v1, Landroidx/media3/common/PlaybackParameters;->pitch:F
.line 1511
invoke-virtual {v0, v1}, Landroid/media/PlaybackParams;->setPitch(F)Landroid/media/PlaybackParams;
move-result-object v0
const/4 v1, 0x2
.line 1512
invoke-virtual {v0, v1}, Landroid/media/PlaybackParams;->setAudioFallbackMode(I)Landroid/media/PlaybackParams;
move-result-object v0
:try_start_0
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1514
invoke-virtual {v1, v0}, Landroid/media/AudioTrack;->setPlaybackParams(Landroid/media/PlaybackParams;)V
:try_end_0
.catch Ljava/lang/IllegalArgumentException; {:try_start_0 .. :try_end_0} :catch_0
goto :goto_0
:catch_0
move-exception v0
const-string v1, "DefaultAudioSink"
const-string v2, "Failed to set playback params"
.line 1516
invoke-static {v1, v2, v0}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 1519
:goto_0
new-instance v0, Landroidx/media3/common/PlaybackParameters;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1521
invoke-virtual {v1}, Landroid/media/AudioTrack;->getPlaybackParams()Landroid/media/PlaybackParams;
move-result-object v1
invoke-virtual {v1}, Landroid/media/PlaybackParams;->getSpeed()F
move-result v1
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
invoke-virtual {v2}, Landroid/media/AudioTrack;->getPlaybackParams()Landroid/media/PlaybackParams;
move-result-object v2
invoke-virtual {v2}, Landroid/media/PlaybackParams;->getPitch()F
move-result v2
invoke-direct {v0, v1, v2}, Landroidx/media3/common/PlaybackParameters;-><init>(FF)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1522
iget v0, v0, Landroidx/media3/common/PlaybackParameters;->speed:F
invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->setAudioTrackPlaybackSpeed(F)V
:cond_0
return-void
.end method
.method private setVolumeInternal()V
.locals 2
.line 1362
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-nez v0, :cond_0
goto :goto_0
.line 1364
:cond_0
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-lt v0, v1, :cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->volume:F
.line 1365
invoke-static {v0, p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setVolumeInternalV21(Landroid/media/AudioTrack;F)V
goto :goto_0
:cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->volume:F
.line 1367
invoke-static {v0, p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setVolumeInternalV3(Landroid/media/AudioTrack;F)V
:goto_0
return-void
.end method
.method private static setVolumeInternalV21(Landroid/media/AudioTrack;F)V
.locals 0
.line 1822
invoke-virtual {p0, p1}, Landroid/media/AudioTrack;->setVolume(F)I
return-void
.end method
.method private static setVolumeInternalV3(Landroid/media/AudioTrack;F)V
.locals 0
.line 1826
invoke-virtual {p0, p1, p1}, Landroid/media/AudioTrack;->setStereoVolume(FF)I
return-void
.end method
.method private setupAudioProcessors()V
.locals 1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 775
iget-object v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 776
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->flush()V
return-void
.end method
.method private shouldApplyAudioProcessorPlaybackParameters()Z
.locals 1
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
if-nez v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1581
iget v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-nez v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFormat:Landroidx/media3/common/Format;
iget v0, v0, Landroidx/media3/common/Format;->pcmEncoding:I
.line 1583
invoke-direct {p0, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->shouldUseFloatOutput(I)Z
move-result p0
if-nez p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private shouldUseFloatOutput(I)Z
.locals 0
iget-boolean p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->enableFloatOutput:Z
if-eqz p0, :cond_0
.line 1597
invoke-static {p1}, Landroidx/media3/common/util/Util;->isEncodingHighResolutionPcm(I)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private useAudioTrackPlaybackParams()Z
.locals 1
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
if-eqz p0, :cond_0
.line 1587
iget-boolean p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->enableAudioTrackPlaybackParams:Z
if-eqz p0, :cond_0
sget p0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v0, 0x17
if-lt p0, v0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method private useOffloadedPlayback(Landroidx/media3/common/Format;Landroidx/media3/common/AudioAttributes;)Z
.locals 4
.line 1664
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x1d
const/4 v2, 0x0
if-lt v0, v1, :cond_9
iget v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadMode:I
if-nez v0, :cond_0
goto :goto_3
.line 1668
:cond_0
iget-object v0, p1, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/lang/String;
iget-object v1, p1, Landroidx/media3/common/Format;->codecs:Ljava/lang/String;
invoke-static {v0, v1}, Landroidx/media3/common/MimeTypes;->getEncoding(Ljava/lang/String;Ljava/lang/String;)I
move-result v0
if-nez v0, :cond_1
return v2
.line 1672
:cond_1
iget v1, p1, Landroidx/media3/common/Format;->channelCount:I
invoke-static {v1}, Landroidx/media3/common/util/Util;->getAudioTrackChannelConfig(I)I
move-result v1
if-nez v1, :cond_2
return v2
.line 1676
:cond_2
iget v3, p1, Landroidx/media3/common/Format;->sampleRate:I
invoke-static {v3, v1, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getAudioFormat(III)Landroid/media/AudioFormat;
move-result-object v0
.line 1679
invoke-virtual {p2}, Landroidx/media3/common/AudioAttributes;->getAudioAttributesV21()Landroidx/media3/common/AudioAttributes$AudioAttributesV21;
move-result-object p2
iget-object p2, p2, Landroidx/media3/common/AudioAttributes$AudioAttributesV21;->audioAttributes:Landroid/media/AudioAttributes;
.line 1678
invoke-direct {p0, v0, p2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getOffloadedPlaybackSupport(Landroid/media/AudioFormat;Landroid/media/AudioAttributes;)I
move-result p2
if-eqz p2, :cond_9
const/4 v0, 0x1
if-eq p2, v0, :cond_4
const/4 p0, 0x2
if-ne p2, p0, :cond_3
return v0
.line 1689
:cond_3
new-instance p0, Ljava/lang/IllegalStateException;
invoke-direct {p0}, Ljava/lang/IllegalStateException;-><init>()V
throw p0
.line 1683
:cond_4
iget p2, p1, Landroidx/media3/common/Format;->encoderDelay:I
if-nez p2, :cond_6
iget p1, p1, Landroidx/media3/common/Format;->encoderPadding:I
if-eqz p1, :cond_5
goto :goto_0
:cond_5
move p1, v2
goto :goto_1
:cond_6
:goto_0
move p1, v0
:goto_1
iget p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadMode:I
if-ne p0, v0, :cond_7
move p0, v0
goto :goto_2
:cond_7
move p0, v2
:goto_2
if-eqz p1, :cond_8
if-nez p0, :cond_9
:cond_8
move v2, v0
:cond_9
:goto_3
return v2
.end method
.method private writeBuffer(Ljava/nio/ByteBuffer;J)V
.locals 12
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$WriteException;
}
.end annotation
.line 1105
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v0
if-nez v0, :cond_0
return-void
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
const/16 v1, 0x15
const/4 v2, 0x1
const/4 v3, 0x0
if-eqz v0, :cond_2
if-ne v0, p1, :cond_1
move v0, v2
goto :goto_0
:cond_1
move v0, v3
.line 1109
:goto_0
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkArgument(Z)V
goto :goto_1
:cond_2
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
.line 1112
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
if-ge v0, v1, :cond_5
.line 1113
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
iget-object v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBuffer:[B
if-eqz v4, :cond_3
.line 1114
array-length v4, v4
if-ge v4, v0, :cond_4
.line 1115
:cond_3
new-array v4, v0, [B
iput-object v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBuffer:[B
.line 1117
:cond_4
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->position()I
move-result v4
iget-object v5, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBuffer:[B
.line 1118
invoke-virtual {p1, v5, v3, v0}, Ljava/nio/ByteBuffer;->get([BII)Ljava/nio/ByteBuffer;
.line 1119
invoke-virtual {p1, v4}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
iput v3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBufferOffset:I
.line 1123
:cond_5
:goto_1
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v0
.line 1125
sget v4, Landroidx/media3/common/util/Util;->SDK_INT:I
if-ge v4, v1, :cond_7
iget-object p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
iget-wide v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenPcmBytes:J
.line 1127
invoke-virtual {p2, v4, v5}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->getAvailableBufferSize(J)I
move-result p2
if-lez p2, :cond_6
.line 1129
invoke-static {v0, p2}, Ljava/lang/Math;->min(II)I
move-result p2
iget-object p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBuffer:[B
iget v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBufferOffset:I
.line 1131
invoke-virtual {p3, v1, v4, p2}, Landroid/media/AudioTrack;->write([BII)I
move-result p2
if-lez p2, :cond_b
iget p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBufferOffset:I
add-int/2addr p3, p2
iput p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preV21OutputBufferOffset:I
.line 1134
invoke-virtual {p1}, Ljava/nio/ByteBuffer;->position()I
move-result p3
add-int/2addr p3, p2
invoke-virtual {p1, p3}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
goto :goto_4
:cond_6
move p2, v3
goto :goto_4
:cond_7
iget-boolean v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
if-eqz v1, :cond_a
const-wide v4, -0x7fffffffffffffffL # -4.9E-324
cmp-long v1, p2, v4
if-eqz v1, :cond_8
move v1, v2
goto :goto_2
:cond_8
move v1, v3
.line 1138
:goto_2
invoke-static {v1}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
const-wide/high16 v4, -0x8000000000000000L
cmp-long v1, p2, v4
if-nez v1, :cond_9
iget-wide p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->lastTunnelingAvSyncPresentationTimeUs:J
goto :goto_3
:cond_9
iput-wide p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->lastTunnelingAvSyncPresentationTimeUs:J
:goto_3
move-wide v10, p2
iget-object v7, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
move-object v6, p0
move-object v8, p1
move v9, v0
.line 1148
invoke-direct/range {v6 .. v11}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeNonBlockingWithAvSyncV21(Landroid/media/AudioTrack;Ljava/nio/ByteBuffer;IJ)I
move-result p2
goto :goto_4
:cond_a
iget-object p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1151
invoke-static {p2, p1, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeNonBlockingV21(Landroid/media/AudioTrack;Ljava/nio/ByteBuffer;I)I
move-result p2
.line 1154
:cond_b
:goto_4
invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J
move-result-wide v4
iput-wide v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->lastFeedElapsedRealtimeMs:J
const-wide/16 v4, 0x0
if-gez p2, :cond_f
.line 1162
invoke-static {p2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackDeadObject(I)Z
move-result p1
if-eqz p1, :cond_c
iget-wide v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenEncodedFrames:J
cmp-long p1, v0, v4
if-lez p1, :cond_c
goto :goto_5
:cond_c
move v2, v3
.line 1164
:goto_5
new-instance p1, Landroidx/media3/exoplayer/audio/AudioSink$WriteException;
iget-object p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object p3, p3, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFormat:Landroidx/media3/common/Format;
invoke-direct {p1, p2, p3, v2}, Landroidx/media3/exoplayer/audio/AudioSink$WriteException;-><init>(ILandroidx/media3/common/Format;Z)V
iget-object p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz p2, :cond_d
.line 1166
invoke-interface {p2, p1}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onAudioSinkError(Ljava/lang/Exception;)V
.line 1168
:cond_d
iget-boolean p2, p1, Landroidx/media3/exoplayer/audio/AudioSink$WriteException;->isRecoverable:Z
if-nez p2, :cond_e
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 1173
invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->throwExceptionIfDeadlineIsReached(Ljava/lang/Exception;)V
return-void
.line 1170
:cond_e
sget-object p2, Landroidx/media3/exoplayer/audio/AudioCapabilities;->DEFAULT_AUDIO_CAPABILITIES:Landroidx/media3/exoplayer/audio/AudioCapabilities;
iput-object p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilities:Landroidx/media3/exoplayer/audio/AudioCapabilities;
.line 1171
throw p1
:cond_f
iget-object p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 1176
invoke-virtual {p3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->clear()V
iget-object p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1180
invoke-static {p3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isOffloadedPlayback(Landroid/media/AudioTrack;)Z
move-result p3
if-eqz p3, :cond_11
iget-wide v6, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenEncodedFrames:J
cmp-long p3, v6, v4
if-lez p3, :cond_10
iput-boolean v3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isWaitingForOffloadEndOfStreamHandled:Z
:cond_10
iget-boolean p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playing:Z
if-eqz p3, :cond_11
iget-object p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz p3, :cond_11
if-ge p2, v0, :cond_11
iget-boolean v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isWaitingForOffloadEndOfStreamHandled:Z
if-nez v1, :cond_11
.line 1196
invoke-interface {p3}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onOffloadBufferFull()V
:cond_11
iget-object p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1200
iget p3, p3, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-nez p3, :cond_12
iget-wide v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenPcmBytes:J
int-to-long v6, p2
add-long/2addr v4, v6
iput-wide v4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenPcmBytes:J
:cond_12
if-ne p2, v0, :cond_15
iget-object p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1204
iget p2, p2, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-eqz p2, :cond_14
iget-object p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
if-ne p1, p2, :cond_13
goto :goto_6
:cond_13
move v2, v3
.line 1207
:goto_6
invoke-static {v2}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-wide p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenEncodedFrames:J
iget p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->framesPerEncodedSample:I
int-to-long v0, p3
iget p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBufferAccessUnitCount:I
int-to-long v2, p3
mul-long/2addr v0, v2
add-long/2addr p1, v0
iput-wide p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writtenEncodedFrames:J
:cond_14
const/4 p1, 0x0
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->outputBuffer:Ljava/nio/ByteBuffer;
:cond_15
return-void
.end method
.method private static writeNonBlockingV21(Landroid/media/AudioTrack;Ljava/nio/ByteBuffer;I)I
.locals 1
const/4 v0, 0x1
.line 1777
invoke-virtual {p0, p1, p2, v0}, Landroid/media/AudioTrack;->write(Ljava/nio/ByteBuffer;II)I
move-result p0
return p0
.end method
.method private writeNonBlockingWithAvSyncV21(Landroid/media/AudioTrack;Ljava/nio/ByteBuffer;IJ)I
.locals 10
.line 1783
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x1a
const-wide/16 v2, 0x3e8
if-lt v0, v1, :cond_0
const/4 v7, 0x1
mul-long v8, p4, v2
move-object v4, p1
move-object v5, p2
move v6, p3
.line 1785
invoke-virtual/range {v4 .. v9}, Landroid/media/AudioTrack;->write(Ljava/nio/ByteBuffer;IIJ)I
move-result p0
return p0
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
if-nez v0, :cond_1
const/16 v0, 0x10
.line 1789
invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v0
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
.line 1790
sget-object v1, Ljava/nio/ByteOrder;->BIG_ENDIAN:Ljava/nio/ByteOrder;
invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer;
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
const v1, 0x55550001
.line 1791
invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
:cond_1
iget v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
const/4 v1, 0x0
if-nez v0, :cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
const/4 v4, 0x4
.line 1794
invoke-virtual {v0, v4, p3}, Ljava/nio/ByteBuffer;->putInt(II)Ljava/nio/ByteBuffer;
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
const/16 v4, 0x8
mul-long/2addr p4, v2
.line 1795
invoke-virtual {v0, v4, p4, p5}, Ljava/nio/ByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer;
iget-object p4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
.line 1796
invoke-virtual {p4, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
iput p3, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
:cond_2
iget-object p4, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
.line 1799
invoke-virtual {p4}, Ljava/nio/ByteBuffer;->remaining()I
move-result p4
if-lez p4, :cond_4
iget-object p5, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->avSyncHeader:Ljava/nio/ByteBuffer;
const/4 v0, 0x1
.line 1802
invoke-virtual {p1, p5, p4, v0}, Landroid/media/AudioTrack;->write(Ljava/nio/ByteBuffer;II)I
move-result p5
if-gez p5, :cond_3
iput v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
return p5
:cond_3
if-ge p5, p4, :cond_4
return v1
.line 1811
:cond_4
invoke-static {p1, p2, p3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeNonBlockingV21(Landroid/media/AudioTrack;Ljava/nio/ByteBuffer;I)I
move-result p1
if-gez p1, :cond_5
iput v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
return p1
:cond_5
iget p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
sub-int/2addr p2, p1
iput p2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->bytesUntilNextAvSync:I
return p1
.end method
# virtual methods
.method public configure(Landroidx/media3/common/Format;I[I)V
.locals 23
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;
}
.end annotation
move-object/from16 v0, p0
move-object/from16 v2, p1
const-string v1, "audio/raw"
.line 655
iget-object v3, v2, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v1
const/4 v3, 0x0
const/4 v4, -0x1
const/4 v5, 0x1
if-eqz v1, :cond_4
.line 656
iget v1, v2, Landroidx/media3/common/Format;->pcmEncoding:I
invoke-static {v1}, Landroidx/media3/common/util/Util;->isEncodingLinearPcm(I)Z
move-result v1
invoke-static {v1}, Landroidx/media3/common/util/Assertions;->checkArgument(Z)V
.line 658
iget v1, v2, Landroidx/media3/common/Format;->pcmEncoding:I
iget v6, v2, Landroidx/media3/common/Format;->channelCount:I
invoke-static {v1, v6}, Landroidx/media3/common/util/Util;->getPcmFrameSize(II)I
move-result v1
.line 660
new-instance v6, Lcom/google/common/collect/ImmutableList$Builder;
invoke-direct {v6}, Lcom/google/common/collect/ImmutableList$Builder;-><init>()V
.line 661
iget v7, v2, Landroidx/media3/common/Format;->pcmEncoding:I
invoke-direct {v0, v7}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->shouldUseFloatOutput(I)Z
move-result v7
if-eqz v7, :cond_0
iget-object v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->toFloatPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.line 662
invoke-virtual {v6, v7}, Lcom/google/common/collect/ImmutableList$Builder;->addAll(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableList$Builder;
goto :goto_0
:cond_0
iget-object v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->toIntPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.line 664
invoke-virtual {v6, v7}, Lcom/google/common/collect/ImmutableList$Builder;->addAll(Ljava/lang/Iterable;)Lcom/google/common/collect/ImmutableList$Builder;
iget-object v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessorChain:Landroidx/media3/common/audio/AudioProcessorChain;
.line 665
invoke-interface {v7}, Landroidx/media3/common/audio/AudioProcessorChain;->getAudioProcessors()[Landroidx/media3/common/audio/AudioProcessor;
move-result-object v7
invoke-virtual {v6, v7}, Lcom/google/common/collect/ImmutableList$Builder;->add([Ljava/lang/Object;)Lcom/google/common/collect/ImmutableList$Builder;
.line 667
:goto_0
new-instance v7, Landroidx/media3/common/audio/AudioProcessingPipeline;
invoke-virtual {v6}, Lcom/google/common/collect/ImmutableList$Builder;->build()Lcom/google/common/collect/ImmutableList;
move-result-object v6
invoke-direct {v7, v6}, Landroidx/media3/common/audio/AudioProcessingPipeline;-><init>(Lcom/google/common/collect/ImmutableList;)V
iget-object v6, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
.line 671
invoke-virtual {v7, v6}, Landroidx/media3/common/audio/AudioProcessingPipeline;->equals(Ljava/lang/Object;)Z
move-result v6
if-eqz v6, :cond_1
iget-object v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
:cond_1
iget-object v6, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->trimmingAudioProcessor:Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;
.line 675
iget v8, v2, Landroidx/media3/common/Format;->encoderDelay:I
iget v9, v2, Landroidx/media3/common/Format;->encoderPadding:I
invoke-virtual {v6, v8, v9}, Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;->setTrimFrameCount(II)V
.line 678
sget v6, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v8, 0x15
if-ge v6, v8, :cond_2
iget v6, v2, Landroidx/media3/common/Format;->channelCount:I
const/16 v8, 0x8
if-ne v6, v8, :cond_2
if-nez p3, :cond_2
const/4 v6, 0x6
new-array v8, v6, [I
move v9, v3
:goto_1
if-ge v9, v6, :cond_3
.line 683
aput v9, v8, v9
add-int/lit8 v9, v9, 0x1
goto :goto_1
:cond_2
move-object/from16 v8, p3
:cond_3
iget-object v6, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->channelMappingAudioProcessor:Landroidx/media3/exoplayer/audio/ChannelMappingAudioProcessor;
.line 686
invoke-virtual {v6, v8}, Landroidx/media3/exoplayer/audio/ChannelMappingAudioProcessor;->setChannelMap([I)V
.line 688
new-instance v6, Landroidx/media3/common/audio/AudioProcessor$AudioFormat;
iget v8, v2, Landroidx/media3/common/Format;->sampleRate:I
iget v9, v2, Landroidx/media3/common/Format;->channelCount:I
iget v10, v2, Landroidx/media3/common/Format;->pcmEncoding:I
invoke-direct {v6, v8, v9, v10}, Landroidx/media3/common/audio/AudioProcessor$AudioFormat;-><init>(III)V
.line 692
:try_start_0
invoke-virtual {v7, v6}, Landroidx/media3/common/audio/AudioProcessingPipeline;->configure(Landroidx/media3/common/audio/AudioProcessor$AudioFormat;)Landroidx/media3/common/audio/AudioProcessor$AudioFormat;
move-result-object v6
:try_end_0
.catch Landroidx/media3/common/audio/AudioProcessor$UnhandledAudioFormatException; {:try_start_0 .. :try_end_0} :catch_0
.line 698
iget v8, v6, Landroidx/media3/common/audio/AudioProcessor$AudioFormat;->encoding:I
.line 699
iget v9, v6, Landroidx/media3/common/audio/AudioProcessor$AudioFormat;->sampleRate:I
.line 700
iget v10, v6, Landroidx/media3/common/audio/AudioProcessor$AudioFormat;->channelCount:I
invoke-static {v10}, Landroidx/media3/common/util/Util;->getAudioTrackChannelConfig(I)I
move-result v10
.line 701
iget v6, v6, Landroidx/media3/common/audio/AudioProcessor$AudioFormat;->channelCount:I
invoke-static {v8, v6}, Landroidx/media3/common/util/Util;->getPcmFrameSize(II)I
move-result v6
iget-boolean v11, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preferAudioTrackPlaybackParams:Z
move v14, v6
move-object/from16 v16, v7
move v12, v8
move v15, v9
move v13, v10
move/from16 v17, v11
move v6, v1
move v1, v3
goto/16 :goto_3
:catch_0
move-exception v0
move-object v1, v0
.line 694
new-instance v0, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;-><init>(Ljava/lang/Throwable;Landroidx/media3/common/Format;)V
throw v0
.line 705
:cond_4
new-instance v1, Landroidx/media3/common/audio/AudioProcessingPipeline;
invoke-static {}, Lcom/google/common/collect/ImmutableList;->of()Lcom/google/common/collect/ImmutableList;
move-result-object v6
invoke-direct {v1, v6}, Landroidx/media3/common/audio/AudioProcessingPipeline;-><init>(Lcom/google/common/collect/ImmutableList;)V
.line 707
iget v6, v2, Landroidx/media3/common/Format;->sampleRate:I
iget-object v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
.line 709
invoke-direct {v0, v2, v7}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->useOffloadedPlayback(Landroidx/media3/common/Format;Landroidx/media3/common/AudioAttributes;)Z
move-result v7
if-eqz v7, :cond_5
.line 711
iget-object v7, v2, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
.line 712
invoke-static {v7}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v7
check-cast v7, Ljava/lang/String;
iget-object v8, v2, Landroidx/media3/common/Format;->codecs:Ljava/lang/String;
invoke-static {v7, v8}, Landroidx/media3/common/MimeTypes;->getEncoding(Ljava/lang/String;Ljava/lang/String;)I
move-result v7
.line 713
iget v8, v2, Landroidx/media3/common/Format;->channelCount:I
invoke-static {v8}, Landroidx/media3/common/util/Util;->getAudioTrackChannelConfig(I)I
move-result v8
move-object/from16 v16, v1
move v14, v4
move v1, v5
move/from16 v17, v1
move v15, v6
move v12, v7
move v13, v8
:goto_2
move v6, v14
goto :goto_3
.line 720
:cond_5
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getAudioCapabilities()Landroidx/media3/exoplayer/audio/AudioCapabilities;
move-result-object v7
invoke-virtual {v7, v2}, Landroidx/media3/exoplayer/audio/AudioCapabilities;->getEncodingAndChannelConfigForPassthrough(Landroidx/media3/common/Format;)Landroid/util/Pair;
move-result-object v7
if-eqz v7, :cond_c
.line 725
iget-object v8, v7, Landroid/util/Pair;->first:Ljava/lang/Object;
check-cast v8, Ljava/lang/Integer;
invoke-virtual {v8}, Ljava/lang/Integer;->intValue()I
move-result v8
.line 726
iget-object v7, v7, Landroid/util/Pair;->second:Ljava/lang/Object;
check-cast v7, Ljava/lang/Integer;
invoke-virtual {v7}, Ljava/lang/Integer;->intValue()I
move-result v7
iget-boolean v9, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preferAudioTrackPlaybackParams:Z
const/4 v10, 0x2
move-object/from16 v16, v1
move v14, v4
move v15, v6
move v13, v7
move v12, v8
move/from16 v17, v9
move v1, v10
goto :goto_2
:goto_3
const-string v7, ") for: "
if-eqz v12, :cond_b
if-eqz v13, :cond_a
if-eqz p2, :cond_6
move/from16 v9, p2
move/from16 v20, v12
move/from16 v21, v13
move v5, v14
move/from16 v22, v15
goto :goto_6
:cond_6
iget-object v7, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackBufferSizeProvider:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioTrackBufferSizeProvider;
.line 746
invoke-static {v15, v13, v12}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getAudioTrackMinBufferSize(III)I
move-result v8
if-eq v14, v4, :cond_7
move v11, v14
goto :goto_4
:cond_7
move v11, v5
.line 749
:goto_4
iget v4, v2, Landroidx/media3/common/Format;->bitrate:I
if-eqz v17, :cond_8
const-wide/high16 v9, 0x4020000000000000L # 8.0
goto :goto_5
:cond_8
const-wide/high16 v9, 0x3ff0000000000000L # 1.0
:goto_5
move-wide/from16 v18, v9
move v9, v12
move v10, v1
move/from16 v20, v12
move v12, v15
move/from16 v21, v13
move v13, v4
move v5, v14
move/from16 v22, v15
move-wide/from16 v14, v18
.line 745
invoke-interface/range {v7 .. v15}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioTrackBufferSizeProvider;->getBufferSizeInBytes(IIIIIID)I
move-result v4
move v9, v4
:goto_6
iput-boolean v3, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadDisabledUntilNextConfiguration:Z
.line 755
new-instance v12, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
move v10, v1
move-object v1, v12
move-object/from16 v2, p1
move v3, v6
move v4, v10
move/from16 v6, v22
move/from16 v7, v21
move/from16 v8, v20
move-object/from16 v10, v16
move/from16 v11, v17
invoke-direct/range {v1 .. v11}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;-><init>(Landroidx/media3/common/Format;IIIIIIILandroidx/media3/common/audio/AudioProcessingPipeline;Z)V
.line 767
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v1
if-eqz v1, :cond_9
iput-object v12, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
goto :goto_7
:cond_9
iput-object v12, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
:goto_7
return-void
:cond_a
move v10, v1
.line 738
new-instance v0, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v3, "Invalid output channel config (mode="
invoke-direct {v1, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;)V
throw v0
:cond_b
move v10, v1
.line 734
new-instance v0, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v3, "Invalid output encoding (mode="
invoke-direct {v1, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v10}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v7}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;)V
throw v0
.line 722
:cond_c
new-instance v0, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;
new-instance v1, Ljava/lang/StringBuilder;
const-string v3, "Unable to configure passthrough for: "
invoke-direct {v1, v3}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
move-result-object v1
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-direct {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioSink$ConfigurationException;-><init>(Ljava/lang/String;Landroidx/media3/common/Format;)V
throw v0
.end method
.method public disableTunneling()V
.locals 1
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
if-eqz v0, :cond_0
const/4 v0, 0x0
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
.line 1349
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
:cond_0
return-void
.end method
.method public enableTunnelingV21()V
.locals 3
.line 1337
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x15
const/4 v2, 0x1
if-lt v0, v1, :cond_0
move v0, v2
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->externalAudioSessionIdProvided:Z
.line 1338
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
if-nez v0, :cond_1
iput-boolean v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
.line 1341
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
:cond_1
return-void
.end method
.method public experimentalFlushWithoutAudioTrackRelease()V
.locals 8
.line 1414
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x19
if-ge v0, v1, :cond_0
.line 1415
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
return-void
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 1419
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->clear()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->initializationExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 1420
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->clear()V
.line 1422
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-nez v0, :cond_1
return-void
.line 1426
:cond_1
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->resetSinkStateForFlush()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1427
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->isPlaying()Z
move-result v0
if-eqz v0, :cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1428
invoke-virtual {v0}, Landroid/media/AudioTrack;->pause()V
:cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1430
invoke-virtual {v0}, Landroid/media/AudioTrack;->flush()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1432
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->reset()V
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 1433
iget v0, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
const/4 v3, 0x2
const/4 v7, 0x1
if-ne v0, v3, :cond_3
move v3, v7
goto :goto_0
:cond_3
const/4 v0, 0x0
move v3, v0
:goto_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget v4, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputEncoding:I
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget v5, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputPcmFrameSize:I
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget v6, v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->bufferSize:I
invoke-virtual/range {v1 .. v6}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->setAudioTrack(Landroid/media/AudioTrack;ZIII)V
iput-boolean v7, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsInit:Z
return-void
.end method
.method public flush()V
.locals 3
.line 1381
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_4
.line 1382
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->resetSinkStateForFlush()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1384
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->isPlaying()Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1385
invoke-virtual {v0}, Landroid/media/AudioTrack;->pause()V
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1387
invoke-static {v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isOffloadedPlayback(Landroid/media/AudioTrack;)Z
move-result v0
if-eqz v0, :cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadStreamEventCallbackV29:Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
.line 1388
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v0
check-cast v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;
iget-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
invoke-virtual {v0, v1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$StreamEventCallbackV29;->unregister(Landroid/media/AudioTrack;)V
.line 1390
:cond_1
sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I
const/16 v1, 0x15
if-ge v0, v1, :cond_2
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->externalAudioSessionIdProvided:Z
if-nez v0, :cond_2
const/4 v0, 0x0
iput v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioSessionId:I
:cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
const/4 v1, 0x0
if-eqz v0, :cond_3
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iput-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
:cond_3
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1402
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->reset()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releasingConditionVariable:Landroidx/media3/common/util/ConditionVariable;
.line 1403
invoke-static {v0, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->releaseAudioTrackAsync(Landroid/media/AudioTrack;Landroidx/media3/common/util/ConditionVariable;)V
iput-object v1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
:cond_4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->writeExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 1406
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->clear()V
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->initializationExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 1407
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->clear()V
return-void
.end method
.method public getAudioAttributes()Landroidx/media3/common/AudioAttributes;
.locals 0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
return-object p0
.end method
.method public getCurrentPositionUs(Z)J
.locals 4
.line 635
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_1
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsInit:Z
if-eqz v0, :cond_0
goto :goto_0
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 638
invoke-virtual {v0, p1}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->getCurrentPositionUs(Z)J
move-result-wide v0
iget-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 639
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v2
invoke-virtual {p1, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->framesToDurationUs(J)J
move-result-wide v2
invoke-static {v0, v1, v2, v3}, Ljava/lang/Math;->min(JJ)J
move-result-wide v0
.line 640
invoke-direct {p0, v0, v1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->applyMediaPositionParameters(J)J
move-result-wide v0
invoke-direct {p0, v0, v1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->applySkipping(J)J
move-result-wide p0
return-wide p0
:cond_1
:goto_0
const-wide/high16 p0, -0x8000000000000000L
return-wide p0
.end method
.method public getFormatSupport(Landroidx/media3/common/Format;)I
.locals 3
const-string v0, "audio/raw"
.line 611
iget-object v1, p1, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String;
invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
const/4 v1, 0x0
const/4 v2, 0x2
if-eqz v0, :cond_3
.line 612
iget v0, p1, Landroidx/media3/common/Format;->pcmEncoding:I
invoke-static {v0}, Landroidx/media3/common/util/Util;->isEncodingLinearPcm(I)Z
move-result v0
if-nez v0, :cond_0
.line 613
new-instance p0, Ljava/lang/StringBuilder;
const-string v0, "Invalid PCM encoding: "
invoke-direct {p0, v0}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
iget p1, p1, Landroidx/media3/common/Format;->pcmEncoding:I
invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
move-result-object p0
invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p0
const-string p1, "DefaultAudioSink"
invoke-static {p1, p0}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
return v1
.line 616
:cond_0
iget v0, p1, Landroidx/media3/common/Format;->pcmEncoding:I
if-eq v0, v2, :cond_2
iget-boolean p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->enableFloatOutput:Z
if-eqz p0, :cond_1
iget p0, p1, Landroidx/media3/common/Format;->pcmEncoding:I
const/4 p1, 0x4
if-ne p0, p1, :cond_1
goto :goto_0
:cond_1
const/4 p0, 0x1
return p0
:cond_2
:goto_0
return v2
:cond_3
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadDisabledUntilNextConfiguration:Z
if-nez v0, :cond_4
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
.line 624
invoke-direct {p0, p1, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->useOffloadedPlayback(Landroidx/media3/common/Format;Landroidx/media3/common/AudioAttributes;)Z
move-result v0
if-eqz v0, :cond_4
return v2
.line 627
:cond_4
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getAudioCapabilities()Landroidx/media3/exoplayer/audio/AudioCapabilities;
move-result-object p0
invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/audio/AudioCapabilities;->isPassthroughPlaybackSupported(Landroidx/media3/common/Format;)Z
move-result p0
if-eqz p0, :cond_5
return v2
:cond_5
return v1
.end method
.method public getPlaybackParameters()Landroidx/media3/common/PlaybackParameters;
.locals 0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
return-object p0
.end method
.method public getSkipSilenceEnabled()Z
.locals 0
iget-boolean p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->skipSilenceEnabled:Z
return p0
.end method
.method public handleBuffer(Ljava/nio/ByteBuffer;JI)Z
.locals 17
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;,
Landroidx/media3/exoplayer/audio/AudioSink$WriteException;
}
.end annotation
move-object/from16 v1, p0
move-object/from16 v0, p1
move-wide/from16 v2, p2
move/from16 v4, p4
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
const/4 v6, 0x1
const/4 v7, 0x0
if-eqz v5, :cond_1
if-ne v0, v5, :cond_0
goto :goto_0
:cond_0
move v5, v7
goto :goto_1
:cond_1
:goto_0
move v5, v6
.line 840
:goto_1
invoke-static {v5}, Landroidx/media3/common/util/Assertions;->checkArgument(Z)V
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
const/4 v8, 0x0
if-eqz v5, :cond_7
.line 843
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->drainToEndOfStream()Z
move-result v5
if-nez v5, :cond_2
return v7
:cond_2
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object v9, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 846
invoke-virtual {v5, v9}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->canReuseAudioTrack(Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;)Z
move-result v5
if-nez v5, :cond_4
.line 847
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playPendingData()V
.line 848
invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->hasPendingData()Z
move-result v5
if-eqz v5, :cond_3
return v7
.line 852
:cond_3
invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
goto :goto_2
:cond_4
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iput-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iput-object v8, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->pendingConfiguration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 857
invoke-static {v5}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isOffloadedPlayback(Landroid/media/AudioTrack;)Z
move-result v5
if-eqz v5, :cond_6
iget v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadMode:I
const/4 v9, 0x3
if-eq v5, v9, :cond_6
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 861
invoke-virtual {v5}, Landroid/media/AudioTrack;->getPlayState()I
move-result v5
if-ne v5, v9, :cond_5
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 862
invoke-virtual {v5}, Landroid/media/AudioTrack;->setOffloadEndOfStream()V
:cond_5
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
iget-object v9, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 864
iget-object v9, v9, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFormat:Landroidx/media3/common/Format;
iget v9, v9, Landroidx/media3/common/Format;->encoderDelay:I
iget-object v10, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
iget-object v10, v10, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFormat:Landroidx/media3/common/Format;
iget v10, v10, Landroidx/media3/common/Format;->encoderPadding:I
invoke-virtual {v5, v9, v10}, Landroid/media/AudioTrack;->setOffloadDelayPadding(II)V
iput-boolean v6, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isWaitingForOffloadEndOfStreamHandled:Z
.line 870
:cond_6
:goto_2
invoke-direct {v1, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->applyAudioProcessorPlaybackParametersAndSkipSilence(J)V
.line 873
:cond_7
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v5
if-nez v5, :cond_9
.line 875
:try_start_0
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->initializeAudioTrack()Z
move-result v5
:try_end_0
.catch Landroidx/media3/exoplayer/audio/AudioSink$InitializationException; {:try_start_0 .. :try_end_0} :catch_0
if-nez v5, :cond_9
return v7
:catch_0
move-exception v0
move-object v2, v0
.line 880
iget-boolean v0, v2, Landroidx/media3/exoplayer/audio/AudioSink$InitializationException;->isRecoverable:Z
if-nez v0, :cond_8
iget-object v0, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->initializationExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 883
invoke-virtual {v0, v2}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->throwExceptionIfDeadlineIsReached(Ljava/lang/Exception;)V
return v7
.line 881
:cond_8
throw v2
:cond_9
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->initializationExceptionPendingExceptionHolder:Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;
.line 887
invoke-virtual {v5}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$PendingExceptionHolder;->clear()V
iget-boolean v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsInit:Z
const-wide/16 v9, 0x0
if-eqz v5, :cond_b
.line 890
invoke-static {v9, v10, v2, v3}, Ljava/lang/Math;->max(JJ)J
move-result-wide v11
iput-wide v11, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUs:J
iput-boolean v7, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsSync:Z
iput-boolean v7, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsInit:Z
.line 894
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->useAudioTrackPlaybackParams()Z
move-result v5
if-eqz v5, :cond_a
.line 895
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setAudioTrackPlaybackParametersV23()V
.line 897
:cond_a
invoke-direct {v1, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->applyAudioProcessorPlaybackParametersAndSkipSilence(J)V
iget-boolean v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playing:Z
if-eqz v5, :cond_b
.line 900
invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->play()V
:cond_b
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 904
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v11
invoke-virtual {v5, v11, v12}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->mayHandleBuffer(J)Z
move-result v5
if-nez v5, :cond_c
return v7
:cond_c
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
if-nez v5, :cond_17
.line 910
invoke-virtual/range {p1 .. p1}, Ljava/nio/ByteBuffer;->order()Ljava/nio/ByteOrder;
move-result-object v5
sget-object v11, Ljava/nio/ByteOrder;->LITTLE_ENDIAN:Ljava/nio/ByteOrder;
if-ne v5, v11, :cond_d
move v5, v6
goto :goto_3
:cond_d
move v5, v7
:goto_3
invoke-static {v5}, Landroidx/media3/common/util/Assertions;->checkArgument(Z)V
.line 911
invoke-virtual/range {p1 .. p1}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v5
if-nez v5, :cond_e
return v6
:cond_e
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 916
iget v5, v5, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-eqz v5, :cond_f
iget v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->framesPerEncodedSample:I
if-nez v5, :cond_f
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 918
iget v5, v5, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputEncoding:I
invoke-static {v5, v0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getFramesPerEncodedSample(ILjava/nio/ByteBuffer;)I
move-result v5
iput v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->framesPerEncodedSample:I
if-nez v5, :cond_f
return v6
:cond_f
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->afterDrainParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
if-eqz v5, :cond_11
.line 929
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->drainToEndOfStream()Z
move-result v5
if-nez v5, :cond_10
return v7
.line 933
:cond_10
invoke-direct {v1, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->applyAudioProcessorPlaybackParametersAndSkipSilence(J)V
iput-object v8, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->afterDrainParameters:Landroidx/media3/exoplayer/audio/DefaultAudioSink$MediaPositionParameters;
:cond_11
iget-wide v11, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUs:J
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 941
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getSubmittedFrames()J
move-result-wide v13
iget-object v15, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->trimmingAudioProcessor:Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;
invoke-virtual {v15}, Landroidx/media3/exoplayer/audio/TrimmingAudioProcessor;->getTrimmedFrameCount()J
move-result-wide v15
sub-long/2addr v13, v15
.line 940
invoke-virtual {v5, v13, v14}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->inputFramesToDurationUs(J)J
move-result-wide v13
add-long/2addr v11, v13
iget-boolean v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsSync:Z
if-nez v5, :cond_13
sub-long v13, v11, v2
.line 943
invoke-static {v13, v14}, Ljava/lang/Math;->abs(J)J
move-result-wide v13
const-wide/32 v15, 0x30d40
cmp-long v5, v13, v15
if-lez v5, :cond_13
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz v5, :cond_12
.line 945
new-instance v13, Landroidx/media3/exoplayer/audio/AudioSink$UnexpectedDiscontinuityException;
invoke-direct {v13, v2, v3, v11, v12}, Landroidx/media3/exoplayer/audio/AudioSink$UnexpectedDiscontinuityException;-><init>(JJ)V
invoke-interface {v5, v13}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onAudioSinkError(Ljava/lang/Exception;)V
:cond_12
iput-boolean v6, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsSync:Z
:cond_13
iget-boolean v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsSync:Z
if-eqz v5, :cond_15
.line 952
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->drainToEndOfStream()Z
move-result v5
if-nez v5, :cond_14
return v7
:cond_14
sub-long v11, v2, v11
iget-wide v13, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUs:J
add-long/2addr v13, v11
iput-wide v13, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUs:J
iput-boolean v7, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsSync:Z
.line 962
invoke-direct {v1, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->applyAudioProcessorPlaybackParametersAndSkipSilence(J)V
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz v5, :cond_15
cmp-long v9, v11, v9
if-eqz v9, :cond_15
.line 964
invoke-interface {v5}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onPositionDiscontinuity()V
:cond_15
iget-object v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->configuration:Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;
.line 968
iget v5, v5, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Configuration;->outputMode:I
if-nez v5, :cond_16
iget-wide v9, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedPcmBytes:J
.line 969
invoke-virtual/range {p1 .. p1}, Ljava/nio/ByteBuffer;->remaining()I
move-result v5
int-to-long v11, v5
add-long/2addr v9, v11
iput-wide v9, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedPcmBytes:J
goto :goto_4
:cond_16
iget-wide v9, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedEncodedFrames:J
iget v5, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->framesPerEncodedSample:I
int-to-long v11, v5
int-to-long v13, v4
mul-long/2addr v11, v13
add-long/2addr v9, v11
iput-wide v9, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->submittedEncodedFrames:J
:goto_4
iput-object v0, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
iput v4, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBufferAccessUnitCount:I
.line 978
:cond_17
invoke-direct {v1, v2, v3}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->processBuffers(J)V
iget-object v0, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
.line 980
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->hasRemaining()Z
move-result v0
if-nez v0, :cond_18
iput-object v8, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBuffer:Ljava/nio/ByteBuffer;
iput v7, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->inputBufferAccessUnitCount:I
return v6
:cond_18
iget-object v0, v1, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 986
invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v2
invoke-virtual {v0, v2, v3}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->isStalled(J)Z
move-result v0
if-eqz v0, :cond_19
const-string v0, "DefaultAudioSink"
const-string v2, "Resetting stalled audio track"
.line 987
invoke-static {v0, v2}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V
.line 988
invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
return v6
:cond_19
return v7
.end method
.method public handleDiscontinuity()V
.locals 1
const/4 v0, 0x1
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->startMediaTimeUsNeedsSync:Z
return-void
.end method
.method public hasPendingData()Z
.locals 3
.line 1244
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 1245
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getWrittenFrames()J
move-result-wide v1
invoke-virtual {v0, v1, v2}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->hasPendingData(J)Z
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method
.method public isEnded()Z
.locals 1
.line 1239
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_1
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->handledEndOfStream:Z
if-eqz v0, :cond_0
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->hasPendingData()Z
move-result p0
if-nez p0, :cond_0
goto :goto_0
:cond_0
const/4 p0, 0x0
goto :goto_1
:cond_1
:goto_0
const/4 p0, 0x1
:goto_1
return p0
.end method
.method public onAudioCapabilitiesChanged(Landroidx/media3/exoplayer/audio/AudioCapabilities;)V
.locals 2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackLooper:Landroid/os/Looper;
.line 1469
invoke-static {}, Landroid/os/Looper;->myLooper()Landroid/os/Looper;
move-result-object v1
if-ne v0, v1, :cond_0
const/4 v0, 0x1
goto :goto_0
:cond_0
const/4 v0, 0x0
:goto_0
invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V
.line 1470
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getAudioCapabilities()Landroidx/media3/exoplayer/audio/AudioCapabilities;
move-result-object v0
invoke-virtual {p1, v0}, Landroidx/media3/exoplayer/audio/AudioCapabilities;->equals(Ljava/lang/Object;)Z
move-result v0
if-nez v0, :cond_1
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilities:Landroidx/media3/exoplayer/audio/AudioCapabilities;
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
if-eqz p0, :cond_1
.line 1473
invoke-interface {p0}, Landroidx/media3/exoplayer/audio/AudioSink$Listener;->onAudioCapabilitiesChanged()V
:cond_1
return-void
.end method
.method public pause()V
.locals 1
const/4 v0, 0x0
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playing:Z
.line 1374
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->pause()Z
move-result v0
if-eqz v0, :cond_0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1375
invoke-virtual {p0}, Landroid/media/AudioTrack;->pause()V
:cond_0
return-void
.end method
.method public play()V
.locals 1
const/4 v0, 0x1
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playing:Z
.line 824
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrackPositionTracker:Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;
.line 825
invoke-virtual {v0}, Landroidx/media3/exoplayer/audio/AudioTrackPositionTracker;->start()V
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 826
invoke-virtual {p0}, Landroid/media/AudioTrack;->play()V
:cond_0
return-void
.end method
.method public playToEndOfStream()V
.locals 1
.annotation system Ldalvik/annotation/Throws;
value = {
Landroidx/media3/exoplayer/audio/AudioSink$WriteException;
}
.end annotation
iget-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->handledEndOfStream:Z
if-nez v0, :cond_0
.line 1216
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->isAudioTrackInitialized()Z
move-result v0
if-eqz v0, :cond_0
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->drainToEndOfStream()Z
move-result v0
if-eqz v0, :cond_0
.line 1217
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playPendingData()V
const/4 v0, 0x1
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->handledEndOfStream:Z
:cond_0
return-void
.end method
.method public release()V
.locals 0
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioCapabilitiesReceiver:Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;
if-eqz p0, :cond_0
.line 1462
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/AudioCapabilitiesReceiver;->unregister()V
:cond_0
return-void
.end method
.method public reset()V
.locals 2
.line 1445
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->toIntPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.line 1446
invoke-virtual {v0}, Lcom/google/common/collect/ImmutableList;->iterator()Lcom/google/common/collect/UnmodifiableIterator;
move-result-object v0
:goto_0
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_0
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroidx/media3/common/audio/AudioProcessor;
.line 1447
invoke-interface {v1}, Landroidx/media3/common/audio/AudioProcessor;->reset()V
goto :goto_0
:cond_0
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->toFloatPcmAvailableAudioProcessors:Lcom/google/common/collect/ImmutableList;
.line 1449
invoke-virtual {v0}, Lcom/google/common/collect/ImmutableList;->iterator()Lcom/google/common/collect/UnmodifiableIterator;
move-result-object v0
:goto_1
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_1
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Landroidx/media3/common/audio/AudioProcessor;
.line 1450
invoke-interface {v1}, Landroidx/media3/common/audio/AudioProcessor;->reset()V
goto :goto_1
:cond_1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioProcessingPipeline:Landroidx/media3/common/audio/AudioProcessingPipeline;
if-eqz v0, :cond_2
.line 1453
invoke-virtual {v0}, Landroidx/media3/common/audio/AudioProcessingPipeline;->reset()V
:cond_2
const/4 v0, 0x0
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playing:Z
iput-boolean v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->offloadDisabledUntilNextConfiguration:Z
return-void
.end method
.method public setAudioAttributes(Landroidx/media3/common/AudioAttributes;)V
.locals 1
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
.line 1282
invoke-virtual {v0, p1}, Landroidx/media3/common/AudioAttributes;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0
return-void
:cond_0
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioAttributes:Landroidx/media3/common/AudioAttributes;
iget-boolean p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->tunneling:Z
if-eqz p1, :cond_1
return-void
.line 1290
:cond_1
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
return-void
.end method
.method public setAudioSessionId(I)V
.locals 1
iget v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioSessionId:I
if-eq v0, p1, :cond_1
iput p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioSessionId:I
if-eqz p1, :cond_0
const/4 p1, 0x1
goto :goto_0
:cond_0
const/4 p1, 0x0
:goto_0
iput-boolean p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->externalAudioSessionIdProvided:Z
.line 1303
invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->flush()V
:cond_1
return-void
.end method
.method public setAuxEffectInfo(Landroidx/media3/common/AuxEffectInfo;)V
.locals 3
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.line 1309
invoke-virtual {v0, p1}, Landroidx/media3/common/AuxEffectInfo;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_0
return-void
.line 1312
:cond_0
iget v0, p1, Landroidx/media3/common/AuxEffectInfo;->effectId:I
.line 1313
iget v1, p1, Landroidx/media3/common/AuxEffectInfo;->sendLevel:F
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
if-eqz v2, :cond_2
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
.line 1315
iget v2, v2, Landroidx/media3/common/AuxEffectInfo;->effectId:I
if-eq v2, v0, :cond_1
iget-object v2, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1316
invoke-virtual {v2, v0}, Landroid/media/AudioTrack;->attachAuxEffect(I)I
:cond_1
if-eqz v0, :cond_2
iget-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
.line 1319
invoke-virtual {v0, v1}, Landroid/media/AudioTrack;->setAuxEffectSendLevel(F)I
:cond_2
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->auxEffectInfo:Landroidx/media3/common/AuxEffectInfo;
return-void
.end method
.method public setListener(Landroidx/media3/exoplayer/audio/AudioSink$Listener;)V
.locals 0
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->listener:Landroidx/media3/exoplayer/audio/AudioSink$Listener;
return-void
.end method
.method public setPlaybackParameters(Landroidx/media3/common/PlaybackParameters;)V
.locals 5
.line 1250
new-instance v0, Landroidx/media3/common/PlaybackParameters;
iget v1, p1, Landroidx/media3/common/PlaybackParameters;->speed:F
const v2, 0x3dcccccd # 0.1f
const/high16 v3, 0x41000000 # 8.0f
.line 1252
invoke-static {v1, v2, v3}, Landroidx/media3/common/util/Util;->constrainValue(FFF)F
move-result v1
iget v4, p1, Landroidx/media3/common/PlaybackParameters;->pitch:F
.line 1253
invoke-static {v4, v2, v3}, Landroidx/media3/common/util/Util;->constrainValue(FFF)F
move-result v2
invoke-direct {v0, v1, v2}, Landroidx/media3/common/PlaybackParameters;-><init>(FF)V
iput-object v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
.line 1254
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->useAudioTrackPlaybackParams()Z
move-result v0
if-eqz v0, :cond_0
.line 1255
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setAudioTrackPlaybackParametersV23()V
goto :goto_0
.line 1257
:cond_0
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setAudioProcessorPlaybackParameters(Landroidx/media3/common/PlaybackParameters;)V
:goto_0
return-void
.end method
.method public setPlayerId(Landroidx/media3/exoplayer/analytics/PlayerId;)V
.locals 0
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playerId:Landroidx/media3/exoplayer/analytics/PlayerId;
return-void
.end method
.method public setPreferredDevice(Landroid/media/AudioDeviceInfo;)V
.locals 1
if-nez p1, :cond_0
const/4 p1, 0x0
goto :goto_0
.line 1329
:cond_0
new-instance v0, Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;
invoke-direct {v0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;-><init>(Landroid/media/AudioDeviceInfo;)V
move-object p1, v0
:goto_0
iput-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->preferredDevice:Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;
iget-object p0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->audioTrack:Landroid/media/AudioTrack;
if-eqz p0, :cond_1
.line 1331
invoke-static {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink$Api23;->setPreferredDeviceOnAudioTrack(Landroid/media/AudioTrack;Landroidx/media3/exoplayer/audio/DefaultAudioSink$AudioDeviceInfoApi23;)V
:cond_1
return-void
.end method
.method public setSkipSilenceEnabled(Z)V
.locals 0
iput-boolean p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->skipSilenceEnabled:Z
.line 1272
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->useAudioTrackPlaybackParams()Z
move-result p1
if-eqz p1, :cond_0
sget-object p1, Landroidx/media3/common/PlaybackParameters;->DEFAULT:Landroidx/media3/common/PlaybackParameters;
goto :goto_0
:cond_0
iget-object p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->playbackParameters:Landroidx/media3/common/PlaybackParameters;
.line 1271
:goto_0
invoke-direct {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setAudioProcessorPlaybackParameters(Landroidx/media3/common/PlaybackParameters;)V
return-void
.end method
.method public setVolume(F)V
.locals 1
iget v0, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->volume:F
cmpl-float v0, v0, p1
if-eqz v0, :cond_0
iput p1, p0, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->volume:F
.line 1357
invoke-direct {p0}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->setVolumeInternal()V
:cond_0
return-void
.end method
.method public supportsFormat(Landroidx/media3/common/Format;)Z
.locals 0
.line 606
invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/audio/DefaultAudioSink;->getFormatSupport(Landroidx/media3/common/Format;)I
move-result p0
if-eqz p0, :cond_0
const/4 p0, 0x1
goto :goto_0
:cond_0
const/4 p0, 0x0
:goto_0
return p0
.end method