.class public abstract Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer; .super Landroidx/media3/exoplayer/BaseRenderer; .source "MediaCodecRenderer.java" # annotations .annotation system Ldalvik/annotation/MemberClasses; value = { Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$Api31; } .end annotation # static fields .field private static final ADAPTATION_WORKAROUND_BUFFER:[B .field private static final ADAPTATION_WORKAROUND_MODE_ALWAYS:I = 0x2 .field private static final ADAPTATION_WORKAROUND_MODE_NEVER:I = 0x0 .field private static final ADAPTATION_WORKAROUND_MODE_SAME_RESOLUTION:I = 0x1 .field private static final ADAPTATION_WORKAROUND_SLICE_WIDTH_HEIGHT:I = 0x20 .field protected static final CODEC_OPERATING_RATE_UNSET:F = -1.0f .field private static final DRAIN_ACTION_FLUSH:I = 0x1 .field private static final DRAIN_ACTION_FLUSH_AND_UPDATE_DRM_SESSION:I = 0x2 .field private static final DRAIN_ACTION_NONE:I = 0x0 .field private static final DRAIN_ACTION_REINITIALIZE:I = 0x3 .field private static final DRAIN_STATE_NONE:I = 0x0 .field private static final DRAIN_STATE_SIGNAL_END_OF_STREAM:I = 0x1 .field private static final DRAIN_STATE_WAIT_END_OF_STREAM:I = 0x2 .field private static final MAX_CODEC_HOTSWAP_TIME_MS:J = 0x3e8L .field private static final RECONFIGURATION_STATE_NONE:I = 0x0 .field private static final RECONFIGURATION_STATE_QUEUE_PENDING:I = 0x2 .field private static final RECONFIGURATION_STATE_WRITE_PENDING:I = 0x1 .field private static final TAG:Ljava/lang/String; = "MediaCodecRenderer" # instance fields .field private final assumedMinimumCodecOperatingRate:F .field private availableCodecInfos:Ljava/util/ArrayDeque; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/ArrayDeque<", "Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;", ">;" } .end annotation .end field .field private final buffer:Landroidx/media3/decoder/DecoderInputBuffer; .field private final bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .field private bypassDrainAndReinitialize:Z .field private bypassEnabled:Z .field private final bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .field private bypassSampleBufferPending:Z .field private c2Mp3TimestampTracker:Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; .field private codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .field private codecAdaptationWorkaroundMode:I .field private final codecAdapterFactory:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Factory; .field private codecDrainAction:I .field private codecDrainState:I .field private codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .field private codecHasOutputMediaFormat:Z .field private codecHotswapDeadlineMs:J .field private codecInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; .field private codecInputFormat:Landroidx/media3/common/Format; .field private codecNeedsAdaptationWorkaroundBuffer:Z .field private codecNeedsDiscardToSpsWorkaround:Z .field private codecNeedsEosBufferTimestampWorkaround:Z .field private codecNeedsEosFlushWorkaround:Z .field private codecNeedsEosOutputExceptionWorkaround:Z .field private codecNeedsEosPropagation:Z .field private codecNeedsFlushWorkaround:Z .field private codecNeedsMonoChannelCountWorkaround:Z .field private codecNeedsSosFlushWorkaround:Z .field private codecOperatingRate:F .field private codecOutputMediaFormat:Landroid/media/MediaFormat; .field private codecOutputMediaFormatChanged:Z .field private codecReceivedBuffers:Z .field private codecReceivedEos:Z .field private codecReconfigurationState:I .field private codecReconfigured:Z .field private currentPlaybackSpeed:F .field private final decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/ArrayList<", "Ljava/lang/Long;", ">;" } .end annotation .end field .field protected decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; .field private final enableDecoderFallback:Z .field private inputFormat:Landroidx/media3/common/Format; .field private inputIndex:I .field private inputStreamEnded:Z .field private isDecodeOnlyOutputBuffer:Z .field private isLastOutputBuffer:Z .field private largestQueuedPresentationTimeUs:J .field private lastBufferInStreamPresentationTimeUs:J .field private lastProcessedOutputBufferTimeUs:J .field private final mediaCodecSelector:Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector; .field private mediaCrypto:Landroid/media/MediaCrypto; .field private mediaCryptoRequiresSecureDecoder:Z .field private needToNotifyOutputFormatChangeAfterStreamChange:Z .field private final noDataBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .field private final oggOpusAudioPacketizer:Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer; .field private outputBuffer:Ljava/nio/ByteBuffer; .field private final outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .field private outputFormat:Landroidx/media3/common/Format; .field private outputIndex:I .field private outputStreamEnded:Z .field private outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .field private pendingOutputEndOfStream:Z .field private final pendingOutputStreamChanges:Ljava/util/ArrayDeque; .annotation system Ldalvik/annotation/Signature; value = { "Ljava/util/ArrayDeque<", "Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;", ">;" } .end annotation .end field .field private pendingPlaybackException:Landroidx/media3/exoplayer/ExoPlaybackException; .field private preferredDecoderInitializationException:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; .field private renderTimeLimitMs:J .field private shouldSkipAdaptationWorkaroundOutputBuffer:Z .field private sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .field private targetPlaybackSpeed:F .field private waitingForFirstSampleInFormat:Z # direct methods .method static constructor ()V .locals 1 const/16 v0, 0x26 new-array v0, v0, [B fill-array-data v0, :array_0 sput-object v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->ADAPTATION_WORKAROUND_BUFFER:[B return-void :array_0 .array-data 1 0x0t 0x0t 0x1t 0x67t 0x42t -0x40t 0xbt -0x26t 0x25t -0x70t 0x0t 0x0t 0x1t 0x68t -0x32t 0xft 0x13t 0x20t 0x0t 0x0t 0x1t 0x65t -0x78t -0x7ct 0xdt -0x32t 0x71t 0x18t -0x60t 0x0t 0x2ft -0x41t 0x1ct 0x31t -0x3dt 0x27t 0x5dt 0x78t .end array-data .end method .method public constructor (ILandroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Factory;Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;ZF)V .locals 0 .line 394 invoke-direct {p0, p1}, Landroidx/media3/exoplayer/BaseRenderer;->(I)V iput-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdapterFactory:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Factory; .line 396 invoke-static {p3}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object p1 check-cast p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector; iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCodecSelector:Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector; iput-boolean p4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->enableDecoderFallback:Z iput p5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->assumedMinimumCodecOperatingRate:F .line 399 invoke-static {}, Landroidx/media3/decoder/DecoderInputBuffer;->newNoDataInstance()Landroidx/media3/decoder/DecoderInputBuffer; move-result-object p1 iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->noDataBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 400 new-instance p1, Landroidx/media3/decoder/DecoderInputBuffer; const/4 p2, 0x0 invoke-direct {p1, p2}, Landroidx/media3/decoder/DecoderInputBuffer;->(I)V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 401 new-instance p1, Landroidx/media3/decoder/DecoderInputBuffer; const/4 p3, 0x2 invoke-direct {p1, p3}, Landroidx/media3/decoder/DecoderInputBuffer;->(I)V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 402 new-instance p1, Landroidx/media3/exoplayer/mediacodec/BatchBuffer; invoke-direct {p1}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->()V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 403 new-instance p3, Ljava/util/ArrayList; invoke-direct {p3}, Ljava/util/ArrayList;->()V iput-object p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .line 404 new-instance p3, Landroid/media/MediaCodec$BufferInfo; invoke-direct {p3}, Landroid/media/MediaCodec$BufferInfo;->()V iput-object p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; const/high16 p3, 0x3f800000 # 1.0f iput p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->currentPlaybackSpeed:F iput p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->targetPlaybackSpeed:F const-wide p3, -0x7fffffffffffffffL # -4.9E-324 iput-wide p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->renderTimeLimitMs:J .line 408 new-instance p5, Ljava/util/ArrayDeque; invoke-direct {p5}, Ljava/util/ArrayDeque;->()V iput-object p5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 409 sget-object p5, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->UNSET:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; invoke-direct {p0, p5}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setOutputStreamInfo(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;)V .line 415 invoke-virtual {p1, p2}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->ensureSpaceForWrite(I)V .line 416 iget-object p1, p1, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->data:Ljava/nio/ByteBuffer; invoke-static {}, Ljava/nio/ByteOrder;->nativeOrder()Ljava/nio/ByteOrder; move-result-object p5 invoke-virtual {p1, p5}, Ljava/nio/ByteBuffer;->order(Ljava/nio/ByteOrder;)Ljava/nio/ByteBuffer; .line 417 new-instance p1, Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer; invoke-direct {p1}, Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer;->()V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->oggOpusAudioPacketizer:Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer; const/high16 p1, -0x40800000 # -1.0f iput p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOperatingRate:F iput p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode:I iput p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I const/4 p1, -0x1 iput p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I iput p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I iput-wide p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHotswapDeadlineMs:J iput-wide p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J iput-wide p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastBufferInStreamPresentationTimeUs:J iput-wide p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastProcessedOutputBufferTimeUs:J iput p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I iput p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I return-void .end method .method private bypassRead()V .locals 5 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z const/4 v1, 0x1 xor-int/2addr v0, v1 .line 2307 invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V .line 2308 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getFormatHolder()Landroidx/media3/exoplayer/FormatHolder; move-result-object v0 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 2309 invoke-virtual {v2}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V :cond_0 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 2311 invoke-virtual {v2}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; const/4 v3, 0x0 .line 2312 invoke-virtual {p0, v0, v2, v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->readSource(Landroidx/media3/exoplayer/FormatHolder;Landroidx/media3/decoder/DecoderInputBuffer;I)I move-result v2 const/4 v4, -0x5 if-eq v2, v4, :cond_6 const/4 v4, -0x4 if-eq v2, v4, :cond_2 const/4 p0, -0x3 if-ne v2, p0, :cond_1 return-void .line 2345 :cond_1 new-instance p0, Ljava/lang/IllegalStateException; invoke-direct {p0}, Ljava/lang/IllegalStateException;->()V throw p0 :cond_2 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 2320 invoke-virtual {v2}, Landroidx/media3/decoder/DecoderInputBuffer;->isEndOfStream()Z move-result v2 if-eqz v2, :cond_3 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z return-void :cond_3 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->waitingForFirstSampleInFormat:Z if-eqz v2, :cond_4 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 2326 invoke-static {v2}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v2 check-cast v2, Landroidx/media3/common/Format; iput-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; const/4 v4, 0x0 .line 2327 invoke-virtual {p0, v2, v4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onOutputFormatChanged(Landroidx/media3/common/Format;Landroid/media/MediaFormat;)V iput-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->waitingForFirstSampleInFormat:Z :cond_4 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 2331 invoke-virtual {v2}, Landroidx/media3/decoder/DecoderInputBuffer;->flip()V iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; if-eqz v2, :cond_5 .line 2333 iget-object v2, v2, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; if-eqz v2, :cond_5 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; iget-object v2, v2, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; const-string v3, "audio/opus" .line 2335 invoke-virtual {v2, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v2 if-eqz v2, :cond_5 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->oggOpusAudioPacketizer:Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer; iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 2336 iget-object v4, v4, Landroidx/media3/common/Format;->initializationData:Ljava/util/List; invoke-virtual {v2, v3, v4}, Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer;->packetize(Landroidx/media3/decoder/DecoderInputBuffer;Ljava/util/List;)V :cond_5 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 2339 invoke-virtual {v2, v3}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->append(Landroidx/media3/decoder/DecoderInputBuffer;)Z move-result v2 if-nez v2, :cond_0 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBufferPending:Z return-void .line 2315 :cond_6 invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onInputFormatChanged(Landroidx/media3/exoplayer/FormatHolder;)Landroidx/media3/exoplayer/DecoderReuseEvaluation; return-void .end method .method private bypassRender(JJ)Z .locals 18 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation move-object/from16 v15, p0 iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z const/4 v14, 0x1 xor-int/2addr v0, v14 .line 2244 invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2245 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->hasSamples()Z move-result v0 const/4 v13, 0x0 if-eqz v0, :cond_1 const/4 v5, 0x0 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2246 iget-object v6, v0, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->data:Ljava/nio/ByteBuffer; iget v7, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I const/4 v8, 0x0 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2253 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->getSampleCount()I move-result v9 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2254 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->getFirstSampleTimeUs()J move-result-wide v10 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2255 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->isDecodeOnly()Z move-result v12 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2256 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->isEndOfStream()Z move-result v16 iget-object v3, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; move-object/from16 v0, p0 move-wide/from16 v1, p1 move-object/from16 v17, v3 move-wide/from16 v3, p3 move/from16 v13, v16 move-object/from16 v14, v17 .line 2246 invoke-virtual/range {v0 .. v14}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processOutputBuffer(JJLandroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;Ljava/nio/ByteBuffer;IIIJZZLandroidx/media3/common/Format;)Z move-result v0 if-eqz v0, :cond_0 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2259 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->getLastSampleTimeUs()J move-result-wide v0 invoke-virtual {v15, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onProcessedOutputBuffer(J)V iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2260 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->clear()V const/4 v0, 0x0 goto :goto_0 :cond_0 const/4 v0, 0x0 return v0 :cond_1 move v0, v13 :goto_0 iget-boolean v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z if-eqz v1, :cond_2 const/4 v1, 0x1 iput-boolean v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z return v0 :cond_2 const/4 v1, 0x1 iget-boolean v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBufferPending:Z if-eqz v2, :cond_3 iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; iget-object v3, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 2274 invoke-virtual {v2, v3}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->append(Landroidx/media3/decoder/DecoderInputBuffer;)Z move-result v2 invoke-static {v2}, Landroidx/media3/common/util/Assertions;->checkState(Z)V iput-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBufferPending:Z :cond_3 iget-boolean v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassDrainAndReinitialize:Z if-eqz v2, :cond_5 iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2279 invoke-virtual {v2}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->hasSamples()Z move-result v2 if-eqz v2, :cond_4 return v1 .line 2285 :cond_4 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->disableBypass()V iput-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassDrainAndReinitialize:Z .line 2287 invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->maybeInitCodecOrBypass()V iget-boolean v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z if-nez v2, :cond_5 return v0 .line 2295 :cond_5 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassRead()V iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2297 invoke-virtual {v2}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->hasSamples()Z move-result v2 if-eqz v2, :cond_6 iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2298 invoke-virtual {v2}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->flip()V :cond_6 iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 2303 invoke-virtual {v2}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->hasSamples()Z move-result v2 if-nez v2, :cond_8 iget-boolean v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z if-nez v2, :cond_8 iget-boolean v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassDrainAndReinitialize:Z if-eqz v2, :cond_7 goto :goto_1 :cond_7 move v14, v0 goto :goto_2 :cond_8 :goto_1 move v14, v1 :goto_2 return v14 .end method .method private codecAdaptationWorkaroundMode(Ljava/lang/String;)I .locals 1 .line 2405 sget p0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v0, 0x19 if-gt p0, v0, :cond_1 const-string p0, "OMX.Exynos.avc.dec.secure" .line 2406 invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_1 sget-object p0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String; const-string v0, "SM-T585" .line 2407 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String; const-string v0, "SM-A510" .line 2408 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String; const-string v0, "SM-A520" .line 2409 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String; const-string v0, "SM-J700" .line 2410 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-eqz p0, :cond_1 :cond_0 const/4 p0, 0x2 return p0 .line 2412 :cond_1 sget p0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v0, 0x18 if-ge p0, v0, :cond_4 const-string p0, "OMX.Nvidia.h264.decode" .line 2413 invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-nez p0, :cond_2 const-string p0, "OMX.Nvidia.h264.decode.secure" invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_4 :cond_2 const-string p0, "flounder" sget-object p1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; .line 2414 invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-nez p0, :cond_3 const-string p0, "flounder_lte" sget-object p1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; .line 2415 invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-nez p0, :cond_3 const-string p0, "grouper" sget-object p1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; .line 2416 invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-nez p0, :cond_3 const-string p0, "tilapia" sget-object p1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; .line 2417 invoke-virtual {p0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_4 :cond_3 const/4 p0, 0x1 return p0 :cond_4 const/4 p0, 0x0 return p0 .end method .method private static codecNeedsDiscardToSpsWorkaround(Ljava/lang/String;Landroidx/media3/common/Format;)Z .locals 2 .line 2436 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x15 if-ge v0, v1, :cond_0 iget-object p1, p1, Landroidx/media3/common/Format;->initializationData:Ljava/util/List; .line 2437 invoke-interface {p1}, Ljava/util/List;->isEmpty()Z move-result p1 if-eqz p1, :cond_0 const-string p1, "OMX.MTK.VIDEO.DECODER.AVC" .line 2438 invoke-virtual {p1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)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 static codecNeedsEosBufferTimestampWorkaround(Ljava/lang/String;)Z .locals 2 .line 2512 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x15 if-ge v0, v1, :cond_1 const-string v0, "OMX.SEC.mp3.dec" .line 2513 invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_1 const-string p0, "samsung" sget-object v0, Landroidx/media3/common/util/Util;->MANUFACTURER:Ljava/lang/String; .line 2514 invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_1 sget-object p0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; const-string v0, "baffin" .line 2515 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; const-string v0, "grand" .line 2516 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; const-string v0, "fortuna" .line 2517 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; const-string v0, "gprimelte" .line 2518 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; const-string v0, "j2y18lte" .line 2519 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-nez p0, :cond_0 sget-object p0, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; const-string v0, "ms01" .line 2520 invoke-virtual {p0, v0}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result p0 if-eqz p0, :cond_1 :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_1 const/4 p0, 0x0 :goto_0 return p0 .end method .method private static codecNeedsEosFlushWorkaround(Ljava/lang/String;)Z .locals 2 .line 2498 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x17 if-gt v0, v1, :cond_0 const-string v0, "OMX.google.vorbis.decoder" invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_2 :cond_0 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x13 if-gt v0, v1, :cond_3 const-string v0, "hb2000" sget-object v1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; .line 2500 invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_1 const-string v0, "stvm8" sget-object v1, Landroidx/media3/common/util/Util;->DEVICE:Ljava/lang/String; invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_3 :cond_1 const-string v0, "OMX.amlogic.avc.decoder.awesome" .line 2501 invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_2 const-string v0, "OMX.amlogic.avc.decoder.awesome.secure" .line 2502 invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_3 :cond_2 const/4 p0, 0x1 goto :goto_0 :cond_3 const/4 p0, 0x0 :goto_0 return p0 .end method .method private static codecNeedsEosOutputExceptionWorkaround(Ljava/lang/String;)Z .locals 2 .line 2535 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x15 if-ne v0, v1, :cond_0 const-string v0, "OMX.google.aac.decoder" invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)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 static codecNeedsEosPropagationWorkaround(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)Z .locals 3 .line 2471 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; .line 2472 sget v1, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v2, 0x19 if-gt v1, v2, :cond_0 const-string v1, "OMX.rk.video_decoder.avc" invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 :cond_0 sget v1, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v2, 0x11 if-gt v1, v2, :cond_1 const-string v1, "OMX.allwinner.video.decoder.avc" .line 2473 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 :cond_1 sget v1, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v2, 0x1d if-gt v1, v2, :cond_2 const-string v1, "OMX.broadcom.video_decoder.tunnel" .line 2475 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 const-string v1, "OMX.broadcom.video_decoder.tunnel.secure" .line 2476 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 const-string v1, "OMX.bcm.vdec.avc.tunnel" .line 2477 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 const-string v1, "OMX.bcm.vdec.avc.tunnel.secure" .line 2478 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 const-string v1, "OMX.bcm.vdec.hevc.tunnel" .line 2479 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v1 if-nez v1, :cond_3 const-string v1, "OMX.bcm.vdec.hevc.tunnel.secure" .line 2480 invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_3 :cond_2 const-string v0, "Amazon" sget-object v1, Landroidx/media3/common/util/Util;->MANUFACTURER:Ljava/lang/String; .line 2481 invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_4 const-string v0, "AFTS" sget-object v1, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String; invoke-virtual {v0, v1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-eqz v0, :cond_4 iget-boolean p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->secure:Z if-eqz p0, :cond_4 :cond_3 const/4 p0, 0x1 goto :goto_0 :cond_4 const/4 p0, 0x0 :goto_0 return p0 .end method .method private static codecNeedsFlushWorkaround(Ljava/lang/String;)Z .locals 2 .line 2383 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x12 if-lt v0, v1, :cond_2 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I if-ne v0, v1, :cond_0 const-string v0, "OMX.SEC.avc.dec" .line 2385 invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_2 const-string v0, "OMX.SEC.avc.dec.secure" invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_2 :cond_0 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x13 if-ne v0, v1, :cond_1 sget-object v0, Landroidx/media3/common/util/Util;->MODEL:Ljava/lang/String; const-string v1, "SM-G800" .line 2387 invoke-virtual {v0, v1}, Ljava/lang/String;->startsWith(Ljava/lang/String;)Z move-result v0 if-eqz v0, :cond_1 const-string v0, "OMX.Exynos.avc.dec" .line 2388 invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_2 const-string v0, "OMX.Exynos.avc.dec.secure" invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_1 goto :goto_0 :cond_1 const/4 p0, 0x0 goto :goto_1 :cond_2 :goto_0 const/4 p0, 0x1 :goto_1 return p0 .end method .method private static codecNeedsMonoChannelCountWorkaround(Ljava/lang/String;Landroidx/media3/common/Format;)Z .locals 2 .line 2553 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x12 if-gt v0, v1, :cond_0 iget p1, p1, Landroidx/media3/common/Format;->channelCount:I const/4 v0, 0x1 if-ne p1, v0, :cond_0 const-string p1, "OMX.MTK.AUDIO.DECODER.MP3" .line 2555 invoke-virtual {p1, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x0 :goto_0 return v0 .end method .method private static codecNeedsSosFlushWorkaround(Ljava/lang/String;)Z .locals 2 .line 2455 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x1d if-ne v0, v1, :cond_0 const-string v0, "c2.android.aac.decoder" invoke-virtual {v0, p0}, Ljava/lang/String;->equals(Ljava/lang/Object;)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 disableBypass()V .locals 2 const/4 v0, 0x0 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassDrainAndReinitialize:Z iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 748 invoke-virtual {v1}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->clear()V iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 749 invoke-virtual {v1}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBufferPending:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->oggOpusAudioPacketizer:Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer; .line 752 invoke-virtual {p0}, Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer;->reset()V return-void .end method .method private drainAndFlushCodec()Z .locals 2 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z const/4 v1, 0x1 if-eqz v0, :cond_2 iput v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsFlushWorkaround:Z if-nez v0, :cond_1 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosFlushWorkaround:Z if-eqz v0, :cond_0 goto :goto_0 :cond_0 iput v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x3 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I const/4 p0, 0x0 return p0 :cond_2 :goto_1 return v1 .end method .method private drainAndReinitializeCodec()V .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z if-eqz v0, :cond_0 const/4 v0, 0x1 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I const/4 v0, 0x3 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I goto :goto_0 .line 1841 :cond_0 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->reinitializeCodec()V :goto_0 return-void .end method .method private drainAndUpdateCodecDrmSessionV23()Z .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z const/4 v1, 0x1 if-eqz v0, :cond_2 iput v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsFlushWorkaround:Z if-nez v0, :cond_1 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosFlushWorkaround:Z if-eqz v0, :cond_0 goto :goto_0 :cond_0 const/4 v0, 0x2 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I goto :goto_1 :cond_1 :goto_0 const/4 v0, 0x3 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I const/4 p0, 0x0 return p0 .line 1824 :cond_2 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateDrmSessionV23()V :goto_1 return v1 .end method .method private drainOutputBuffer(JJ)Z .locals 19 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation move-object/from16 v15, p0 .line 1851 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->hasOutputBuffer()Z move-result v0 const/16 v16, 0x1 const/4 v14, 0x0 if-nez v0, :cond_b iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosOutputExceptionWorkaround:Z if-eqz v0, :cond_1 iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedEos:Z if-eqz v0, :cond_1 :try_start_0 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1855 invoke-interface {v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->dequeueOutputBufferIndex(Landroid/media/MediaCodec$BufferInfo;)I move-result v0 :try_end_0 .catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 .line 1857 :catch_0 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z if-eqz v0, :cond_0 .line 1860 invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V :cond_0 return v14 :cond_1 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1865 invoke-interface {v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->dequeueOutputBufferIndex(Landroid/media/MediaCodec$BufferInfo;)I move-result v0 :goto_0 if-gez v0, :cond_5 const/4 v1, -0x2 if-ne v0, v1, :cond_2 .line 1870 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processOutputMediaFormatChanged()V return v16 :cond_2 iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosPropagation:Z if-eqz v0, :cond_4 iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z if-nez v0, :cond_3 iget v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I const/4 v1, 0x2 if-ne v0, v1, :cond_4 .line 1876 :cond_3 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V :cond_4 return v14 :cond_5 iget-boolean v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldSkipAdaptationWorkaroundOutputBuffer:Z if-eqz v1, :cond_6 iput-boolean v14, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldSkipAdaptationWorkaroundOutputBuffer:Z iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1884 invoke-interface {v1, v0, v14}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->releaseOutputBuffer(IZ)V return v16 :cond_6 iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1886 iget v1, v1, Landroid/media/MediaCodec$BufferInfo;->size:I if-nez v1, :cond_7 iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; iget v1, v1, Landroid/media/MediaCodec$BufferInfo;->flags:I and-int/lit8 v1, v1, 0x4 if-eqz v1, :cond_7 .line 1889 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V return v14 :cond_7 iput v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1894 invoke-interface {v1, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->getOutputBuffer(I)Ljava/nio/ByteBuffer; move-result-object v0 iput-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBuffer:Ljava/nio/ByteBuffer; if-eqz v0, :cond_8 iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1899 iget v1, v1, Landroid/media/MediaCodec$BufferInfo;->offset:I invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer; iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBuffer:Ljava/nio/ByteBuffer; iget-object v1, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1900 iget v1, v1, Landroid/media/MediaCodec$BufferInfo;->offset:I iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; iget v2, v2, Landroid/media/MediaCodec$BufferInfo;->size:I add-int/2addr v1, v2 invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer; :cond_8 iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosBufferTimestampWorkaround:Z if-eqz v0, :cond_9 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1902 iget-wide v0, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J const-wide/16 v2, 0x0 cmp-long v0, v0, v2 if-nez v0, :cond_9 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; iget v0, v0, Landroid/media/MediaCodec$BufferInfo;->flags:I and-int/lit8 v0, v0, 0x4 if-eqz v0, :cond_9 iget-wide v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long v2, v0, v2 if-eqz v2, :cond_9 iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1906 iput-wide v0, v2, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J :cond_9 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1908 iget-wide v0, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J invoke-direct {v15, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isDecodeOnlyBuffer(J)Z move-result v0 iput-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isDecodeOnlyOutputBuffer:Z iget-wide v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastBufferInStreamPresentationTimeUs:J iget-object v2, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1909 iget-wide v2, v2, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J cmp-long v0, v0, v2 if-nez v0, :cond_a move/from16 v0, v16 goto :goto_1 :cond_a move v0, v14 :goto_1 iput-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isLastOutputBuffer:Z iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1911 iget-wide v0, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J invoke-virtual {v15, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateOutputFormatForTime(J)V :cond_b iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosOutputExceptionWorkaround:Z if-eqz v0, :cond_d iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedEos:Z if-eqz v0, :cond_d :try_start_1 iget-object v5, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget-object v6, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBuffer:Ljava/nio/ByteBuffer; iget v7, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1917 iget v8, v0, Landroid/media/MediaCodec$BufferInfo;->flags:I const/4 v9, 0x1 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; iget-wide v10, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J iget-boolean v12, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isDecodeOnlyOutputBuffer:Z iget-boolean v13, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isLastOutputBuffer:Z iget-object v3, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; :try_end_1 .catch Ljava/lang/IllegalStateException; {:try_start_1 .. :try_end_1} :catch_1 move-object/from16 v0, p0 move-wide/from16 v1, p1 move-object/from16 v17, v3 move-wide/from16 v3, p3 move/from16 v18, v14 move-object/from16 v14, v17 .line 1918 :try_start_2 invoke-virtual/range {v0 .. v14}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processOutputBuffer(JJLandroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;Ljava/nio/ByteBuffer;IIIJZZLandroidx/media3/common/Format;)Z move-result v0 :try_end_2 .catch Ljava/lang/IllegalStateException; {:try_start_2 .. :try_end_2} :catch_2 goto :goto_2 :catch_1 move/from16 v18, v14 .line 1931 :catch_2 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V iget-boolean v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z if-eqz v0, :cond_c .line 1934 invoke-virtual/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V :cond_c return v18 :cond_d move/from16 v18, v14 iget-object v5, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget-object v6, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBuffer:Ljava/nio/ByteBuffer; iget v7, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1939 iget v8, v0, Landroid/media/MediaCodec$BufferInfo;->flags:I const/4 v9, 0x1 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; iget-wide v10, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J iget-boolean v12, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isDecodeOnlyOutputBuffer:Z iget-boolean v13, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isLastOutputBuffer:Z iget-object v14, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; move-object/from16 v0, p0 move-wide/from16 v1, p1 move-wide/from16 v3, p3 .line 1940 invoke-virtual/range {v0 .. v14}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processOutputBuffer(JJLandroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;Ljava/nio/ByteBuffer;IIIJZZLandroidx/media3/common/Format;)Z move-result v0 :goto_2 if-eqz v0, :cond_10 iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1955 iget-wide v0, v0, Landroid/media/MediaCodec$BufferInfo;->presentationTimeUs:J invoke-virtual {v15, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onProcessedOutputBuffer(J)V iget-object v0, v15, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBufferInfo:Landroid/media/MediaCodec$BufferInfo; .line 1956 iget v0, v0, Landroid/media/MediaCodec$BufferInfo;->flags:I and-int/lit8 v0, v0, 0x4 if-eqz v0, :cond_e move/from16 v14, v16 goto :goto_3 :cond_e move/from16 v14, v18 .line 1957 :goto_3 invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetOutputBuffer()V if-nez v14, :cond_f return v16 .line 1961 :cond_f invoke-direct/range {p0 .. p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V :cond_10 return v18 .end method .method private drmNeedsCodecReinitialization(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroidx/media3/common/Format;Landroidx/media3/exoplayer/drm/DrmSession;Landroidx/media3/exoplayer/drm/DrmSession;)Z .locals 4 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation const/4 p0, 0x0 if-ne p3, p4, :cond_0 return p0 :cond_0 const/4 v0, 0x1 if-eqz p4, :cond_a if-nez p3, :cond_1 goto :goto_1 .line 2129 :cond_1 invoke-interface {p4}, Landroidx/media3/exoplayer/drm/DrmSession;->getCryptoConfig()Landroidx/media3/decoder/CryptoConfig; move-result-object v1 if-nez v1, :cond_2 return v0 .line 2141 :cond_2 invoke-interface {p3}, Landroidx/media3/exoplayer/drm/DrmSession;->getCryptoConfig()Landroidx/media3/decoder/CryptoConfig; move-result-object v2 if-eqz v2, :cond_a .line 2142 invoke-virtual {v1}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v3 invoke-virtual {v2}, Ljava/lang/Object;->getClass()Ljava/lang/Class; move-result-object v2 invoke-virtual {v3, v2}, Ljava/lang/Object;->equals(Ljava/lang/Object;)Z move-result v2 if-nez v2, :cond_3 goto :goto_1 .line 2149 :cond_3 instance-of v2, v1, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; if-nez v2, :cond_4 return p0 .line 2157 :cond_4 check-cast v1, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; .line 2161 invoke-interface {p4}, Landroidx/media3/exoplayer/drm/DrmSession;->getSchemeUuid()Ljava/util/UUID; move-result-object v2 invoke-interface {p3}, Landroidx/media3/exoplayer/drm/DrmSession;->getSchemeUuid()Ljava/util/UUID; move-result-object v3 invoke-virtual {v2, v3}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result v2 if-nez v2, :cond_5 return v0 .line 2166 :cond_5 sget v2, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v3, 0x17 if-ge v2, v3, :cond_6 return v0 .line 2171 :cond_6 sget-object v2, Landroidx/media3/common/C;->PLAYREADY_UUID:Ljava/util/UUID; invoke-interface {p3}, Landroidx/media3/exoplayer/drm/DrmSession;->getSchemeUuid()Ljava/util/UUID; move-result-object p3 invoke-virtual {v2, p3}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result p3 if-nez p3, :cond_a sget-object p3, Landroidx/media3/common/C;->PLAYREADY_UUID:Ljava/util/UUID; .line 2172 invoke-interface {p4}, Landroidx/media3/exoplayer/drm/DrmSession;->getSchemeUuid()Ljava/util/UUID; move-result-object v2 invoke-virtual {p3, v2}, Ljava/util/UUID;->equals(Ljava/lang/Object;)Z move-result p3 if-eqz p3, :cond_7 goto :goto_1 .line 2180 :cond_7 iget-boolean p3, v1, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig;->forceAllowInsecureDecoderComponents:Z if-eqz p3, :cond_8 move p2, p0 goto :goto_0 .line 2183 :cond_8 iget-object p2, p2, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; invoke-interface {p4, p2}, Landroidx/media3/exoplayer/drm/DrmSession;->requiresSecureDecoder(Ljava/lang/String;)Z move-result p2 .line 2185 :goto_0 iget-boolean p1, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->secure:Z if-nez p1, :cond_9 if-eqz p2, :cond_9 return v0 :cond_9 return p0 :cond_a :goto_1 return v0 .end method .method private feedInputBuffer()Z .locals 15 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; const/4 v1, 0x0 if-eqz v0, :cond_1d iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I const/4 v2, 0x2 if-eq v0, v2, :cond_1d iget-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z if-eqz v3, :cond_0 goto/16 :goto_5 :cond_0 if-nez v0, :cond_1 .line 1219 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldReinitCodec()Z move-result v0 if-eqz v0, :cond_1 .line 1220 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndReinitializeCodec()V :cond_1 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I if-gez v0, :cond_3 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1224 invoke-interface {v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->dequeueInputBufferIndex()I move-result v0 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I if-gez v0, :cond_2 return v1 :cond_2 iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1228 invoke-interface {v4, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->getInputBuffer(I)Ljava/nio/ByteBuffer; move-result-object v0 iput-object v0, v3, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1229 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V :cond_3 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I const/4 v3, 0x1 if-ne v0, v3, :cond_5 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosPropagation:Z if-eqz v0, :cond_4 goto :goto_0 :cond_4 iput-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedEos:Z iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I const/4 v6, 0x0 const/4 v7, 0x0 const-wide/16 v8, 0x0 const/4 v10, 0x4 .line 1239 invoke-interface/range {v4 .. v10}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->queueInputBuffer(IIIJI)V .line 1240 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetInputBuffer()V :goto_0 iput v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I return v1 :cond_5 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsAdaptationWorkaroundBuffer:Z if-eqz v0, :cond_6 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsAdaptationWorkaroundBuffer:Z iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1248 iget-object v0, v0, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; sget-object v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->ADAPTATION_WORKAROUND_BUFFER:[B invoke-virtual {v0, v1}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer; iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I const/4 v6, 0x0 .line 1249 array-length v7, v1 const-wide/16 v8, 0x0 const/4 v10, 0x0 invoke-interface/range {v4 .. v10}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->queueInputBuffer(IIIJI)V .line 1250 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetInputBuffer()V iput-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z return v3 :cond_6 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I if-ne v0, v3, :cond_8 move v0, v1 :goto_1 iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 1258 iget-object v4, v4, Landroidx/media3/common/Format;->initializationData:Ljava/util/List; invoke-interface {v4}, Ljava/util/List;->size()I move-result v4 if-ge v0, v4, :cond_7 iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 1259 iget-object v4, v4, Landroidx/media3/common/Format;->initializationData:Ljava/util/List; invoke-interface {v4, v0}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v4 check-cast v4, [B iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1260 iget-object v5, v5, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; invoke-virtual {v5, v4}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer; add-int/lit8 v0, v0, 0x1 goto :goto_1 :cond_7 iput v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I :cond_8 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1264 iget-object v0, v0, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; invoke-virtual {v0}, Ljava/nio/ByteBuffer;->position()I move-result v0 .line 1266 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getFormatHolder()Landroidx/media3/exoplayer/FormatHolder; move-result-object v4 :try_start_0 iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1270 invoke-virtual {p0, v4, v5, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->readSource(Landroidx/media3/exoplayer/FormatHolder;Landroidx/media3/decoder/DecoderInputBuffer;I)I move-result v5 :try_end_0 .catch Landroidx/media3/decoder/DecoderInputBuffer$InsufficientCapacityException; {:try_start_0 .. :try_end_0} :catch_2 .line 1280 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->hasReadStreamToEnd()Z move-result v6 if-nez v6, :cond_9 iget-object v6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; invoke-virtual {v6}, Landroidx/media3/decoder/DecoderInputBuffer;->isLastSample()Z move-result v6 if-eqz v6, :cond_a :cond_9 iget-wide v6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J iput-wide v6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastBufferInStreamPresentationTimeUs:J :cond_a const/4 v6, -0x3 if-ne v5, v6, :cond_b return v1 :cond_b const/4 v6, -0x5 if-ne v5, v6, :cond_d iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I if-ne v0, v2, :cond_c iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1292 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iput v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I .line 1295 :cond_c invoke-virtual {p0, v4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onInputFormatChanged(Landroidx/media3/exoplayer/FormatHolder;)Landroidx/media3/exoplayer/DecoderReuseEvaluation; return v3 :cond_d iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1300 invoke-virtual {v4}, Landroidx/media3/decoder/DecoderInputBuffer;->isEndOfStream()Z move-result v4 if-eqz v4, :cond_11 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I if-ne v0, v2, :cond_e iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1305 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iput v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I :cond_e iput-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z if-nez v0, :cond_f .line 1310 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V return v1 :cond_f :try_start_1 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosPropagation:Z if-eqz v0, :cond_10 goto :goto_2 :cond_10 iput-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedEos:Z iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I const/4 v6, 0x0 const/4 v7, 0x0 const-wide/16 v8, 0x0 const/4 v10, 0x4 .line 1318 invoke-interface/range {v4 .. v10}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->queueInputBuffer(IIIJI)V .line 1324 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetInputBuffer()V :try_end_1 .catch Landroid/media/MediaCodec$CryptoException; {:try_start_1 .. :try_end_1} :catch_0 :goto_2 return v1 :catch_0 move-exception v0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1328 invoke-virtual {v0}, Landroid/media/MediaCodec$CryptoException;->getErrorCode()I move-result v2 invoke-static {v2}, Landroidx/media3/common/util/Util;->getErrorCodeForMediaDrmErrorCode(I)I move-result v2 .line 1327 invoke-virtual {p0, v0, v1, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 :cond_11 iget-boolean v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z if-nez v4, :cond_13 iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1339 invoke-virtual {v4}, Landroidx/media3/decoder/DecoderInputBuffer;->isKeyFrame()Z move-result v4 if-nez v4, :cond_13 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1340 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I if-ne v0, v2, :cond_12 iput v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I :cond_12 return v3 :cond_13 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1349 invoke-virtual {v2}, Landroidx/media3/decoder/DecoderInputBuffer;->isEncrypted()Z move-result v2 if-eqz v2, :cond_14 iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1351 iget-object v4, v4, Landroidx/media3/decoder/DecoderInputBuffer;->cryptoInfo:Landroidx/media3/decoder/CryptoInfo; invoke-virtual {v4, v0}, Landroidx/media3/decoder/CryptoInfo;->increaseClearDataFirstSubSampleBy(I)V :cond_14 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsDiscardToSpsWorkaround:Z if-eqz v0, :cond_16 if-nez v2, :cond_16 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1354 iget-object v0, v0, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; invoke-static {v0}, Landroidx/media3/container/NalUnitUtil;->discardToSps(Ljava/nio/ByteBuffer;)V iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1355 iget-object v0, v0, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; invoke-virtual {v0}, Ljava/nio/ByteBuffer;->position()I move-result v0 if-nez v0, :cond_15 return v3 :cond_15 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsDiscardToSpsWorkaround:Z :cond_16 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1361 iget-wide v4, v0, Landroidx/media3/decoder/DecoderInputBuffer;->timeUs:J iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->c2Mp3TimestampTracker:Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; if-eqz v0, :cond_17 iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1365 invoke-virtual {v0, v4, v5}, Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker;->updateAndGetPresentationTimeUs(Landroidx/media3/common/Format;Landroidx/media3/decoder/DecoderInputBuffer;)J move-result-wide v4 iget-wide v6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->c2Mp3TimestampTracker:Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; iget-object v8, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1373 invoke-virtual {v0, v8}, Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker;->getLastOutputBufferPresentationTimeUs(Landroidx/media3/common/Format;)J move-result-wide v8 .line 1371 invoke-static {v6, v7, v8, v9}, Ljava/lang/Math;->max(JJ)J move-result-wide v6 iput-wide v6, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J :cond_17 move-wide v12, v4 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1376 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->isDecodeOnly()Z move-result v0 if-eqz v0, :cond_18 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .line 1377 invoke-static {v12, v13}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long; move-result-object v4 invoke-virtual {v0, v4}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z :cond_18 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->waitingForFirstSampleInFormat:Z if-eqz v0, :cond_1a iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 1380 invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z move-result v0 if-nez v0, :cond_19 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 1381 invoke-virtual {v0}, Ljava/util/ArrayDeque;->peekLast()Ljava/lang/Object; move-result-object v0 check-cast v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; iget-object v0, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->formatQueue:Landroidx/media3/common/util/TimedValueQueue; iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; invoke-virtual {v0, v12, v13, v4}, Landroidx/media3/common/util/TimedValueQueue;->add(JLjava/lang/Object;)V goto :goto_3 :cond_19 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 1383 iget-object v0, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->formatQueue:Landroidx/media3/common/util/TimedValueQueue; iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; invoke-virtual {v0, v12, v13, v4}, Landroidx/media3/common/util/TimedValueQueue;->add(JLjava/lang/Object;)V :goto_3 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->waitingForFirstSampleInFormat:Z :cond_1a iget-wide v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J .line 1387 invoke-static {v4, v5, v12, v13}, Ljava/lang/Math;->max(JJ)J move-result-wide v4 iput-wide v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1388 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->flip()V iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1389 invoke-virtual {v0}, Landroidx/media3/decoder/DecoderInputBuffer;->hasSupplementalData()Z move-result v0 if-eqz v0, :cond_1b iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1390 invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->handleInputBufferSupplementalData(Landroidx/media3/decoder/DecoderInputBuffer;)V :cond_1b iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1393 invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onQueueInputBuffer(Landroidx/media3/decoder/DecoderInputBuffer;)V if-eqz v2, :cond_1c :try_start_2 iget-object v8, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget v9, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I const/4 v10, 0x0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1396 iget-object v11, v0, Landroidx/media3/decoder/DecoderInputBuffer;->cryptoInfo:Landroidx/media3/decoder/CryptoInfo; const/4 v14, 0x0 invoke-interface/range {v8 .. v14}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->queueSecureInputBuffer(IILandroidx/media3/decoder/CryptoInfo;JI)V goto :goto_4 :cond_1c iget-object v8, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; iget v9, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I const/4 v10, 0x0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 1399 iget-object v0, v0, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; .line 1400 invoke-virtual {v0}, Ljava/nio/ByteBuffer;->limit()I move-result v11 const/4 v14, 0x0 .line 1399 invoke-interface/range {v8 .. v14}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->queueInputBuffer(IIIJI)V :try_end_2 .catch Landroid/media/MediaCodec$CryptoException; {:try_start_2 .. :try_end_2} :catch_1 .line 1407 :goto_4 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetInputBuffer()V iput-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z iput v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; .line 1410 iget v0, p0, Landroidx/media3/exoplayer/DecoderCounters;->queuedInputBufferCount:I add-int/2addr v0, v3 iput v0, p0, Landroidx/media3/exoplayer/DecoderCounters;->queuedInputBufferCount:I return v3 :catch_1 move-exception v0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1404 invoke-virtual {v0}, Landroid/media/MediaCodec$CryptoException;->getErrorCode()I move-result v2 invoke-static {v2}, Landroidx/media3/common/util/Util;->getErrorCodeForMediaDrmErrorCode(I)I move-result v2 .line 1403 invoke-virtual {p0, v0, v1, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 :catch_2 move-exception v0 .line 1272 invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onCodecError(Ljava/lang/Exception;)V .line 1275 invoke-direct {p0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->readSourceOmittingSampleData(I)Z .line 1276 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushCodec()V return v3 :cond_1d :goto_5 return v1 .end method .method private flushCodec()V .locals 1 :try_start_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 901 invoke-interface {v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->flush()V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 903 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForFlush()V return-void :catchall_0 move-exception v0 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForFlush()V .line 904 throw v0 .end method .method private getAvailableCodecInfos(Z)Ljava/util/List; .locals 2 .annotation system Ldalvik/annotation/Signature; value = { "(Z)", "Ljava/util/List<", "Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;", ">;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil$DecoderQueryException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCodecSelector:Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector; iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1077 invoke-virtual {p0, v0, v1, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getDecoderInfos(Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;Landroidx/media3/common/Format;Z)Ljava/util/List; move-result-object v0 .line 1078 invoke-interface {v0}, Ljava/util/List;->isEmpty()Z move-result v1 if-eqz v1, :cond_0 if-eqz p1, :cond_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCodecSelector:Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector; iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const/4 v1, 0x0 .line 1084 invoke-virtual {p0, p1, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getDecoderInfos(Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;Landroidx/media3/common/Format;Z)Ljava/util/List; move-result-object v0 .line 1085 invoke-interface {v0}, Ljava/util/List;->isEmpty()Z move-result p1 if-nez p1, :cond_0 .line 1086 new-instance p1, Ljava/lang/StringBuilder; const-string v1, "Drm session requires secure decoder for " invoke-direct {p1, v1}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; iget-object p0, p0, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; invoke-virtual {p1, p0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, ", but no secure decoder available. Trying to proceed with " invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object p0 const-string p1, "." invoke-virtual {p0, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p0 invoke-virtual {p0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p0 const-string p1, "MediaCodecRenderer" invoke-static {p1, p0}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V :cond_0 return-object v0 .end method .method private hasOutputBuffer()Z .locals 0 iget p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I if-ltz p0, :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_0 const/4 p0, 0x0 :goto_0 return p0 .end method .method private initBypass(Landroidx/media3/common/Format;)V .locals 2 .line 1100 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->disableBypass()V .line 1102 iget-object p1, p1, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; const-string v0, "audio/mp4a-latm" .line 1103 invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 const/4 v1, 0x1 if-nez v0, :cond_0 const-string v0, "audio/mpeg" .line 1104 invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result v0 if-nez v0, :cond_0 const-string v0, "audio/opus" .line 1105 invoke-virtual {v0, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p1 if-nez p1, :cond_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 1107 invoke-virtual {p1, v1}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->setMaxSampleCount(I)V goto :goto_0 :cond_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; const/16 v0, 0x20 .line 1109 invoke-virtual {p1, v0}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->setMaxSampleCount(I)V :goto_0 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z return-void .end method .method private initCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroid/media/MediaCrypto;)V .locals 11 .annotation system Ldalvik/annotation/Throws; value = { Ljava/lang/Exception; } .end annotation const-string v0, "createCodec:" .line 1117 iget-object v2, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; .line 1119 sget v1, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v3, 0x17 const/high16 v4, -0x40800000 # -1.0f if-ge v1, v3, :cond_0 move v1, v4 goto :goto_0 :cond_0 iget v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->targetPlaybackSpeed:F iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1121 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getStreamFormats()[Landroidx/media3/common/Format; move-result-object v5 invoke-virtual {p0, v1, v3, v5}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getCodecOperatingRateV23(FLandroidx/media3/common/Format;[Landroidx/media3/common/Format;)F move-result v1 :goto_0 iget v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->assumedMinimumCodecOperatingRate:F cmpg-float v3, v1, v3 if-gtz v3, :cond_1 goto :goto_1 :cond_1 move v4, v1 :goto_1 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1125 invoke-virtual {p0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onReadyToInitializeCodec(Landroidx/media3/common/Format;)V .line 1126 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide v5 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1128 invoke-virtual {p0, p1, v1, p2, v4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getMediaCodecConfiguration(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroidx/media3/common/Format;Landroid/media/MediaCrypto;F)Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Configuration; move-result-object v3 .line 1129 sget p2, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x1f if-lt p2, v1, :cond_2 .line 1130 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getPlayerId()Landroidx/media3/exoplayer/analytics/PlayerId; move-result-object p2 invoke-static {v3, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$Api31;->setLogSessionIdToMediaCodecFormat(Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Configuration;Landroidx/media3/exoplayer/analytics/PlayerId;)V .line 1133 :cond_2 :try_start_0 new-instance p2, Ljava/lang/StringBuilder; invoke-direct {p2, v0}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {p2, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder; move-result-object p2 invoke-virtual {p2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object p2 invoke-static {p2}, Landroidx/media3/common/util/TraceUtil;->beginSection(Ljava/lang/String;)V iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdapterFactory:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Factory; .line 1134 invoke-interface {p2, v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Factory;->createAdapter(Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Configuration;)Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; move-result-object p2 iput-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 1136 invoke-static {}, Landroidx/media3/common/util/TraceUtil;->endSection()V .line 1138 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide v7 iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1140 invoke-virtual {p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->isFormatSupported(Landroidx/media3/common/Format;)Z move-result p2 if-nez p2, :cond_3 iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 1145 invoke-static {p2}, Landroidx/media3/common/Format;->toLogString(Landroidx/media3/common/Format;)Ljava/lang/String; move-result-object p2 filled-new-array {p2, v2}, [Ljava/lang/Object; move-result-object p2 const-string v0, "Format exceeds selected codec\'s capabilities [%s, %s]" .line 1143 invoke-static {v0, p2}, Landroidx/media3/common/util/Util;->formatInvariant(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String; move-result-object p2 const-string v0, "MediaCodecRenderer" .line 1141 invoke-static {v0, p2}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V :cond_3 iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; iput v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOperatingRate:F iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; iput-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 1151 invoke-direct {p0, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode(Ljava/lang/String;)I move-result p2 iput p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode:I iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 1153 invoke-static {v2, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsDiscardToSpsWorkaround(Ljava/lang/String;Landroidx/media3/common/Format;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsDiscardToSpsWorkaround:Z .line 1154 invoke-static {v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsFlushWorkaround(Ljava/lang/String;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsFlushWorkaround:Z .line 1155 invoke-static {v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsSosFlushWorkaround(Ljava/lang/String;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsSosFlushWorkaround:Z .line 1156 invoke-static {v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosFlushWorkaround(Ljava/lang/String;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosFlushWorkaround:Z .line 1157 invoke-static {v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosOutputExceptionWorkaround(Ljava/lang/String;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosOutputExceptionWorkaround:Z .line 1158 invoke-static {v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosBufferTimestampWorkaround(Ljava/lang/String;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosBufferTimestampWorkaround:Z iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 1160 invoke-static {v2, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsMonoChannelCountWorkaround(Ljava/lang/String;Landroidx/media3/common/Format;)Z move-result p2 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsMonoChannelCountWorkaround:Z .line 1162 invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosPropagationWorkaround(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)Z move-result p2 const/4 v0, 0x0 const/4 v1, 0x1 if-nez p2, :cond_5 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getCodecNeedsEosPropagation()Z move-result p2 if-eqz p2, :cond_4 goto :goto_2 :cond_4 move p2, v0 goto :goto_3 :cond_5 :goto_2 move p2, v1 :goto_3 iput-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosPropagation:Z iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1163 invoke-interface {p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->needsReconfiguration()Z move-result p2 if-eqz p2, :cond_7 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigured:Z iput v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I iget p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode:I if-eqz p2, :cond_6 move v0, v1 :cond_6 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsAdaptationWorkaroundBuffer:Z :cond_7 const-string p2, "c2.android.mp3.decoder" .line 1169 iget-object p1, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; invoke-virtual {p2, p1}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p1 if-eqz p1, :cond_8 .line 1170 new-instance p1, Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; invoke-direct {p1}, Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker;->()V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->c2Mp3TimestampTracker:Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; .line 1173 :cond_8 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getState()I move-result p1 const/4 p2, 0x2 if-ne p1, p2, :cond_9 .line 1174 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide p1 const-wide/16 v9, 0x3e8 add-long/2addr p1, v9 iput-wide p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHotswapDeadlineMs:J :cond_9 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; .line 1177 iget p2, p1, Landroidx/media3/exoplayer/DecoderCounters;->decoderInitCount:I add-int/2addr p2, v1 iput p2, p1, Landroidx/media3/exoplayer/DecoderCounters;->decoderInitCount:I sub-long p1, v7, v5 move-object v1, p0 move-wide v4, v7 move-wide v6, p1 .line 1179 invoke-virtual/range {v1 .. v7}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onCodecInitialized(Ljava/lang/String;Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Configuration;JJ)V return-void :catchall_0 move-exception p0 .line 1136 invoke-static {}, Landroidx/media3/common/util/TraceUtil;->endSection()V .line 1137 throw p0 .end method .method private isDecodeOnlyBuffer(J)Z .locals 5 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .line 2202 invoke-virtual {v0}, Ljava/util/ArrayList;->size()I move-result v0 const/4 v1, 0x0 move v2, v1 :goto_0 if-ge v2, v0, :cond_1 iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .line 2204 invoke-virtual {v3, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object; move-result-object v3 check-cast v3, Ljava/lang/Long; invoke-virtual {v3}, Ljava/lang/Long;->longValue()J move-result-wide v3 cmp-long v3, v3, p1 if-nez v3, :cond_0 iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .line 2205 invoke-virtual {p0, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object; const/4 p0, 0x1 return p0 :cond_0 add-int/lit8 v2, v2, 0x1 goto :goto_0 :cond_1 return v1 .end method .method private static isMediaCodecException(Ljava/lang/IllegalStateException;)Z .locals 3 .line 2351 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x15 const/4 v2, 0x1 if-lt v0, v1, :cond_0 invoke-static {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isMediaCodecExceptionV21(Ljava/lang/IllegalStateException;)Z move-result v0 if-eqz v0, :cond_0 return v2 .line 2354 :cond_0 invoke-virtual {p0}, Ljava/lang/IllegalStateException;->getStackTrace()[Ljava/lang/StackTraceElement; move-result-object p0 .line 2355 array-length v0, p0 const/4 v1, 0x0 if-lez v0, :cond_1 aget-object p0, p0, v1 invoke-virtual {p0}, Ljava/lang/StackTraceElement;->getClassName()Ljava/lang/String; move-result-object p0 const-string v0, "android.media.MediaCodec" invoke-virtual {p0, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z move-result p0 if-eqz p0, :cond_1 goto :goto_0 :cond_1 move v2, v1 :goto_0 return v2 .end method .method private static isMediaCodecExceptionV21(Ljava/lang/IllegalStateException;)Z .locals 0 .line 2360 instance-of p0, p0, Landroid/media/MediaCodec$CodecException; return p0 .end method .method private static isRecoverableMediaCodecExceptionV21(Ljava/lang/IllegalStateException;)Z .locals 1 .line 2365 instance-of v0, p0, Landroid/media/MediaCodec$CodecException; if-eqz v0, :cond_0 .line 2366 check-cast p0, Landroid/media/MediaCodec$CodecException; invoke-virtual {p0}, Landroid/media/MediaCodec$CodecException;->isRecoverable()Z move-result p0 return p0 :cond_0 const/4 p0, 0x0 return p0 .end method .method private maybeInitCodecWithFallback(Landroid/media/MediaCrypto;Z)V .locals 7 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; const/4 v1, 0x0 if-nez v0, :cond_2 .line 1003 :try_start_0 invoke-direct {p0, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getAvailableCodecInfos(Z)Ljava/util/List; move-result-object v0 .line 1004 new-instance v2, Ljava/util/ArrayDeque; invoke-direct {v2}, Ljava/util/ArrayDeque;->()V iput-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; iget-boolean v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->enableDecoderFallback:Z if-eqz v3, :cond_0 .line 1006 invoke-virtual {v2, v0}, Ljava/util/ArrayDeque;->addAll(Ljava/util/Collection;)Z goto :goto_0 .line 1007 :cond_0 invoke-interface {v0}, Ljava/util/List;->isEmpty()Z move-result v2 if-nez v2, :cond_1 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; const/4 v3, 0x0 .line 1008 invoke-interface {v0, v3}, Ljava/util/List;->get(I)Ljava/lang/Object; move-result-object v0 check-cast v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; invoke-virtual {v2, v0}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z :cond_1 :goto_0 iput-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->preferredDecoderInitializationException:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; :try_end_0 .catch Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil$DecoderQueryException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 :catch_0 move-exception p1 .line 1012 new-instance v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const v1, -0xc34e invoke-direct {v0, p0, p1, p2, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;->(Landroidx/media3/common/Format;Ljava/lang/Throwable;ZI)V throw v0 :cond_2 :goto_1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; .line 1020 invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z move-result v0 if-nez v0, :cond_8 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; .line 1028 invoke-virtual {v0}, Ljava/util/ArrayDeque;->peekFirst()Ljava/lang/Object; move-result-object v0 check-cast v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; :goto_2 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-nez v2, :cond_7 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; .line 1030 invoke-virtual {v2}, Ljava/util/ArrayDeque;->peekFirst()Ljava/lang/Object; move-result-object v2 check-cast v2, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; .line 1031 invoke-virtual {p0, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldInitCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)Z move-result v3 if-nez v3, :cond_3 return-void .line 1036 :cond_3 :try_start_1 invoke-direct {p0, v2, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->initCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroid/media/MediaCrypto;)V :try_end_1 .catch Ljava/lang/Exception; {:try_start_1 .. :try_end_1} :catch_1 goto :goto_2 :catch_1 move-exception v3 const-string v4, "MediaCodecRenderer" if-ne v2, v0, :cond_4 :try_start_2 const-string v3, "Preferred decoder instantiation failed. Sleeping for 50ms then retrying." .line 1042 invoke-static {v4, v3}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)V const-wide/16 v5, 0x32 .line 1043 invoke-static {v5, v6}, Ljava/lang/Thread;->sleep(J)V .line 1044 invoke-direct {p0, v2, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->initCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroid/media/MediaCrypto;)V goto :goto_2 .line 1046 :cond_4 throw v3 :try_end_2 .catch Ljava/lang/Exception; {:try_start_2 .. :try_end_2} :catch_2 :catch_2 move-exception v3 .line 1050 new-instance v5, Ljava/lang/StringBuilder; const-string v6, "Failed to initialize decoder: " invoke-direct {v5, v6}, Ljava/lang/StringBuilder;->(Ljava/lang/String;)V invoke-virtual {v5, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder; move-result-object v5 invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String; move-result-object v5 invoke-static {v4, v5, v3}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; .line 1054 invoke-virtual {v4}, Ljava/util/ArrayDeque;->removeFirst()Ljava/lang/Object; .line 1055 new-instance v4, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; iget-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; invoke-direct {v4, v5, v3, p2, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;->(Landroidx/media3/common/Format;Ljava/lang/Throwable;ZLandroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)V .line 1058 invoke-virtual {p0, v4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onCodecError(Ljava/lang/Exception;)V iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->preferredDecoderInitializationException:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; if-nez v2, :cond_5 iput-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->preferredDecoderInitializationException:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; goto :goto_3 .line 1063 :cond_5 invoke-static {v2, v4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;->access$000(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;)Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; move-result-object v2 iput-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->preferredDecoderInitializationException:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; :goto_3 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; .line 1065 invoke-virtual {v2}, Ljava/util/ArrayDeque;->isEmpty()Z move-result v2 if-nez v2, :cond_6 goto :goto_2 :cond_6 iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->preferredDecoderInitializationException:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; .line 1066 throw p0 :cond_7 iput-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; return-void .line 1021 :cond_8 new-instance p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const v0, -0xc34f invoke-direct {p1, p0, v1, p2, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException;->(Landroidx/media3/common/Format;Ljava/lang/Throwable;ZI)V throw p1 .end method .method private processEndOfStream()V .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I const/4 v1, 0x1 if-eq v0, v1, :cond_2 const/4 v2, 0x2 if-eq v0, v2, :cond_1 const/4 v2, 0x3 if-eq v0, v2, :cond_0 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z .line 2071 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->renderToEndOfStream()V goto :goto_0 .line 2059 :cond_0 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->reinitializeCodec()V goto :goto_0 .line 2062 :cond_1 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushCodec()V .line 2063 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateDrmSessionV23()V goto :goto_0 .line 2066 :cond_2 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushCodec()V :goto_0 return-void .end method .method private processOutputMediaFormatChanged()V .locals 4 const/4 v0, 0x1 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHasOutputMediaFormat:Z iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1970 invoke-interface {v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->getOutputFormat()Landroid/media/MediaFormat; move-result-object v1 iget v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode:I if-eqz v2, :cond_0 const-string v2, "width" .line 1972 invoke-virtual {v1, v2}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I move-result v2 const/16 v3, 0x20 if-ne v2, v3, :cond_0 const-string v2, "height" .line 1973 invoke-virtual {v1, v2}, Landroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I move-result v2 if-ne v2, v3, :cond_0 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldSkipAdaptationWorkaroundOutputBuffer:Z return-void :cond_0 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsMonoChannelCountWorkaround:Z if-eqz v2, :cond_1 const-string v2, "channel-count" .line 1980 invoke-virtual {v1, v2, v0}, Landroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V :cond_1 iput-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormat:Landroid/media/MediaFormat; iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormatChanged:Z return-void .end method .method private readSourceOmittingSampleData(I)Z .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation .line 983 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getFormatHolder()Landroidx/media3/exoplayer/FormatHolder; move-result-object v0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->noDataBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 984 invoke-virtual {v1}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->noDataBuffer:Landroidx/media3/decoder/DecoderInputBuffer; or-int/lit8 p1, p1, 0x4 .line 986 invoke-virtual {p0, v0, v1, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->readSource(Landroidx/media3/exoplayer/FormatHolder;Landroidx/media3/decoder/DecoderInputBuffer;I)I move-result p1 const/4 v1, -0x5 const/4 v2, 0x1 if-ne p1, v1, :cond_0 .line 988 invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onInputFormatChanged(Landroidx/media3/exoplayer/FormatHolder;)Landroidx/media3/exoplayer/DecoderReuseEvaluation; return v2 :cond_0 const/4 v0, -0x4 if-ne p1, v0, :cond_1 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->noDataBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 990 invoke-virtual {p1}, Landroidx/media3/decoder/DecoderInputBuffer;->isEndOfStream()Z move-result p1 if-eqz p1, :cond_1 iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z .line 992 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V :cond_1 const/4 p0, 0x0 return p0 .end method .method private reinitializeCodec()V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation .line 2195 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V .line 2196 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->maybeInitCodecOrBypass()V return-void .end method .method private resetInputBuffer()V .locals 1 const/4 v0, -0x1 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputIndex:I iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->buffer:Landroidx/media3/decoder/DecoderInputBuffer; const/4 v0, 0x0 .line 1193 iput-object v0, p0, Landroidx/media3/decoder/DecoderInputBuffer;->data:Ljava/nio/ByteBuffer; return-void .end method .method private resetOutputBuffer()V .locals 1 const/4 v0, -0x1 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputIndex:I const/4 v0, 0x0 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputBuffer:Ljava/nio/ByteBuffer; return-void .end method .method private setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .locals 1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 1207 invoke-static {v0, p1}, Landroidx/media3/exoplayer/drm/DrmSession;->replaceSession(Landroidx/media3/exoplayer/drm/DrmSession;Landroidx/media3/exoplayer/drm/DrmSession;)V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; return-void .end method .method private setOutputStreamInfo(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;)V .locals 4 iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 2095 iget-wide v0, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->streamOffsetUs:J const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long v0, v0, v2 if-eqz v0, :cond_0 const/4 v0, 0x1 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->needToNotifyOutputFormatChangeAfterStreamChange:Z .line 2097 iget-wide v0, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->streamOffsetUs:J invoke-virtual {p0, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onOutputStreamOffsetUsChanged(J)V :cond_0 return-void .end method .method private setSourceDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .locals 1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 1202 invoke-static {v0, p1}, Landroidx/media3/exoplayer/drm/DrmSession;->replaceSession(Landroidx/media3/exoplayer/drm/DrmSession;Landroidx/media3/exoplayer/drm/DrmSession;)V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; return-void .end method .method private shouldContinueRendering(J)Z .locals 4 iget-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->renderTimeLimitMs:J const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long v0, v0, v2 if-eqz v0, :cond_1 .line 1184 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide v0 sub-long/2addr v0, p1 iget-wide p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->renderTimeLimitMs:J cmp-long p0, v0, p0 if-gez 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 protected static supportsFormatDrm(Landroidx/media3/common/Format;)Z .locals 1 .line 2103 iget v0, p0, Landroidx/media3/common/Format;->cryptoType:I if-eqz v0, :cond_1 iget p0, p0, Landroidx/media3/common/Format;->cryptoType:I const/4 v0, 0x2 if-ne p0, v0, :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 private updateCodecOperatingRate(Landroidx/media3/common/Format;)Z .locals 4 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation .line 1748 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v1, 0x17 const/4 v2, 0x1 if-ge v0, v1, :cond_0 return v2 :cond_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-eqz v0, :cond_6 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I const/4 v1, 0x3 if-eq v0, v1, :cond_6 .line 1754 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getState()I move-result v0 if-nez v0, :cond_1 goto :goto_1 :cond_1 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->targetPlaybackSpeed:F .line 1760 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getStreamFormats()[Landroidx/media3/common/Format; move-result-object v1 invoke-virtual {p0, v0, p1, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getCodecOperatingRateV23(FLandroidx/media3/common/Format;[Landroidx/media3/common/Format;)F move-result p1 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOperatingRate:F cmpl-float v1, v0, p1 if-nez v1, :cond_2 return v2 :cond_2 const/high16 v1, -0x40800000 # -1.0f cmpl-float v3, p1, v1 if-nez v3, :cond_3 .line 1767 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndReinitializeCodec()V const/4 p0, 0x0 return p0 :cond_3 cmpl-float v0, v0, v1 if-nez v0, :cond_5 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->assumedMinimumCodecOperatingRate:F cmpl-float v0, p1, v0 if-lez v0, :cond_4 goto :goto_0 :cond_4 return v2 .line 1773 :cond_5 :goto_0 new-instance v0, Landroid/os/Bundle; invoke-direct {v0}, Landroid/os/Bundle;->()V const-string v1, "operating-rate" .line 1774 invoke-virtual {v0, v1, p1}, Landroid/os/Bundle;->putFloat(Ljava/lang/String;F)V iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .line 1775 invoke-interface {v1, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->setParameters(Landroid/os/Bundle;)V iput p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOperatingRate:F :cond_6 :goto_1 return v2 .end method .method private updateDrmSessionV23()V .locals 3 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 2214 invoke-interface {v0}, Landroidx/media3/exoplayer/drm/DrmSession;->getCryptoConfig()Landroidx/media3/decoder/CryptoConfig; move-result-object v0 .line 2215 instance-of v1, v0, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; if-eqz v1, :cond_0 :try_start_0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; .line 2217 check-cast v0, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; iget-object v0, v0, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig;->sessionId:[B invoke-virtual {v1, v0}, Landroid/media/MediaCrypto;->setMediaDrmSession([B)V :try_end_0 .catch Landroid/media/MediaCryptoException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_0 :catch_0 move-exception v0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const/16 v2, 0x1776 .line 2219 invoke-virtual {p0, v0, v1, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 :cond_0 :goto_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 2223 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V const/4 v0, 0x0 iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I return-void .end method # virtual methods .method protected canReuseCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroidx/media3/common/Format;Landroidx/media3/common/Format;)Landroidx/media3/exoplayer/DecoderReuseEvaluation; .locals 6 .line 1666 new-instance p0, Landroidx/media3/exoplayer/DecoderReuseEvaluation; iget-object v1, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; const/4 v4, 0x0 const/4 v5, 0x1 move-object v0, p0 move-object v2, p2 move-object v3, p3 invoke-direct/range {v0 .. v5}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;->(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V return-object p0 .end method .method protected createDecoderException(Ljava/lang/Throwable;Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)Landroidx/media3/exoplayer/mediacodec/MediaCodecDecoderException; .locals 0 .line 970 new-instance p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecDecoderException; invoke-direct {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecDecoderException;->(Ljava/lang/Throwable;Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)V return-object p0 .end method .method protected final flushOrReinitializeCodec()Z .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation .line 857 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushOrReleaseCodec()Z move-result v0 if-eqz v0, :cond_0 .line 859 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->maybeInitCodecOrBypass()V :cond_0 return v0 .end method .method protected flushOrReleaseCodec()Z .locals 4 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; const/4 v1, 0x0 if-nez v0, :cond_0 return v1 :cond_0 iget v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I const/4 v2, 0x3 const/4 v3, 0x1 if-eq v0, v2, :cond_5 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsFlushWorkaround:Z if-nez v2, :cond_5 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsSosFlushWorkaround:Z if-eqz v2, :cond_1 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHasOutputMediaFormat:Z if-eqz v2, :cond_5 :cond_1 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosFlushWorkaround:Z if-eqz v2, :cond_2 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedEos:Z if-eqz v2, :cond_2 goto :goto_2 :cond_2 const/4 v2, 0x2 if-ne v0, v2, :cond_4 .line 882 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v2, 0x17 if-lt v0, v2, :cond_3 move v0, v3 goto :goto_0 :cond_3 move v0, v1 :goto_0 invoke-static {v0}, Landroidx/media3/common/util/Assertions;->checkState(Z)V .line 884 sget v0, Landroidx/media3/common/util/Util;->SDK_INT:I if-lt v0, v2, :cond_4 .line 886 :try_start_0 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateDrmSessionV23()V :try_end_0 .catch Landroidx/media3/exoplayer/ExoPlaybackException; {:try_start_0 .. :try_end_0} :catch_0 goto :goto_1 :catch_0 move-exception v0 const-string v1, "MediaCodecRenderer" const-string v2, "Failed to update the DRM session, releasing the codec instead." .line 888 invoke-static {v1, v2, v0}, Landroidx/media3/common/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V .line 889 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V return v3 .line 894 :cond_4 :goto_1 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushCodec()V return v1 .line 878 :cond_5 :goto_2 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V return v3 .end method .method protected final getCodec()Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; .locals 0 iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; return-object p0 .end method .method protected final getCodecInfo()Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; .locals 0 iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; return-object p0 .end method .method protected getCodecNeedsEosPropagation()Z .locals 0 const/4 p0, 0x0 return p0 .end method .method protected getCodecOperatingRate()F .locals 0 iget p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOperatingRate:F return p0 .end method .method protected getCodecOperatingRateV23(FLandroidx/media3/common/Format;[Landroidx/media3/common/Format;)F .locals 0 const/high16 p0, -0x40800000 # -1.0f return p0 .end method .method protected final getCodecOutputMediaFormat()Landroid/media/MediaFormat; .locals 0 iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormat:Landroid/media/MediaFormat; return-object p0 .end method .method protected abstract getDecoderInfos(Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;Landroidx/media3/common/Format;Z)Ljava/util/List; .annotation system Ldalvik/annotation/Signature; value = { "(", "Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;", "Landroidx/media3/common/Format;", "Z)", "Ljava/util/List<", "Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;", ">;" } .end annotation .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil$DecoderQueryException; } .end annotation .end method .method protected abstract getMediaCodecConfiguration(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroidx/media3/common/Format;Landroid/media/MediaCrypto;F)Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Configuration; .end method .method protected final getOutputStreamOffsetUs()J .locals 2 iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 2090 iget-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->streamOffsetUs:J return-wide v0 .end method .method protected getPlaybackSpeed()F .locals 0 iget p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->currentPlaybackSpeed:F return p0 .end method .method protected handleInputBufferSupplementalData(Landroidx/media3/decoder/DecoderInputBuffer;)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation return-void .end method .method protected final isBypassPossible(Landroidx/media3/common/Format;)Z .locals 1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; if-nez v0, :cond_0 .line 573 invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldUseBypass(Landroidx/media3/common/Format;)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 0 iget-boolean p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z return p0 .end method .method public isReady()Z .locals 4 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; if-eqz v0, :cond_1 .line 1693 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isSourceReady()Z move-result v0 if-nez v0, :cond_0 .line 1694 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->hasOutputBuffer()Z move-result v0 if-nez v0, :cond_0 iget-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHotswapDeadlineMs:J const-wide v2, -0x7fffffffffffffffL # -4.9E-324 cmp-long v0, v0, v2 if-eqz v0, :cond_1 .line 1696 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide v0 iget-wide v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHotswapDeadlineMs:J cmp-long p0, v0, v2 if-gez p0, :cond_1 :cond_0 const/4 p0, 0x1 goto :goto_0 :cond_1 const/4 p0, 0x0 :goto_0 return p0 .end method .method protected final maybeInitCodecOrBypass()V .locals 7 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-nez v0, :cond_8 iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z if-nez v0, :cond_8 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; if-nez v0, :cond_0 goto/16 :goto_2 .line 506 :cond_0 invoke-virtual {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isBypassPossible(Landroidx/media3/common/Format;)Z move-result v0 if-eqz v0, :cond_1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 507 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->initBypass(Landroidx/media3/common/Format;)V return-void :cond_1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 511 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 513 iget-object v0, v0, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; if-eqz v1, :cond_7 .line 515 invoke-interface {v1}, Landroidx/media3/exoplayer/drm/DrmSession;->getCryptoConfig()Landroidx/media3/decoder/CryptoConfig; move-result-object v1 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; const/4 v3, 0x1 if-nez v2, :cond_5 if-nez v1, :cond_3 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 518 invoke-interface {v0}, Landroidx/media3/exoplayer/drm/DrmSession;->getError()Landroidx/media3/exoplayer/drm/DrmSession$DrmSessionException; move-result-object v0 if-eqz v0, :cond_2 goto :goto_1 :cond_2 return-void .line 526 :cond_3 instance-of v2, v1, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; if-eqz v2, :cond_5 .line 527 move-object v2, v1 check-cast v2, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; .line 529 :try_start_0 new-instance v4, Landroid/media/MediaCrypto; iget-object v5, v2, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig;->uuid:Ljava/util/UUID; iget-object v6, v2, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig;->sessionId:[B invoke-direct {v4, v5, v6}, Landroid/media/MediaCrypto;->(Ljava/util/UUID;[B)V iput-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; :try_end_0 .catch Landroid/media/MediaCryptoException; {:try_start_0 .. :try_end_0} :catch_0 .line 535 iget-boolean v2, v2, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig;->forceAllowInsecureDecoderComponents:Z if-nez v2, :cond_4 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; .line 537 invoke-virtual {v2, v0}, Landroid/media/MediaCrypto;->requiresSecureDecoderComponent(Ljava/lang/String;)Z move-result v0 if-eqz v0, :cond_4 move v0, v3 goto :goto_0 :cond_4 const/4 v0, 0x0 :goto_0 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCryptoRequiresSecureDecoder:Z goto :goto_1 :catch_0 move-exception v0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const/16 v2, 0x1776 .line 532 invoke-virtual {p0, v0, v1, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 .line 540 :cond_5 :goto_1 sget-boolean v0, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig;->WORKAROUND_DEVICE_NEEDS_KEYS_TO_CONFIGURE_CODEC:Z if-eqz v0, :cond_7 instance-of v0, v1, Landroidx/media3/exoplayer/drm/FrameworkCryptoConfig; if-eqz v0, :cond_7 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 542 invoke-interface {v0}, Landroidx/media3/exoplayer/drm/DrmSession;->getState()I move-result v0 if-eq v0, v3, :cond_6 const/4 v1, 0x4 if-eq v0, v1, :cond_7 return-void :cond_6 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 545 invoke-interface {v0}, Landroidx/media3/exoplayer/drm/DrmSession;->getError()Landroidx/media3/exoplayer/drm/DrmSession$DrmSessionException; move-result-object v0 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/drm/DrmSession$DrmSessionException; iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 546 iget v2, v0, Landroidx/media3/exoplayer/drm/DrmSession$DrmSessionException;->errorCode:I invoke-virtual {p0, v0, v1, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 :cond_7 :try_start_1 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; iget-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCryptoRequiresSecureDecoder:Z .line 556 invoke-direct {p0, v0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->maybeInitCodecWithFallback(Landroid/media/MediaCrypto;Z)V :try_end_1 .catch Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$DecoderInitializationException; {:try_start_1 .. :try_end_1} :catch_1 return-void :catch_1 move-exception v0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const/16 v2, 0xfa1 .line 558 invoke-virtual {p0, v0, v1, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 :cond_8 :goto_2 return-void .end method .method protected onCodecError(Ljava/lang/Exception;)V .locals 0 return-void .end method .method protected onCodecInitialized(Ljava/lang/String;Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter$Configuration;JJ)V .locals 0 return-void .end method .method protected onCodecReleased(Ljava/lang/String;)V .locals 0 return-void .end method .method protected onDisabled()V .locals 1 const/4 v0, 0x0 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; .line 731 sget-object v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->UNSET:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setOutputStreamInfo(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;)V iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 732 invoke-virtual {v0}, Ljava/util/ArrayDeque;->clear()V .line 733 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushOrReleaseCodec()Z return-void .end method .method protected onEnabled(ZZ)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation .line 669 new-instance p1, Landroidx/media3/exoplayer/DecoderCounters; invoke-direct {p1}, Landroidx/media3/exoplayer/DecoderCounters;->()V iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; return-void .end method .method protected onInputFormatChanged(Landroidx/media3/exoplayer/FormatHolder;)Landroidx/media3/exoplayer/DecoderReuseEvaluation; .locals 11 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation const/4 v0, 0x1 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->waitingForFirstSampleInFormat:Z .line 1484 iget-object v1, p1, Landroidx/media3/exoplayer/FormatHolder;->format:Landroidx/media3/common/Format; invoke-static {v1}, Landroidx/media3/common/util/Assertions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object; move-result-object v1 move-object v5, v1 check-cast v5, Landroidx/media3/common/Format; .line 1485 iget-object v1, v5, Landroidx/media3/common/Format;->sampleMimeType:Ljava/lang/String; if-eqz v1, :cond_13 .line 1494 iget-object p1, p1, Landroidx/media3/exoplayer/FormatHolder;->drmSession:Landroidx/media3/exoplayer/drm/DrmSession; invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setSourceDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V iput-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; iget-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z const/4 v1, 0x0 if-eqz p1, :cond_0 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassDrainAndReinitialize:Z return-object v1 :cond_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-nez p1, :cond_1 iput-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; .line 1504 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->maybeInitCodecOrBypass()V return-object v1 :cond_1 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; iget-object v4, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; .line 1518 invoke-direct {p0, v1, v5, v2, v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drmNeedsCodecReinitialization(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroidx/media3/common/Format;Landroidx/media3/exoplayer/drm/DrmSession;Landroidx/media3/exoplayer/drm/DrmSession;)Z move-result v2 if-eqz v2, :cond_2 .line 1519 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndReinitializeCodec()V .line 1520 new-instance p0, Landroidx/media3/exoplayer/DecoderReuseEvaluation; iget-object v3, v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; const/4 v6, 0x0 const/16 v7, 0x80 move-object v2, p0 invoke-direct/range {v2 .. v7}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;->(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V return-object p0 :cond_2 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->sourceDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrmSession:Landroidx/media3/exoplayer/drm/DrmSession; const/4 v6, 0x0 if-eq v2, v3, :cond_3 move v2, v0 goto :goto_0 :cond_3 move v2, v6 :goto_0 if-eqz v2, :cond_5 .line 1528 sget v3, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 v7, 0x17 if-lt v3, v7, :cond_4 goto :goto_1 :cond_4 move v3, v6 goto :goto_2 :cond_5 :goto_1 move v3, v0 :goto_2 invoke-static {v3}, Landroidx/media3/common/util/Assertions;->checkState(Z)V .line 1530 invoke-virtual {p0, v1, v4, v5}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->canReuseCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;Landroidx/media3/common/Format;Landroidx/media3/common/Format;)Landroidx/media3/exoplayer/DecoderReuseEvaluation; move-result-object v3 .line 1532 iget v7, v3, Landroidx/media3/exoplayer/DecoderReuseEvaluation;->result:I const/4 v8, 0x3 if-eqz v7, :cond_f const/16 v9, 0x10 const/4 v10, 0x2 if-eq v7, v0, :cond_c if-eq v7, v10, :cond_8 if-ne v7, v8, :cond_7 .line 1568 invoke-direct {p0, v5}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateCodecOperatingRate(Landroidx/media3/common/Format;)Z move-result v0 if-nez v0, :cond_6 goto :goto_4 :cond_6 iput-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; if-eqz v2, :cond_10 .line 1572 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndUpdateCodecDrmSessionV23()Z move-result v0 if-nez v0, :cond_10 goto :goto_5 .line 1578 :cond_7 new-instance p0, Ljava/lang/IllegalStateException; invoke-direct {p0}, Ljava/lang/IllegalStateException;->()V throw p0 .line 1551 :cond_8 invoke-direct {p0, v5}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateCodecOperatingRate(Landroidx/media3/common/Format;)Z move-result v7 if-nez v7, :cond_9 goto :goto_4 :cond_9 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigured:Z iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I iget v7, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode:I if-eq v7, v10, :cond_b if-ne v7, v0, :cond_a .line 1556 iget v7, v5, Landroidx/media3/common/Format;->width:I iget v9, v4, Landroidx/media3/common/Format;->width:I if-ne v7, v9, :cond_a iget v7, v5, Landroidx/media3/common/Format;->height:I iget v9, v4, Landroidx/media3/common/Format;->height:I if-ne v7, v9, :cond_a goto :goto_3 :cond_a move v0, v6 :cond_b :goto_3 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsAdaptationWorkaroundBuffer:Z iput-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; if-eqz v2, :cond_10 .line 1562 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndUpdateCodecDrmSessionV23()Z move-result v0 if-nez v0, :cond_10 goto :goto_5 .line 1537 :cond_c invoke-direct {p0, v5}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateCodecOperatingRate(Landroidx/media3/common/Format;)Z move-result v0 if-nez v0, :cond_d :goto_4 move v7, v9 goto :goto_6 :cond_d iput-object v5, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; if-eqz v2, :cond_e .line 1542 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndUpdateCodecDrmSessionV23()Z move-result v0 if-nez v0, :cond_10 goto :goto_5 .line 1545 :cond_e invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndFlushCodec()Z move-result v0 if-nez v0, :cond_10 :goto_5 move v7, v10 goto :goto_6 .line 1534 :cond_f invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainAndReinitializeCodec()V :cond_10 move v7, v6 .line 1581 :goto_6 iget v0, v3, Landroidx/media3/exoplayer/DecoderReuseEvaluation;->result:I if-eqz v0, :cond_12 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-ne v0, p1, :cond_11 iget p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I if-ne p0, v8, :cond_12 .line 1585 :cond_11 new-instance p0, Landroidx/media3/exoplayer/DecoderReuseEvaluation; iget-object v3, v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; const/4 v6, 0x0 move-object v2, p0 invoke-direct/range {v2 .. v7}, Landroidx/media3/exoplayer/DecoderReuseEvaluation;->(Ljava/lang/String;Landroidx/media3/common/Format;Landroidx/media3/common/Format;II)V return-object p0 :cond_12 return-object v3 .line 1489 :cond_13 new-instance p1, Ljava/lang/IllegalArgumentException; invoke-direct {p1}, Ljava/lang/IllegalArgumentException;->()V const/16 v0, 0xfa5 invoke-virtual {p0, p1, v5, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 .end method .method protected onOutputFormatChanged(Landroidx/media3/common/Format;Landroid/media/MediaFormat;)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation return-void .end method .method protected onOutputStreamOffsetUsChanged(J)V .locals 0 return-void .end method .method protected onPositionReset(JZ)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation const/4 p1, 0x0 iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputStreamEnded:Z iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputEndOfStream:Z iget-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z if-eqz p2, :cond_0 iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassBatchBuffer:Landroidx/media3/exoplayer/mediacodec/BatchBuffer; .line 703 invoke-virtual {p2}, Landroidx/media3/exoplayer/mediacodec/BatchBuffer;->clear()V iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBuffer:Landroidx/media3/decoder/DecoderInputBuffer; .line 704 invoke-virtual {p2}, Landroidx/media3/decoder/DecoderInputBuffer;->clear()V iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassSampleBufferPending:Z iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->oggOpusAudioPacketizer:Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer; .line 706 invoke-virtual {p1}, Landroidx/media3/exoplayer/audio/OggOpusAudioPacketizer;->reset()V goto :goto_0 .line 708 :cond_0 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->flushOrReinitializeCodec()Z :goto_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 713 iget-object p1, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->formatQueue:Landroidx/media3/common/util/TimedValueQueue; invoke-virtual {p1}, Landroidx/media3/common/util/TimedValueQueue;->size()I move-result p1 if-lez p1, :cond_1 const/4 p1, 0x1 iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->waitingForFirstSampleInFormat:Z :cond_1 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 716 iget-object p1, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->formatQueue:Landroidx/media3/common/util/TimedValueQueue; invoke-virtual {p1}, Landroidx/media3/common/util/TimedValueQueue;->clear()V iget-object p0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 717 invoke-virtual {p0}, Ljava/util/ArrayDeque;->clear()V return-void .end method .method protected onProcessedOutputBuffer(J)V .locals 2 iput-wide p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastProcessedOutputBufferTimeUs:J :goto_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 1641 invoke-virtual {v0}, Ljava/util/ArrayDeque;->isEmpty()Z move-result v0 if-nez v0, :cond_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 1642 invoke-virtual {v0}, Ljava/util/ArrayDeque;->peek()Ljava/lang/Object; move-result-object v0 check-cast v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; iget-wide v0, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->previousStreamLastBufferTimeUs:J cmp-long v0, p1, v0 if-ltz v0, :cond_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 1643 invoke-virtual {v0}, Ljava/util/ArrayDeque;->poll()Ljava/lang/Object; move-result-object v0 check-cast v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setOutputStreamInfo(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;)V .line 1644 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onProcessedStreamChange()V goto :goto_0 :cond_0 return-void .end method .method protected onProcessedStreamChange()V .locals 0 return-void .end method .method protected onQueueInputBuffer(Landroidx/media3/decoder/DecoderInputBuffer;)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation return-void .end method .method protected onReadyToInitializeCodec(Landroidx/media3/common/Format;)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation return-void .end method .method protected onReset()V .locals 2 const/4 v0, 0x0 .line 739 :try_start_0 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->disableBypass()V .line 740 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_0 .line 742 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setSourceDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V return-void :catchall_0 move-exception v1 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setSourceDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .line 743 throw v1 .end method .method protected onStarted()V .locals 0 return-void .end method .method protected onStopped()V .locals 0 return-void .end method .method protected onStreamChanged([Landroidx/media3/common/Format;JJ)V .locals 12 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation move-object v0, p0 iget-object v1, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 675 iget-wide v1, v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->streamOffsetUs:J const-wide v3, -0x7fffffffffffffffL # -4.9E-324 cmp-long v1, v1, v3 if-nez v1, :cond_0 .line 677 new-instance v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; const-wide v6, -0x7fffffffffffffffL # -4.9E-324 move-object v5, v1 move-wide v8, p2 move-wide/from16 v10, p4 invoke-direct/range {v5 .. v11}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->(JJJ)V invoke-direct {p0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setOutputStreamInfo(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;)V goto :goto_0 :cond_0 iget-object v1, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 680 invoke-virtual {v1}, Ljava/util/ArrayDeque;->isEmpty()Z move-result v1 if-eqz v1, :cond_2 iget-wide v1, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J cmp-long v5, v1, v3 if-eqz v5, :cond_1 iget-wide v5, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastProcessedOutputBufferTimeUs:J cmp-long v7, v5, v3 if-eqz v7, :cond_2 cmp-long v1, v5, v1 if-ltz v1, :cond_2 .line 685 :cond_1 new-instance v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; const-wide v6, -0x7fffffffffffffffL # -4.9E-324 move-object v5, v1 move-wide v8, p2 move-wide/from16 v10, p4 invoke-direct/range {v5 .. v11}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->(JJJ)V invoke-direct {p0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setOutputStreamInfo(Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;)V iget-object v1, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 688 iget-wide v1, v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->streamOffsetUs:J cmp-long v1, v1, v3 if-eqz v1, :cond_3 .line 689 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onProcessedStreamChange()V goto :goto_0 :cond_2 iget-object v1, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputStreamChanges:Ljava/util/ArrayDeque; .line 692 new-instance v9, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; iget-wide v3, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J move-object v2, v9 move-wide v5, p2 move-wide/from16 v7, p4 invoke-direct/range {v2 .. v8}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->(JJJ)V invoke-virtual {v1, v9}, Ljava/util/ArrayDeque;->add(Ljava/lang/Object;)Z :cond_3 :goto_0 return-void .end method .method protected abstract processOutputBuffer(JJLandroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;Ljava/nio/ByteBuffer;IIIJZZLandroidx/media3/common/Format;)Z .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation .end method .method protected releaseCodec()V .locals 3 const/4 v0, 0x0 :try_start_0 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-eqz v1, :cond_0 .line 758 invoke-interface {v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter;->release()V iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; .line 759 iget v2, v1, Landroidx/media3/exoplayer/DecoderCounters;->decoderReleaseCount:I add-int/lit8 v2, v2, 0x1 iput v2, v1, Landroidx/media3/exoplayer/DecoderCounters;->decoderReleaseCount:I iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; .line 760 iget-object v1, v1, Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;->name:Ljava/lang/String; invoke-virtual {p0, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onCodecReleased(Ljava/lang/String;)V :try_end_0 .catchall {:try_start_0 .. :try_end_0} :catchall_1 :cond_0 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; :try_start_1 iget-object v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; if-eqz v1, :cond_1 .line 766 invoke-virtual {v1}, Landroid/media/MediaCrypto;->release()V :try_end_1 .catchall {:try_start_1 .. :try_end_1} :catchall_0 :cond_1 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; .line 770 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .line 771 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForRelease()V return-void :catchall_0 move-exception v1 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; .line 770 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .line 771 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForRelease()V .line 772 throw v1 :catchall_1 move-exception v1 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; :try_start_2 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; if-eqz v2, :cond_2 .line 766 invoke-virtual {v2}, Landroid/media/MediaCrypto;->release()V :try_end_2 .catchall {:try_start_2 .. :try_end_2} :catchall_2 :cond_2 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; .line 770 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .line 771 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForRelease()V .line 773 throw v1 :catchall_2 move-exception v1 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCrypto:Landroid/media/MediaCrypto; .line 770 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->setCodecDrmSession(Landroidx/media3/exoplayer/drm/DrmSession;)V .line 771 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForRelease()V .line 772 throw v1 .end method .method public render(JJ)V .locals 5 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputEndOfStream:Z const/4 v1, 0x0 if-eqz v0, :cond_0 iput-boolean v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputEndOfStream:Z .line 790 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->processEndOfStream()V :cond_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingPlaybackException:Landroidx/media3/exoplayer/ExoPlaybackException; if-nez v0, :cond_b const/4 v0, 0x1 :try_start_0 iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamEnded:Z if-eqz v2, :cond_1 .line 800 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->renderToEndOfStream()V return-void :cond_1 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; if-nez v2, :cond_2 const/4 v2, 0x2 .line 803 invoke-direct {p0, v2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->readSourceOmittingSampleData(I)Z move-result v2 if-nez v2, :cond_2 return-void .line 808 :cond_2 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->maybeInitCodecOrBypass()V iget-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassEnabled:Z if-eqz v2, :cond_4 const-string v2, "bypassRender" .line 810 invoke-static {v2}, Landroidx/media3/common/util/TraceUtil;->beginSection(Ljava/lang/String;)V .line 811 :goto_0 invoke-direct {p0, p1, p2, p3, p4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->bypassRender(JJ)Z move-result v2 if-eqz v2, :cond_3 goto :goto_0 .line 812 :cond_3 invoke-static {}, Landroidx/media3/common/util/TraceUtil;->endSection()V goto :goto_3 :cond_4 iget-object v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codec:Landroidx/media3/exoplayer/mediacodec/MediaCodecAdapter; if-eqz v2, :cond_7 .line 814 invoke-static {}, Landroid/os/SystemClock;->elapsedRealtime()J move-result-wide v2 const-string v4, "drainAndFeed" .line 815 invoke-static {v4}, Landroidx/media3/common/util/TraceUtil;->beginSection(Ljava/lang/String;)V .line 816 :goto_1 invoke-direct {p0, p1, p2, p3, p4}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->drainOutputBuffer(JJ)Z move-result v4 if-eqz v4, :cond_5 .line 817 invoke-direct {p0, v2, v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldContinueRendering(J)Z move-result v4 if-eqz v4, :cond_5 goto :goto_1 .line 818 :cond_5 :goto_2 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->feedInputBuffer()Z move-result p1 if-eqz p1, :cond_6 invoke-direct {p0, v2, v3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldContinueRendering(J)Z move-result p1 if-eqz p1, :cond_6 goto :goto_2 .line 819 :cond_6 invoke-static {}, Landroidx/media3/common/util/TraceUtil;->endSection()V goto :goto_3 :cond_7 iget-object p3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; .line 821 iget p4, p3, Landroidx/media3/exoplayer/DecoderCounters;->skippedInputBufferCount:I invoke-virtual {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->skipSource(J)I move-result p1 add-int/2addr p4, p1 iput p4, p3, Landroidx/media3/exoplayer/DecoderCounters;->skippedInputBufferCount:I .line 826 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->readSourceOmittingSampleData(I)Z :goto_3 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decoderCounters:Landroidx/media3/exoplayer/DecoderCounters; .line 828 invoke-virtual {p1}, Landroidx/media3/exoplayer/DecoderCounters;->ensureUpdated()V :try_end_0 .catch Ljava/lang/IllegalStateException; {:try_start_0 .. :try_end_0} :catch_0 return-void :catch_0 move-exception p1 .line 830 invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isMediaCodecException(Ljava/lang/IllegalStateException;)Z move-result p2 if-eqz p2, :cond_a .line 831 invoke-virtual {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onCodecError(Ljava/lang/Exception;)V .line 832 sget p2, Landroidx/media3/common/util/Util;->SDK_INT:I const/16 p3, 0x15 if-lt p2, p3, :cond_8 invoke-static {p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isRecoverableMediaCodecExceptionV21(Ljava/lang/IllegalStateException;)Z move-result p2 if-eqz p2, :cond_8 move v1, v0 :cond_8 if-eqz v1, :cond_9 .line 834 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->releaseCodec()V .line 837 :cond_9 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->getCodecInfo()Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; move-result-object p2 invoke-virtual {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createDecoderException(Ljava/lang/Throwable;Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)Landroidx/media3/exoplayer/mediacodec/MediaCodecDecoderException; move-result-object p1 iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->inputFormat:Landroidx/media3/common/Format; const/16 p3, 0xfa3 .line 836 invoke-virtual {p0, p1, p2, v1, p3}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;ZI)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 .line 842 :cond_a throw p1 :cond_b const/4 p1, 0x0 iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingPlaybackException:Landroidx/media3/exoplayer/ExoPlaybackException; .line 795 throw v0 .end method .method protected renderToEndOfStream()V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation return-void .end method .method protected resetCodecStateForFlush()V .locals 4 .line 910 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetInputBuffer()V .line 911 invoke-direct {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetOutputBuffer()V const-wide v0, -0x7fffffffffffffffL # -4.9E-324 iput-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHotswapDeadlineMs:J const/4 v2, 0x0 iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedEos:Z iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReceivedBuffers:Z iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsAdaptationWorkaroundBuffer:Z iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->shouldSkipAdaptationWorkaroundOutputBuffer:Z iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isDecodeOnlyOutputBuffer:Z iput-boolean v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->isLastOutputBuffer:Z iget-object v3, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->decodeOnlyPresentationTimestamps:Ljava/util/ArrayList; .line 919 invoke-virtual {v3}, Ljava/util/ArrayList;->clear()V iput-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->largestQueuedPresentationTimeUs:J iput-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastBufferInStreamPresentationTimeUs:J iput-wide v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->lastProcessedOutputBufferTimeUs:J iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->c2Mp3TimestampTracker:Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; if-eqz v0, :cond_0 .line 924 invoke-virtual {v0}, Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker;->reset()V :cond_0 iput v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainState:I iput v2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecDrainAction:I iget-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigured:Z iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I return-void .end method .method protected resetCodecStateForRelease()V .locals 2 .line 943 invoke-virtual {p0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->resetCodecStateForFlush()V const/4 v0, 0x0 iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingPlaybackException:Landroidx/media3/exoplayer/ExoPlaybackException; iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->c2Mp3TimestampTracker:Landroidx/media3/exoplayer/mediacodec/C2Mp3TimestampTracker; iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->availableCodecInfos:Ljava/util/ArrayDeque; iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo; iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; iput-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormat:Landroid/media/MediaFormat; const/4 v0, 0x0 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormatChanged:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecHasOutputMediaFormat:Z const/high16 v1, -0x40800000 # -1.0f iput v1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOperatingRate:F iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecAdaptationWorkaroundMode:I iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsDiscardToSpsWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsFlushWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsSosFlushWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosFlushWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosOutputExceptionWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosBufferTimestampWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsMonoChannelCountWorkaround:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecNeedsEosPropagation:Z iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigured:Z iput v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecReconfigurationState:I iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCryptoRequiresSecureDecoder:Z return-void .end method .method protected final setPendingOutputEndOfStream()V .locals 1 const/4 v0, 0x1 iput-boolean v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingOutputEndOfStream:Z return-void .end method .method protected final setPendingPlaybackException(Landroidx/media3/exoplayer/ExoPlaybackException;)V .locals 0 iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->pendingPlaybackException:Landroidx/media3/exoplayer/ExoPlaybackException; return-void .end method .method public setPlaybackSpeed(FF)V .locals 0 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iput p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->currentPlaybackSpeed:F iput p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->targetPlaybackSpeed:F iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 725 invoke-direct {p0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateCodecOperatingRate(Landroidx/media3/common/Format;)Z return-void .end method .method public setRenderTimeLimitMs(J)V .locals 0 iput-wide p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->renderTimeLimitMs:J return-void .end method .method protected shouldInitCodec(Landroidx/media3/exoplayer/mediacodec/MediaCodecInfo;)Z .locals 0 const/4 p0, 0x1 return p0 .end method .method protected shouldReinitCodec()Z .locals 0 const/4 p0, 0x0 return p0 .end method .method protected shouldUseBypass(Landroidx/media3/common/Format;)Z .locals 0 const/4 p0, 0x0 return p0 .end method .method public final supportsFormat(Landroidx/media3/common/Format;)I .locals 2 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation :try_start_0 iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->mediaCodecSelector:Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector; .line 453 invoke-virtual {p0, v0, p1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->supportsFormat(Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;Landroidx/media3/common/Format;)I move-result p0 :try_end_0 .catch Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil$DecoderQueryException; {:try_start_0 .. :try_end_0} :catch_0 return p0 :catch_0 move-exception v0 const/16 v1, 0xfa2 .line 455 invoke-virtual {p0, v0, p1, v1}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->createRendererException(Ljava/lang/Throwable;Landroidx/media3/common/Format;I)Landroidx/media3/exoplayer/ExoPlaybackException; move-result-object p0 throw p0 .end method .method protected abstract supportsFormat(Landroidx/media3/exoplayer/mediacodec/MediaCodecSelector;Landroidx/media3/common/Format;)I .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/mediacodec/MediaCodecUtil$DecoderQueryException; } .end annotation .end method .method public final supportsMixedMimeTypeAdaptation()I .locals 0 const/16 p0, 0x8 return p0 .end method .method protected final updateCodecOperatingRate()Z .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecInputFormat:Landroidx/media3/common/Format; .line 1736 invoke-direct {p0, v0}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->updateCodecOperatingRate(Landroidx/media3/common/Format;)Z move-result p0 return p0 .end method .method protected final updateOutputFormatForTime(J)V .locals 1 .annotation system Ldalvik/annotation/Throws; value = { Landroidx/media3/exoplayer/ExoPlaybackException; } .end annotation iget-object v0, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 630 iget-object v0, v0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->formatQueue:Landroidx/media3/common/util/TimedValueQueue; invoke-virtual {v0, p1, p2}, Landroidx/media3/common/util/TimedValueQueue;->pollFloor(J)Ljava/lang/Object; move-result-object p1 check-cast p1, Landroidx/media3/common/Format; if-nez p1, :cond_0 iget-boolean p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->needToNotifyOutputFormatChangeAfterStreamChange:Z if-eqz p2, :cond_0 iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormat:Landroid/media/MediaFormat; if-eqz p2, :cond_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputStreamInfo:Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo; .line 638 iget-object p1, p1, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer$OutputStreamInfo;->formatQueue:Landroidx/media3/common/util/TimedValueQueue; invoke-virtual {p1}, Landroidx/media3/common/util/TimedValueQueue;->pollFirst()Ljava/lang/Object; move-result-object p1 check-cast p1, Landroidx/media3/common/Format; :cond_0 if-eqz p1, :cond_1 iput-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; goto :goto_0 :cond_1 iget-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormatChanged:Z if-eqz p1, :cond_2 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; if-eqz p1, :cond_2 :goto_0 iget-object p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->outputFormat:Landroidx/media3/common/Format; iget-object p2, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormat:Landroid/media/MediaFormat; .line 645 invoke-virtual {p0, p1, p2}, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->onOutputFormatChanged(Landroidx/media3/common/Format;Landroid/media/MediaFormat;)V const/4 p1, 0x0 iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->codecOutputMediaFormatChanged:Z iput-boolean p1, p0, Landroidx/media3/exoplayer/mediacodec/MediaCodecRenderer;->needToNotifyOutputFormatChangeAfterStreamChange:Z :cond_2 return-void .end method