FlacBinarySearchSeeker$FlacTimestampSeeker.smali
.class final Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;
.super Ljava/lang/Object;
.source "FlacBinarySearchSeeker.java"
# interfaces
.implements Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSeeker;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x1a
name = "FlacTimestampSeeker"
.end annotation
# instance fields
.field private final decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>(Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;)V
.registers 2
.param p1, "decoderJni" # Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
.line 67
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 68
iput-object p1, p0, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
.line 69
return-void
.end method
.method synthetic constructor <init>(Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$1;)V
.registers 3
.param p1, "x0" # Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
.param p2, "x1" # Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$1;
.line 63
invoke-direct {p0, p1}, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;-><init>(Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;)V
return-void
.end method
# virtual methods
.method public synthetic onSeekFinished()V
.registers 1
invoke-static {p0}, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSeeker$-CC;->$default$onSeekFinished(Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSeeker;)V
return-void
.end method
.method public searchForTimestamp(Lcom/google/android/exoplayer2/extractor/ExtractorInput;JLcom/google/android/exoplayer2/extractor/BinarySearchSeeker$OutputFrameHolder;)Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;
.registers 19
.param p1, "input" # Lcom/google/android/exoplayer2/extractor/ExtractorInput;
.param p2, "targetSampleIndex" # J
.param p4, "outputFrameHolder" # Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$OutputFrameHolder;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;,
Ljava/lang/InterruptedException;
}
.end annotation
.line 75
move-object v1, p0
move-object/from16 v2, p4
iget-object v3, v2, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$OutputFrameHolder;->byteBuffer:Ljava/nio/ByteBuffer;
.line 76
.local v3, "outputBuffer":Ljava/nio/ByteBuffer;
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v4
.line 77
.local v4, "searchPosition":J
iget-object v0, v1, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
invoke-virtual {v0, v4, v5}, Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;->reset(J)V
.line 79
:try_start_e
iget-object v0, v1, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
invoke-virtual {v0, v3, v4, v5}, Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;->decodeSampleWithBacktrackPosition(Ljava/nio/ByteBuffer;J)V
:try_end_13
.catch Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni$FlacFrameDecodeException; {:try_start_e .. :try_end_13} :catch_5b
.line 85
nop
.line 86
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->limit()I
move-result v0
if-nez v0, :cond_1d
.line 87
sget-object v0, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;->NO_TIMESTAMP_IN_RANGE_RESULT:Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;
return-object v0
.line 90
:cond_1d
iget-object v0, v1, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;->getLastFrameFirstSampleIndex()J
move-result-wide v6
.line 91
.local v6, "lastFrameSampleIndex":J
iget-object v0, v1, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;->getNextFrameFirstSampleIndex()J
move-result-wide v8
.line 92
.local v8, "nextFrameSampleIndex":J
iget-object v0, v1, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
invoke-virtual {v0}, Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;->getDecodePosition()J
move-result-wide v10
.line 94
.local v10, "nextFrameSamplePosition":J
cmp-long v0, v6, p2
if-gtz v0, :cond_39
cmp-long v0, v8, p2
if-lez v0, :cond_39
const/4 v0, 0x1
goto :goto_3a
:cond_39
const/4 v0, 0x0
.line 97
.local v0, "targetSampleInLastFrame":Z
:goto_3a
if-eqz v0, :cond_4d
.line 99
iget-object v12, v1, Lcom/google/android/exoplayer2/ext/flac/FlacBinarySearchSeeker$FlacTimestampSeeker;->decoderJni:Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;
invoke-virtual {v12}, Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni;->getLastFrameTimestamp()J
move-result-wide v12
iput-wide v12, v2, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$OutputFrameHolder;->timeUs:J
.line 100
invoke-interface {p1}, Lcom/google/android/exoplayer2/extractor/ExtractorInput;->getPosition()J
move-result-wide v12
invoke-static {v12, v13}, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;->targetFoundResult(J)Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;
move-result-object v12
return-object v12
.line 101
:cond_4d
cmp-long v12, v8, p2
if-gtz v12, :cond_56
.line 102
invoke-static {v8, v9, v10, v11}, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;->underestimatedResult(JJ)Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;
move-result-object v12
return-object v12
.line 105
:cond_56
invoke-static {v6, v7, v4, v5}, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;->overestimatedResult(JJ)Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;
move-result-object v12
return-object v12
.line 81
.end local v0 # "targetSampleInLastFrame":Z
.end local v6 # "lastFrameSampleIndex":J
.end local v8 # "nextFrameSampleIndex":J
.end local v10 # "nextFrameSamplePosition":J
:catch_5b
move-exception v0
.line 84
.local v0, "e":Lcom/google/android/exoplayer2/ext/flac/FlacDecoderJni$FlacFrameDecodeException;
sget-object v6, Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;->NO_TIMESTAMP_IN_RANGE_RESULT:Lcom/google/android/exoplayer2/extractor/BinarySearchSeeker$TimestampSearchResult;
return-object v6
.end method