SyncSampleIntersectFinderImpl.smali
.class public Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;
.super Ljava/lang/Object;
.source "SyncSampleIntersectFinderImpl.java"
# interfaces
.implements Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;
# static fields
.field private static LOG:Ljava/util/logging/Logger;
# instance fields
.field private final minFragmentDurationSeconds:I
.field private movie:Lcom/googlecode/mp4parser/authoring/Movie;
.field private referenceTrack:Lcom/googlecode/mp4parser/authoring/Track;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 38
const-class v0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;
invoke-virtual {v0}, Ljava/lang/Class;->getName()Ljava/lang/String;
move-result-object v0
invoke-static {v0}, Ljava/util/logging/Logger;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
move-result-object v0
sput-object v0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->LOG:Ljava/util/logging/Logger;
return-void
.end method
.method public constructor <init>(Lcom/googlecode/mp4parser/authoring/Movie;Lcom/googlecode/mp4parser/authoring/Track;I)V
.registers 4
.param p1, "movie" # Lcom/googlecode/mp4parser/authoring/Movie;
.param p2, "referenceTrack" # Lcom/googlecode/mp4parser/authoring/Track;
.param p3, "minFragmentDurationSeconds" # I
.line 52
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 53
iput-object p1, p0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->movie:Lcom/googlecode/mp4parser/authoring/Movie;
.line 54
iput-object p2, p0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->referenceTrack:Lcom/googlecode/mp4parser/authoring/Track;
.line 55
iput p3, p0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->minFragmentDurationSeconds:I
.line 56
return-void
.end method
.method private static calculateTracktimesScalingFactor(Lcom/googlecode/mp4parser/authoring/Movie;Lcom/googlecode/mp4parser/authoring/Track;)J
.registers 11
.param p0, "m" # Lcom/googlecode/mp4parser/authoring/Movie;
.param p1, "track" # Lcom/googlecode/mp4parser/authoring/Track;
.line 281
const-wide/16 v0, 0x1
.line 282
.local v0, "timeScale":J
invoke-virtual {p0}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v2
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v2
:cond_a
:goto_a
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-nez v3, :cond_11
.line 289
return-wide v0
.line 282
:cond_11
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/googlecode/mp4parser/authoring/Track;
.line 283
.local v3, "track1":Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {v3}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v4
invoke-interface {p1}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v5
invoke-virtual {v4, v5}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v4
if-eqz v4, :cond_46
.line 284
invoke-interface {v3}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v4
invoke-virtual {v4}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v4
invoke-interface {p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v6
invoke-virtual {v6}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v6
cmp-long v8, v4, v6
if-eqz v8, :cond_a
.line 285
invoke-interface {v3}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v4
invoke-virtual {v4}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v4
invoke-static {v0, v1, v4, v5}, Lcom/googlecode/mp4parser/util/Math;->lcm(JJ)J
move-result-wide v0
goto :goto_a
.line 283
:cond_46
goto :goto_a
.end method
.method static getFormat(Lcom/googlecode/mp4parser/authoring/Track;)Ljava/lang/String;
.registers 5
.param p0, "track" # Lcom/googlecode/mp4parser/authoring/Track;
.line 59
invoke-interface {p0}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDescriptionBox()Lcom/coremedia/iso/boxes/SampleDescriptionBox;
move-result-object v0
invoke-virtual {v0}, Lcom/coremedia/iso/boxes/SampleDescriptionBox;->getSampleEntry()Lcom/coremedia/iso/boxes/sampleentry/AbstractSampleEntry;
move-result-object v0
.line 60
.local v0, "se":Lcom/coremedia/iso/boxes/sampleentry/SampleEntry;
invoke-interface {v0}, Lcom/coremedia/iso/boxes/sampleentry/SampleEntry;->getType()Ljava/lang/String;
move-result-object v1
.line 61
.local v1, "type":Ljava/lang/String;
const-string v2, "encv"
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_22
const-string v3, "enca"
invoke-virtual {v1, v3}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-nez v3, :cond_22
invoke-virtual {v1, v2}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v2
if-eqz v2, :cond_2f
.line 62
:cond_22
const-string/jumbo v2, "sinf/frma"
invoke-static {v0, v2}, Lcom/googlecode/mp4parser/util/Path;->getPath(Lcom/coremedia/iso/boxes/Box;Ljava/lang/String;)Lcom/coremedia/iso/boxes/Box;
move-result-object v2
check-cast v2, Lcom/coremedia/iso/boxes/OriginalFormatBox;
.line 63
.local v2, "frma":Lcom/coremedia/iso/boxes/OriginalFormatBox;
invoke-virtual {v2}, Lcom/coremedia/iso/boxes/OriginalFormatBox;->getDataFormat()Ljava/lang/String;
move-result-object v1
.line 65
.end local v2 # "frma":Lcom/coremedia/iso/boxes/OriginalFormatBox;
:cond_2f
return-object v1
.end method
.method public static getSyncSamplesTimestamps(Lcom/googlecode/mp4parser/authoring/Movie;Lcom/googlecode/mp4parser/authoring/Track;)Ljava/util/List;
.registers 7
.param p0, "movie" # Lcom/googlecode/mp4parser/authoring/Movie;
.param p1, "track" # Lcom/googlecode/mp4parser/authoring/Track;
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/googlecode/mp4parser/authoring/Movie;",
"Lcom/googlecode/mp4parser/authoring/Track;",
")",
"Ljava/util/List<",
"[J>;"
}
.end annotation
.line 167
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 168
.local v0, "times":Ljava/util/List;, "Ljava/util/List<[J>;"
invoke-virtual {p0}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:cond_d
:goto_d
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-nez v2, :cond_14
.line 177
return-object v0
.line 168
:cond_14
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/googlecode/mp4parser/authoring/Track;
.line 169
.local v2, "currentTrack":Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {v2}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v3
invoke-interface {p1}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v3
if-eqz v3, :cond_39
.line 170
invoke-interface {v2}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v3
.line 171
.local v3, "currentTrackSyncSamples":[J
if-eqz v3, :cond_d
array-length v4, v3
if-lez v4, :cond_d
.line 172
invoke-static {v2, p0}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->getTimes(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)[J
move-result-object v4
.line 173
.local v4, "currentTrackTimes":[J
invoke-interface {v0, v4}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_d
.line 169
.end local v3 # "currentTrackSyncSamples":[J
.end local v4 # "currentTrackTimes":[J
:cond_39
goto :goto_d
.end method
.method private static getTimes(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)[J
.registers 15
.param p0, "track" # Lcom/googlecode/mp4parser/authoring/Track;
.param p1, "m" # Lcom/googlecode/mp4parser/authoring/Movie;
.line 262
invoke-interface {p0}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v0
.line 263
.local v0, "syncSamples":[J
array-length v1, v0
new-array v1, v1, [J
.line 265
.local v1, "syncSampleTimes":[J
const/4 v2, 0x1
.line 266
.local v2, "currentSample":I
const-wide/16 v3, 0x0
.line 267
.local v3, "currentDuration":J
const/4 v5, 0x0
.line 269
.local v5, "currentSyncSampleIndex":I
invoke-static {p1, p0}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->calculateTracktimesScalingFactor(Lcom/googlecode/mp4parser/authoring/Movie;Lcom/googlecode/mp4parser/authoring/Track;)J
move-result-wide v6
.line 271
.local v6, "scalingFactor":J
nop
:goto_10
int-to-long v8, v2
array-length v10, v0
add-int/lit8 v10, v10, -0x1
aget-wide v10, v0, v10
cmp-long v12, v8, v10
if-lez v12, :cond_1b
.line 277
return-object v1
.line 272
:cond_1b
int-to-long v8, v2
aget-wide v10, v0, v5
cmp-long v12, v8, v10
if-nez v12, :cond_29
.line 273
add-int/lit8 v8, v5, 0x1
.end local v5 # "currentSyncSampleIndex":I
.local v8, "currentSyncSampleIndex":I
mul-long v9, v3, v6
aput-wide v9, v1, v5
move v5, v8
.line 275
.end local v8 # "currentSyncSampleIndex":I
.restart local v5 # "currentSyncSampleIndex":I
:cond_29
invoke-interface {p0}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDurations()[J
move-result-object v8
add-int/lit8 v9, v2, 0x1
.end local v2 # "currentSample":I
.local v9, "currentSample":I
add-int/lit8 v2, v2, -0x1
aget-wide v10, v8, v2
add-long/2addr v3, v10
move v2, v9
goto :goto_10
.end method
# virtual methods
.method public varargs getCommonIndices([J[JJ[[J)[J
.registers 26
.param p1, "syncSamples" # [J
.param p2, "syncSampleTimes" # [J
.param p3, "timeScale" # J
.param p5, "otherTracksTimes" # [[J
.line 181
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p2
move-object/from16 v3, p5
new-instance v4, Ljava/util/LinkedList;
invoke-direct {v4}, Ljava/util/LinkedList;-><init>()V
.line 182
.local v4, "nuSyncSamples":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Long;>;"
new-instance v5, Ljava/util/LinkedList;
invoke-direct {v5}, Ljava/util/LinkedList;-><init>()V
.line 185
.local v5, "nuSyncSampleTimes":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Long;>;"
const/4 v6, 0x0
.local v6, "i":I
:goto_13
array-length v7, v2
const/4 v8, 0x0
const/4 v9, 0x1
if-lt v6, v7, :cond_1c1
.line 202
.end local v6 # "i":I
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v6
int-to-double v6, v6
array-length v10, v1
int-to-double v10, v10
const-wide/high16 v12, 0x3fd0000000000000L # 0.25
invoke-static {v10, v11}, Ljava/lang/Double;->isNaN(D)Z
mul-double v10, v10, v12
cmpg-double v12, v6, v10
if-gez v12, :cond_107
.line 203
const-string v6, ""
.line 204
.local v6, "log":Ljava/lang/String;
new-instance v7, Ljava/lang/StringBuilder;
invoke-static {v6}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v10
invoke-direct {v7, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
new-array v10, v9, [Ljava/lang/Object;
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v11
invoke-static {v11}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v11
aput-object v11, v10, v8
const-string v11, "%5d - Common: ["
invoke-static {v11, v10}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v10
invoke-virtual {v7, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
.line 205
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v7
:goto_52
invoke-interface {v7}, Ljava/util/Iterator;->hasNext()Z
move-result v10
const-string v11, "%10d,"
if-nez v10, :cond_dc
.line 208
new-instance v7, Ljava/lang/StringBuilder;
invoke-static {v6}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v10
invoke-direct {v7, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
const-string v10, "]"
invoke-virtual {v7, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
.line 209
sget-object v7, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->LOG:Ljava/util/logging/Logger;
invoke-virtual {v7, v6}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
.line 210
const-string v6, ""
.line 212
new-instance v7, Ljava/lang/StringBuilder;
invoke-static {v6}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v12
invoke-direct {v7, v12}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
new-array v12, v9, [Ljava/lang/Object;
array-length v13, v1
invoke-static {v13}, Ljava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
move-result-object v13
aput-object v13, v12, v8
const-string v13, "%5d - In : ["
invoke-static {v13, v12}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v12
invoke-virtual {v7, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
.line 213
array-length v7, v1
const/4 v12, 0x0
:goto_94
if-ge v12, v7, :cond_ba
aget-wide v13, v1, v12
.line 214
.local v13, "l":J
new-instance v15, Ljava/lang/StringBuilder;
invoke-static {v6}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v8
invoke-direct {v15, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
new-array v8, v9, [Ljava/lang/Object;
invoke-static {v13, v14}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v17
const/16 v16, 0x0
aput-object v17, v8, v16
invoke-static {v11, v8}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v8
invoke-virtual {v15, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
.line 213
.end local v13 # "l":J
add-int/lit8 v12, v12, 0x1
const/4 v8, 0x0
goto :goto_94
.line 216
:cond_ba
new-instance v7, Ljava/lang/StringBuilder;
invoke-static {v6}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v8
invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-virtual {v7, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
.line 217
sget-object v7, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->LOG:Ljava/util/logging/Logger;
invoke-virtual {v7, v6}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
.line 218
sget-object v7, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->LOG:Ljava/util/logging/Logger;
const-string v8, "There are less than 25% of common sync samples in the given track."
invoke-virtual {v7, v8}, Ljava/util/logging/Logger;->warning(Ljava/lang/String;)V
.line 219
new-instance v7, Ljava/lang/RuntimeException;
invoke-direct {v7, v8}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v7
.line 205
:cond_dc
invoke-interface {v7}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v8
check-cast v8, Ljava/lang/Long;
invoke-virtual {v8}, Ljava/lang/Long;->longValue()J
move-result-wide v12
.line 206
.local v12, "l":J
new-instance v8, Ljava/lang/StringBuilder;
invoke-static {v6}, Ljava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
move-result-object v10
invoke-direct {v8, v10}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
new-array v10, v9, [Ljava/lang/Object;
invoke-static {v12, v13}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v14
const/16 v16, 0x0
aput-object v14, v10, v16
invoke-static {v11, v10}, Ljava/lang/String;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v10
invoke-virtual {v8, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v8}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v6
const/4 v8, 0x0
goto/16 :goto_52
.line 220
.end local v6 # "log":Ljava/lang/String;
.end local v12 # "l":J
:cond_107
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v6
int-to-double v6, v6
array-length v8, v1
int-to-double v8, v8
const-wide/high16 v10, 0x3fe0000000000000L # 0.5
invoke-static {v8, v9}, Ljava/lang/Double;->isNaN(D)Z
mul-double v8, v8, v10
cmpg-double v10, v6, v8
if-gez v10, :cond_121
.line 221
sget-object v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->LOG:Ljava/util/logging/Logger;
const-string v7, "There are less than 50% of common sync samples in the given track. This is implausible but I\'m ok to continue."
invoke-virtual {v6, v7}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
goto :goto_149
.line 222
:cond_121
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v6
array-length v7, v1
if-ge v6, v7, :cond_149
.line 223
sget-object v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->LOG:Ljava/util/logging/Logger;
new-instance v7, Ljava/lang/StringBuilder;
const-string v8, "Common SyncSample positions vs. this tracks SyncSample positions: "
invoke-direct {v7, v8}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v8
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v8, " vs. "
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
array-length v8, v1
invoke-virtual {v7, v8}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v7}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v7
invoke-virtual {v6, v7}, Ljava/util/logging/Logger;->finest(Ljava/lang/String;)V
goto :goto_14a
.line 222
:cond_149
:goto_149
nop
.line 228
:goto_14a
new-instance v6, Ljava/util/LinkedList;
invoke-direct {v6}, Ljava/util/LinkedList;-><init>()V
.line 230
.local v6, "finalSampleList":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Long;>;"
iget v7, v0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->minFragmentDurationSeconds:I
if-lez v7, :cond_1a5
.line 233
const-wide/16 v7, -0x1
.line 234
.local v7, "lastSyncSampleTime":J
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v9
.line 235
.local v9, "nuSyncSamplesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
invoke-interface {v5}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v10
.line 236
.local v10, "nuSyncSampleTimesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
nop
:goto_15e
invoke-interface {v9}, Ljava/util/Iterator;->hasNext()Z
move-result v11
if-eqz v11, :cond_1a1
invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
move-result v11
if-nez v11, :cond_16b
.line 244
.end local v7 # "lastSyncSampleTime":J
.end local v9 # "nuSyncSamplesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
.end local v10 # "nuSyncSampleTimesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
goto :goto_1a3
.line 237
.restart local v7 # "lastSyncSampleTime":J
.restart local v9 # "nuSyncSamplesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
.restart local v10 # "nuSyncSampleTimesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
:cond_16b
invoke-interface {v9}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v11
check-cast v11, Ljava/lang/Long;
invoke-virtual {v11}, Ljava/lang/Long;->longValue()J
move-result-wide v11
.line 238
.local v11, "curSyncSample":J
invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v13
check-cast v13, Ljava/lang/Long;
invoke-virtual {v13}, Ljava/lang/Long;->longValue()J
move-result-wide v13
.line 239
.local v13, "curSyncSampleTime":J
const-wide/16 v15, -0x1
cmp-long v17, v7, v15
if-eqz v17, :cond_196
sub-long v15, v13, v7
div-long v15, v15, p3
move-wide/from16 v17, v7
.end local v7 # "lastSyncSampleTime":J
.local v17, "lastSyncSampleTime":J
iget v7, v0, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->minFragmentDurationSeconds:I
int-to-long v7, v7
cmp-long v19, v15, v7
if-ltz v19, :cond_193
goto :goto_198
:cond_193
move-wide/from16 v7, v17
goto :goto_15e
.end local v17 # "lastSyncSampleTime":J
.restart local v7 # "lastSyncSampleTime":J
:cond_196
move-wide/from16 v17, v7
.line 240
.end local v7 # "lastSyncSampleTime":J
.restart local v17 # "lastSyncSampleTime":J
:goto_198
invoke-static {v11, v12}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
invoke-interface {v6, v7}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 241
move-wide v7, v13
.end local v17 # "lastSyncSampleTime":J
.restart local v7 # "lastSyncSampleTime":J
goto :goto_15e
.line 236
.end local v11 # "curSyncSample":J
.end local v13 # "curSyncSampleTime":J
:cond_1a1
move-wide/from16 v17, v7
.line 252
.end local v7 # "lastSyncSampleTime":J
.end local v9 # "nuSyncSamplesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
.end local v10 # "nuSyncSampleTimesIterator":Ljava/util/Iterator;, "Ljava/util/Iterator<Ljava/lang/Long;>;"
:goto_1a3
move-object v7, v6
goto :goto_1a7
.line 247
:cond_1a5
move-object v6, v4
move-object v7, v6
.line 252
.end local v6 # "finalSampleList":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Long;>;"
.local v7, "finalSampleList":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Long;>;"
:goto_1a7
invoke-interface {v7}, Ljava/util/List;->size()I
move-result v6
new-array v8, v6, [J
.line 253
.local v8, "finalSampleArray":[J
const/4 v6, 0x0
.local v6, "i":I
:goto_1ae
array-length v9, v8
if-lt v6, v9, :cond_1b2
.line 256
.end local v6 # "i":I
return-object v8
.line 254
.restart local v6 # "i":I
:cond_1b2
invoke-interface {v7, v6}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v9
check-cast v9, Ljava/lang/Long;
invoke-virtual {v9}, Ljava/lang/Long;->longValue()J
move-result-wide v9
aput-wide v9, v8, v6
.line 253
add-int/lit8 v6, v6, 0x1
goto :goto_1ae
.line 186
.end local v7 # "finalSampleList":Ljava/util/List;, "Ljava/util/List<Ljava/lang/Long;>;"
.end local v8 # "finalSampleArray":[J
:cond_1c1
const/16 v16, 0x0
const/4 v7, 0x1
.line 187
.local v7, "foundInEveryRef":Z
array-length v8, v3
const/4 v10, 0x0
:goto_1c6
if-lt v10, v8, :cond_1e0
.line 191
if-eqz v7, :cond_1dc
.line 193
aget-wide v8, v1, v6
invoke-static {v8, v9}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v8
invoke-interface {v4, v8}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 194
aget-wide v8, v2, v6
invoke-static {v8, v9}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v8
invoke-interface {v5, v8}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 185
.end local v7 # "foundInEveryRef":Z
:cond_1dc
add-int/lit8 v6, v6, 0x1
goto/16 :goto_13
.line 187
.restart local v7 # "foundInEveryRef":Z
:cond_1e0
aget-object v11, v3, v10
.line 188
.local v11, "times":[J
aget-wide v12, v2, v6
invoke-static {v11, v12, v13}, Ljava/util/Arrays;->binarySearch([JJ)I
move-result v12
if-ltz v12, :cond_1ec
const/4 v12, 0x1
goto :goto_1ed
:cond_1ec
const/4 v12, 0x0
:goto_1ed
and-int/2addr v7, v12
.line 187
.end local v11 # "times":[J
add-int/lit8 v10, v10, 0x1
goto :goto_1c6
.end method
.method public sampleNumbers(Lcom/googlecode/mp4parser/authoring/Track;)[J
.registers 24
.param p1, "track" # Lcom/googlecode/mp4parser/authoring/Track;
.line 78
move-object/from16 v6, p0
move-object/from16 v7, p1
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v0
const-string/jumbo v1, "vide"
invoke-virtual {v1, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
if-eqz v0, :cond_52
.line 79
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v0
if-eqz v0, :cond_4a
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v0
array-length v0, v0
if-lez v0, :cond_4a
.line 80
iget-object v0, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->movie:Lcom/googlecode/mp4parser/authoring/Movie;
invoke-static {v0, v7}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->getSyncSamplesTimestamps(Lcom/googlecode/mp4parser/authoring/Movie;Lcom/googlecode/mp4parser/authoring/Track;)Ljava/util/List;
move-result-object v8
.line 81
.local v8, "times":Ljava/util/List;, "Ljava/util/List<[J>;"
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v1
iget-object v0, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->movie:Lcom/googlecode/mp4parser/authoring/Movie;
invoke-static {v7, v0}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->getTimes(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)[J
move-result-object v2
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v0
invoke-virtual {v0}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v3
invoke-interface {v8}, Ljava/util/List;->size()I
move-result v0
new-array v0, v0, [[J
invoke-interface {v8, v0}, Ljava/util/List;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
move-result-object v0
move-object v5, v0
check-cast v5, [[J
move-object/from16 v0, p0
invoke-virtual/range {v0 .. v5}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->getCommonIndices([J[JJ[[J)[J
move-result-object v0
return-object v0
.line 83
.end local v8 # "times":Ljava/util/List;, "Ljava/util/List<[J>;"
:cond_4a
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Video Tracks need sync samples. Only tracks other than video may have no sync samples."
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 85
:cond_52
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v0
const-string/jumbo v2, "soun"
invoke-virtual {v2, v0}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v0
const-string v2, "There was absolutely no Track with sync samples. I can\'t work with that!"
if-eqz v0, :cond_197
.line 86
iget-object v0, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->referenceTrack:Lcom/googlecode/mp4parser/authoring/Track;
if-nez v0, :cond_96
.line 87
iget-object v0, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->movie:Lcom/googlecode/mp4parser/authoring/Movie;
invoke-virtual {v0}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:cond_6f
:goto_6f
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v5
if-nez v5, :cond_76
goto :goto_96
:cond_76
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v5
check-cast v5, Lcom/googlecode/mp4parser/authoring/Track;
.line 88
.local v5, "candidate":Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {v5}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v8
if-eqz v8, :cond_6f
invoke-interface {v5}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v8
invoke-virtual {v1, v8}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v8
if-eqz v8, :cond_6f
invoke-interface {v5}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v8
array-length v8, v8
if-lez v8, :cond_6f
.line 89
iput-object v5, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->referenceTrack:Lcom/googlecode/mp4parser/authoring/Track;
goto :goto_6f
.line 93
.end local v5 # "candidate":Lcom/googlecode/mp4parser/authoring/Track;
:cond_96
:goto_96
iget-object v0, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->referenceTrack:Lcom/googlecode/mp4parser/authoring/Track;
if-eqz v0, :cond_191
.line 96
invoke-virtual {v6, v0}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->sampleNumbers(Lcom/googlecode/mp4parser/authoring/Track;)[J
move-result-object v0
.line 98
.local v0, "refSyncSamples":[J
iget-object v1, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->referenceTrack:Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {v1}, Lcom/googlecode/mp4parser/authoring/Track;->getSamples()Ljava/util/List;
move-result-object v1
invoke-interface {v1}, Ljava/util/List;->size()I
move-result v1
.line 100
.local v1, "refSampleCount":I
array-length v2, v0
new-array v5, v2, [J
.line 101
.local v5, "syncSamples":[J
const-wide/32 v8, 0x2ee00
.line 102
.local v8, "minSampleRate":J
iget-object v2, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->movie:Lcom/googlecode/mp4parser/authoring/Movie;
invoke-virtual {v2}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v2
invoke-interface {v2}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v10
:goto_b8
invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-nez v2, :cond_c0
move v12, v1
goto :goto_10d
:cond_c0
invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/googlecode/mp4parser/authoring/Track;
.line 103
.local v2, "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
invoke-static/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->getFormat(Lcom/googlecode/mp4parser/authoring/Track;)Ljava/lang/String;
move-result-object v12
invoke-static {v2}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->getFormat(Lcom/googlecode/mp4parser/authoring/Track;)Ljava/lang/String;
move-result-object v13
invoke-virtual {v12, v13}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
if-eqz v12, :cond_18a
.line 104
invoke-interface {v2}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDescriptionBox()Lcom/coremedia/iso/boxes/SampleDescriptionBox;
move-result-object v12
invoke-virtual {v12}, Lcom/coremedia/iso/boxes/SampleDescriptionBox;->getSampleEntry()Lcom/coremedia/iso/boxes/sampleentry/AbstractSampleEntry;
move-result-object v12
check-cast v12, Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.line 105
.local v12, "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
invoke-virtual {v12}, Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;->getSampleRate()J
move-result-wide v13
cmp-long v15, v13, v8
if-gez v15, :cond_181
.line 106
invoke-virtual {v12}, Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;->getSampleRate()J
move-result-wide v13
.line 107
.end local v8 # "minSampleRate":J
.local v13, "minSampleRate":J
invoke-interface {v2}, Lcom/googlecode/mp4parser/authoring/Track;->getSamples()Ljava/util/List;
move-result-object v8
invoke-interface {v8}, Ljava/util/List;->size()I
move-result v8
int-to-long v8, v8
.line 108
.local v8, "sc":J
long-to-double v3, v8
move-object/from16 v18, v12
.end local v12 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.local v18, "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
int-to-double v11, v1
invoke-static {v3, v4}, Ljava/lang/Double;->isNaN(D)Z
invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v3, v11
.line 110
.local v3, "stretch":D
invoke-interface {v2}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDurations()[J
move-result-object v10
move v12, v1
move-object/from16 v19, v2
const/4 v11, 0x0
.end local v1 # "refSampleCount":I
.end local v2 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.local v12, "refSampleCount":I
.local v19, "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
aget-wide v1, v10, v11
.line 112
.local v1, "samplesPerFrame":J
const/4 v10, 0x0
.local v10, "i":I
:goto_109
array-length v11, v5
if-lt v10, v11, :cond_15c
.line 117
.end local v10 # "i":I
move-wide v8, v13
.line 121
.end local v1 # "samplesPerFrame":J
.end local v3 # "stretch":D
.end local v13 # "minSampleRate":J
.end local v18 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.end local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.local v8, "minSampleRate":J
:goto_10d
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDescriptionBox()Lcom/coremedia/iso/boxes/SampleDescriptionBox;
move-result-object v1
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/SampleDescriptionBox;->getSampleEntry()Lcom/coremedia/iso/boxes/sampleentry/AbstractSampleEntry;
move-result-object v1
check-cast v1, Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.line 123
.local v1, "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDurations()[J
move-result-object v2
const/4 v11, 0x0
aget-wide v3, v2, v11
.line 124
.local v3, "samplesPerFrame":J
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;->getSampleRate()J
move-result-wide v10
long-to-double v10, v10
long-to-double v13, v8
invoke-static {v10, v11}, Ljava/lang/Double;->isNaN(D)Z
invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v10, v13
.line 125
.local v10, "factor":D
invoke-static {v10, v11}, Ljava/lang/Math;->rint(D)D
move-result-wide v13
cmpl-double v2, v10, v13
if-nez v2, :cond_154
.line 128
const/4 v2, 0x0
.local v2, "i":I
:goto_134
array-length v13, v5
if-lt v2, v13, :cond_138
.line 131
.end local v2 # "i":I
return-object v5
.line 129
.restart local v2 # "i":I
:cond_138
aget-wide v13, v5, v2
long-to-double v13, v13
invoke-static {v13, v14}, Ljava/lang/Double;->isNaN(D)Z
mul-double v13, v13, v10
move-wide/from16 v17, v8
.end local v8 # "minSampleRate":J
.local v17, "minSampleRate":J
long-to-double v7, v3
invoke-static {v7, v8}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v13, v7
const-wide/high16 v7, 0x3ff0000000000000L # 1.0
add-double/2addr v13, v7
double-to-long v7, v13
aput-wide v7, v5, v2
.line 128
add-int/lit8 v2, v2, 0x1
move-object/from16 v7, p1
move-wide/from16 v8, v17
goto :goto_134
.line 126
.end local v2 # "i":I
.end local v17 # "minSampleRate":J
.restart local v8 # "minSampleRate":J
:cond_154
new-instance v2, Ljava/lang/RuntimeException;
const-string v7, "Sample rates must be a multiple of the lowest sample rate to create a correct file!"
invoke-direct {v2, v7}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v2
.line 113
.local v1, "samplesPerFrame":J
.local v3, "stretch":D
.local v8, "sc":J
.local v10, "i":I
.restart local v13 # "minSampleRate":J
.restart local v18 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.restart local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
:cond_15c
const/4 v11, 0x0
aget-wide v20, v0, v10
move v7, v12
const-wide/16 v15, 0x1
.end local v12 # "refSampleCount":I
.local v7, "refSampleCount":I
sub-long v11, v20, v15
long-to-double v11, v11
invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z
mul-double v11, v11, v3
move-wide/from16 v20, v3
.end local v3 # "stretch":D
.local v20, "stretch":D
long-to-double v3, v1
invoke-static {v3, v4}, Ljava/lang/Double;->isNaN(D)Z
mul-double v11, v11, v3
invoke-static {v11, v12}, Ljava/lang/Math;->ceil(D)D
move-result-wide v3
double-to-long v3, v3
.line 114
.local v3, "start":J
aput-wide v3, v5, v10
.line 112
.end local v3 # "start":J
add-int/lit8 v10, v10, 0x1
move v12, v7
move-wide/from16 v3, v20
move-object/from16 v7, p1
goto :goto_109
.line 105
.end local v7 # "refSampleCount":I
.end local v10 # "i":I
.end local v13 # "minSampleRate":J
.end local v18 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.end local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.end local v20 # "stretch":D
.local v1, "refSampleCount":I
.local v2, "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.local v8, "minSampleRate":J
.local v12, "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
:cond_181
move v7, v1
move-object/from16 v19, v2
move-object/from16 v18, v12
.end local v1 # "refSampleCount":I
.end local v2 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.end local v12 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.restart local v7 # "refSampleCount":I
.restart local v18 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.restart local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
move-object/from16 v7, p1
goto/16 :goto_b8
.line 103
.end local v7 # "refSampleCount":I
.end local v18 # "ase":Lcom/coremedia/iso/boxes/sampleentry/AudioSampleEntry;
.end local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.restart local v1 # "refSampleCount":I
.restart local v2 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
:cond_18a
move v7, v1
move-object/from16 v19, v2
.end local v1 # "refSampleCount":I
.end local v2 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
.restart local v7 # "refSampleCount":I
.restart local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
move-object/from16 v7, p1
goto/16 :goto_b8
.line 133
.end local v0 # "refSyncSamples":[J
.end local v5 # "syncSamples":[J
.end local v7 # "refSampleCount":I
.end local v8 # "minSampleRate":J
.end local v19 # "testTrack":Lcom/googlecode/mp4parser/authoring/Track;
:cond_191
new-instance v0, Ljava/lang/RuntimeException;
invoke-direct {v0, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.line 136
:cond_197
iget-object v0, v6, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->movie:Lcom/googlecode/mp4parser/authoring/Movie;
invoke-virtual {v0}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_1a1
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_1f9
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/googlecode/mp4parser/authoring/Track;
.line 137
.local v1, "candidate":Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {v1}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v3
if-eqz v3, :cond_1f6
invoke-interface {v1}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v3
array-length v3, v3
if-lez v3, :cond_1f6
.line 138
invoke-virtual {v6, v1}, Lcom/googlecode/mp4parser/authoring/builder/SyncSampleIntersectFinderImpl;->sampleNumbers(Lcom/googlecode/mp4parser/authoring/Track;)[J
move-result-object v3
.line 139
.local v3, "refSyncSamples":[J
invoke-interface {v1}, Lcom/googlecode/mp4parser/authoring/Track;->getSamples()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v4
.line 141
.local v4, "refSampleCount":I
array-length v0, v3
new-array v5, v0, [J
.line 142
.restart local v5 # "syncSamples":[J
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSamples()Ljava/util/List;
move-result-object v0
invoke-interface {v0}, Ljava/util/List;->size()I
move-result v0
int-to-long v7, v0
.line 143
.local v7, "sc":J
long-to-double v9, v7
int-to-double v11, v4
invoke-static {v9, v10}, Ljava/lang/Double;->isNaN(D)Z
invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z
div-double/2addr v9, v11
.line 145
.local v9, "stretch":D
const/4 v0, 0x0
.local v0, "i":I
:goto_1dc
array-length v2, v5
if-lt v0, v2, :cond_1e0
.line 150
.end local v0 # "i":I
return-object v5
.line 146
.restart local v0 # "i":I
:cond_1e0
aget-wide v11, v3, v0
const-wide/16 v13, 0x1
sub-long/2addr v11, v13
long-to-double v11, v11
invoke-static {v11, v12}, Ljava/lang/Double;->isNaN(D)Z
mul-double v11, v11, v9
invoke-static {v11, v12}, Ljava/lang/Math;->ceil(D)D
move-result-wide v11
double-to-long v11, v11
add-long/2addr v11, v13
.line 147
.local v11, "start":J
aput-wide v11, v5, v0
.line 145
.end local v11 # "start":J
add-int/lit8 v0, v0, 0x1
goto :goto_1dc
.line 137
.end local v0 # "i":I
.end local v3 # "refSyncSamples":[J
.end local v4 # "refSampleCount":I
.end local v5 # "syncSamples":[J
.end local v7 # "sc":J
.end local v9 # "stretch":D
:cond_1f6
const-wide/16 v13, 0x1
goto :goto_1a1
.line 153
.end local v1 # "candidate":Lcom/googlecode/mp4parser/authoring/Track;
:cond_1f9
new-instance v0, Ljava/lang/RuntimeException;
invoke-direct {v0, v2}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
goto :goto_200
:goto_1ff
throw v0
:goto_200
goto :goto_1ff
.end method