mirror of
https://github.com/Pinball3D/Rabbit-R1.git
synced 2025-01-09 13:43:22 +00:00
5167 lines
154 KiB
Smali
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
|