DefaultMp4Builder.smali
.class public Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Lcom/googlecode/mp4parser/authoring/builder/Mp4Builder;
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;
}
.end annotation
# static fields
.field public static final synthetic $assertionsDisabled:Z
.field private static LOG:Ljava/util/logging/Logger;
# instance fields
.field public STEPSIZE:I
.field public chunkOffsetBoxes:Ljava/util/Set;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/Set<",
"Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;",
">;"
}
.end annotation
.end field
.field private intersectionFinder:Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;
.field public track2Sample:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap<",
"Lcom/googlecode/mp4parser/authoring/Track;",
"Ljava/util/List<",
"Ljava/nio/ByteBuffer;",
">;>;"
}
.end annotation
.end field
.field public track2SampleSizes:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap<",
"Lcom/googlecode/mp4parser/authoring/Track;",
"[J>;"
}
.end annotation
.end field
# direct methods
.method public static constructor <clinit>()V
.registers 1
const-class v0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;
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/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
return-void
.end method
.method public constructor <init>()V
.registers 2
.line 1
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
const/16 v0, 0x40
.line 2
iput v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->STEPSIZE:I
.line 3
new-instance v0, Ljava/util/HashSet;
invoke-direct {v0}, Ljava/util/HashSet;-><init>()V
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->chunkOffsetBoxes:Ljava/util/Set;
.line 4
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2Sample:Ljava/util/HashMap;
.line 5
new-instance v0, Ljava/util/HashMap;
invoke-direct {v0}, Ljava/util/HashMap;-><init>()V
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2SampleSizes:Ljava/util/HashMap;
.line 6
new-instance v0, Lcom/googlecode/mp4parser/authoring/builder/TwoSecondIntersectionFinder;
invoke-direct {v0}, Lcom/googlecode/mp4parser/authoring/builder/TwoSecondIntersectionFinder;-><init>()V
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->intersectionFinder:Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;
return-void
.end method
.method private createMovieBox(Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/boxes/MovieBox;
.registers 16
.line 1
new-instance v0, Lcom/coremedia/iso/boxes/MovieBox;
invoke-direct {v0}, Lcom/coremedia/iso/boxes/MovieBox;-><init>()V
.line 2
new-instance v1, Lcom/coremedia/iso/boxes/MovieHeaderBox;
invoke-direct {v1}, Lcom/coremedia/iso/boxes/MovieHeaderBox;-><init>()V
.line 3
new-instance v2, Ljava/util/Date;
invoke-direct {v2}, Ljava/util/Date;-><init>()V
invoke-virtual {v1, v2}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setCreationTime(Ljava/util/Date;)V
.line 4
new-instance v2, Ljava/util/Date;
invoke-direct {v2}, Ljava/util/Date;-><init>()V
invoke-virtual {v1, v2}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setModificationTime(Ljava/util/Date;)V
.line 5
invoke-virtual {p0, p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->getTimescale(Lcom/googlecode/mp4parser/authoring/Movie;)J
move-result-wide v2
.line 6
invoke-virtual {p1}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v4
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v4
const-wide/16 v5, 0x0
move-wide v7, v5
:cond_29
:goto_29
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v9
if-eqz v9, :cond_4a
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v9
check-cast v9, Lcom/googlecode/mp4parser/authoring/Track;
.line 7
invoke-static {v9}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->getDuration(Lcom/googlecode/mp4parser/authoring/Track;)J
move-result-wide v10
mul-long v10, v10, v2
invoke-interface {v9}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v9
invoke-virtual {v9}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v12
div-long/2addr v10, v12
cmp-long v9, v10, v7
if-lez v9, :cond_29
move-wide v7, v10
goto :goto_29
.line 8
:cond_4a
invoke-virtual {v1, v7, v8}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setDuration(J)V
.line 9
invoke-virtual {v1, v2, v3}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setTimescale(J)V
.line 10
invoke-virtual {p1}, 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_58
:goto_58
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_7a
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lcom/googlecode/mp4parser/authoring/Track;
.line 11
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;->getTrackId()J
move-result-wide v7
cmp-long v4, v5, v7
if-gez v4, :cond_58
invoke-interface {v3}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v3
invoke-virtual {v3}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTrackId()J
move-result-wide v3
move-wide v5, v3
goto :goto_58
:cond_7a
const-wide/16 v2, 0x1
add-long/2addr v5, v2
.line 12
invoke-virtual {v1, v5, v6}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setNextTrackId(J)V
.line 13
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->getCreationTime()Ljava/util/Date;
move-result-object v2
invoke-static {v2}, Lcom/googlecode/mp4parser/authoring/DateHelper;->convert(Ljava/util/Date;)J
move-result-wide v2
const-wide v4, 0x100000000L
cmp-long v6, v2, v4
if-gez v6, :cond_a5
.line 14
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->getModificationTime()Ljava/util/Date;
move-result-object v2
invoke-static {v2}, Lcom/googlecode/mp4parser/authoring/DateHelper;->convert(Ljava/util/Date;)J
move-result-wide v2
cmp-long v6, v2, v4
if-gez v6, :cond_a5
.line 15
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->getDuration()J
move-result-wide v2
cmp-long v6, v2, v4
if-ltz v6, :cond_a9
:cond_a5
const/4 v2, 0x1
.line 16
invoke-virtual {v1, v2}, Lcom/googlecode/mp4parser/AbstractFullBox;->setVersion(I)V
.line 17
:cond_a9
invoke-virtual {v0, v1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 18
invoke-virtual {p1}, 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
:goto_b4
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_c8
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/googlecode/mp4parser/authoring/Track;
.line 19
invoke-direct {p0, v2, p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->createTrackBox(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/boxes/TrackBox;
move-result-object v2
invoke-virtual {v0, v2}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
goto :goto_b4
.line 20
:cond_c8
invoke-virtual {p0, p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->createUdta(Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/boxes/Box;
move-result-object p1
if-eqz p1, :cond_d1
.line 21
invoke-virtual {v0, p1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
:cond_d1
return-object v0
.end method
.method private createTrackBox(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/boxes/TrackBox;
.registers 27
move-object/from16 v0, p0
move-object/from16 v1, p1
move-object/from16 v2, p2
.line 1
sget-object v3, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
new-instance v4, Ljava/lang/StringBuilder;
invoke-direct {v4}, Ljava/lang/StringBuilder;-><init>()V
const-string v5, "Creating Mp4TrackImpl "
invoke-virtual {v4, v5}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v4, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v4}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-virtual {v3, v4}, Ljava/util/logging/Logger;->info(Ljava/lang/String;)V
.line 2
new-instance v3, Lcom/coremedia/iso/boxes/TrackBox;
invoke-direct {v3}, Lcom/coremedia/iso/boxes/TrackBox;-><init>()V
.line 3
new-instance v4, Lcom/coremedia/iso/boxes/TrackHeaderBox;
invoke-direct {v4}, Lcom/coremedia/iso/boxes/TrackHeaderBox;-><init>()V
.line 4
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->isEnabled()Z
move-result v5
.line 5
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->isInMovie()Z
move-result v6
if-eqz v6, :cond_32
add-int/lit8 v5, v5, 0x2
.line 6
:cond_32
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->isInPreview()Z
move-result v6
if-eqz v6, :cond_3a
add-int/lit8 v5, v5, 0x4
.line 7
:cond_3a
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->isInPoster()Z
move-result v6
if-eqz v6, :cond_42
add-int/lit8 v5, v5, 0x8
.line 8
:cond_42
invoke-virtual {v4, v5}, Lcom/googlecode/mp4parser/AbstractFullBox;->setFlags(I)V
.line 9
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getGroup()I
move-result v5
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setAlternateGroup(I)V
.line 10
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getCreationTime()Ljava/util/Date;
move-result-object v5
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setCreationTime(Ljava/util/Date;)V
.line 11
invoke-static/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->getDuration(Lcom/googlecode/mp4parser/authoring/Track;)J
move-result-wide v5
invoke-virtual {v0, v2}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->getTimescale(Lcom/googlecode/mp4parser/authoring/Movie;)J
move-result-wide v7
mul-long v7, v7, v5
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v5
div-long/2addr v7, v5
invoke-virtual {v4, v7, v8}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setDuration(J)V
.line 12
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getHeight()D
move-result-wide v5
invoke-virtual {v4, v5, v6}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setHeight(D)V
.line 13
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getWidth()D
move-result-wide v5
invoke-virtual {v4, v5, v6}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setWidth(D)V
.line 14
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getLayer()I
move-result v5
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setLayer(I)V
.line 15
new-instance v5, Ljava/util/Date;
invoke-direct {v5}, Ljava/util/Date;-><init>()V
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setModificationTime(Ljava/util/Date;)V
.line 16
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTrackId()J
move-result-wide v5
invoke-virtual {v4, v5, v6}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setTrackId(J)V
.line 17
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getVolume()F
move-result v5
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setVolume(F)V
.line 18
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v5
invoke-virtual {v5}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getMatrix()Lcom/googlecode/mp4parser/util/Matrix;
move-result-object v5
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setMatrix(Lcom/googlecode/mp4parser/util/Matrix;)V
.line 19
invoke-virtual {v4}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->getCreationTime()Ljava/util/Date;
move-result-object v5
invoke-static {v5}, Lcom/googlecode/mp4parser/authoring/DateHelper;->convert(Ljava/util/Date;)J
move-result-wide v5
const-wide v7, 0x100000000L
const/4 v9, 0x1
cmp-long v10, v5, v7
if-gez v10, :cond_e1
.line 20
invoke-virtual {v4}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->getModificationTime()Ljava/util/Date;
move-result-object v5
invoke-static {v5}, Lcom/googlecode/mp4parser/authoring/DateHelper;->convert(Ljava/util/Date;)J
move-result-wide v5
cmp-long v10, v5, v7
if-gez v10, :cond_e1
.line 21
invoke-virtual {v4}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->getDuration()J
move-result-wide v5
cmp-long v10, v5, v7
if-ltz v10, :cond_e4
.line 22
:cond_e1
invoke-virtual {v4, v9}, Lcom/googlecode/mp4parser/AbstractFullBox;->setVersion(I)V
.line 23
:cond_e4
invoke-virtual {v3, v4}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 24
new-instance v4, Lcom/coremedia/iso/boxes/MediaBox;
invoke-direct {v4}, Lcom/coremedia/iso/boxes/MediaBox;-><init>()V
.line 25
invoke-virtual {v3, v4}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 26
new-instance v5, Lcom/coremedia/iso/boxes/MediaHeaderBox;
invoke-direct {v5}, Lcom/coremedia/iso/boxes/MediaHeaderBox;-><init>()V
.line 27
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v6
invoke-virtual {v6}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getCreationTime()Ljava/util/Date;
move-result-object v6
invoke-virtual {v5, v6}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setCreationTime(Ljava/util/Date;)V
.line 28
new-instance v6, Ljava/util/Date;
invoke-direct {v6}, Ljava/util/Date;-><init>()V
invoke-virtual {v5, v6}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setModificationTime(Ljava/util/Date;)V
.line 29
invoke-static/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->getDuration(Lcom/googlecode/mp4parser/authoring/Track;)J
move-result-wide v6
invoke-virtual {v5, v6, v7}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setDuration(J)V
.line 30
invoke-interface/range {p1 .. 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
invoke-virtual {v5, v6, v7}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setTimescale(J)V
.line 31
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v6
invoke-virtual {v6}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getLanguage()Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setLanguage(Ljava/lang/String;)V
.line 32
invoke-virtual {v4, v5}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 33
new-instance v5, Lcom/coremedia/iso/boxes/HandlerBox;
invoke-direct {v5}, Lcom/coremedia/iso/boxes/HandlerBox;-><init>()V
.line 34
invoke-virtual {v4, v5}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 35
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getHandler()Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Lcom/coremedia/iso/boxes/HandlerBox;->setHandlerType(Ljava/lang/String;)V
.line 36
new-instance v5, Lcom/coremedia/iso/boxes/MediaInformationBox;
invoke-direct {v5}, Lcom/coremedia/iso/boxes/MediaInformationBox;-><init>()V
.line 37
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getMediaHeaderBox()Lcom/coremedia/iso/boxes/Box;
move-result-object v6
invoke-virtual {v5, v6}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 38
new-instance v6, Lcom/coremedia/iso/boxes/DataInformationBox;
invoke-direct {v6}, Lcom/coremedia/iso/boxes/DataInformationBox;-><init>()V
.line 39
new-instance v7, Lcom/coremedia/iso/boxes/DataReferenceBox;
invoke-direct {v7}, Lcom/coremedia/iso/boxes/DataReferenceBox;-><init>()V
.line 40
invoke-virtual {v6, v7}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 41
new-instance v8, Lcom/coremedia/iso/boxes/DataEntryUrlBox;
invoke-direct {v8}, Lcom/coremedia/iso/boxes/DataEntryUrlBox;-><init>()V
.line 42
invoke-virtual {v8, v9}, Lcom/googlecode/mp4parser/AbstractFullBox;->setFlags(I)V
.line 43
invoke-virtual {v7, v8}, Lcom/googlecode/mp4parser/FullContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 44
invoke-virtual {v5, v6}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 45
new-instance v6, Lcom/coremedia/iso/boxes/SampleTableBox;
invoke-direct {v6}, Lcom/coremedia/iso/boxes/SampleTableBox;-><init>()V
.line 46
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDescriptionBox()Lcom/coremedia/iso/boxes/SampleDescriptionBox;
move-result-object v7
invoke-virtual {v6, v7}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 47
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getDecodingTimeEntries()Ljava/util/List;
move-result-object v7
if-eqz v7, :cond_188
.line 48
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getDecodingTimeEntries()Ljava/util/List;
move-result-object v7
invoke-interface {v7}, Ljava/util/List;->isEmpty()Z
move-result v7
if-nez v7, :cond_188
.line 49
new-instance v7, Lcom/coremedia/iso/boxes/TimeToSampleBox;
invoke-direct {v7}, Lcom/coremedia/iso/boxes/TimeToSampleBox;-><init>()V
.line 50
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getDecodingTimeEntries()Ljava/util/List;
move-result-object v8
invoke-virtual {v7, v8}, Lcom/coremedia/iso/boxes/TimeToSampleBox;->setEntries(Ljava/util/List;)V
.line 51
invoke-virtual {v6, v7}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 52
:cond_188
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getCompositionTimeEntries()Ljava/util/List;
move-result-object v7
if-eqz v7, :cond_19f
.line 53
invoke-interface {v7}, Ljava/util/List;->isEmpty()Z
move-result v8
if-nez v8, :cond_19f
.line 54
new-instance v8, Lcom/coremedia/iso/boxes/CompositionTimeToSample;
invoke-direct {v8}, Lcom/coremedia/iso/boxes/CompositionTimeToSample;-><init>()V
.line 55
invoke-virtual {v8, v7}, Lcom/coremedia/iso/boxes/CompositionTimeToSample;->setEntries(Ljava/util/List;)V
.line 56
invoke-virtual {v6, v8}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 57
:cond_19f
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSyncSamples()[J
move-result-object v7
if-eqz v7, :cond_1b3
.line 58
array-length v8, v7
if-lez v8, :cond_1b3
.line 59
new-instance v8, Lcom/coremedia/iso/boxes/SyncSampleBox;
invoke-direct {v8}, Lcom/coremedia/iso/boxes/SyncSampleBox;-><init>()V
.line 60
invoke-virtual {v8, v7}, Lcom/coremedia/iso/boxes/SyncSampleBox;->setSampleNumber([J)V
.line 61
invoke-virtual {v6, v8}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 62
:cond_1b3
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDependencies()Ljava/util/List;
move-result-object v7
if-eqz v7, :cond_1d2
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDependencies()Ljava/util/List;
move-result-object v7
invoke-interface {v7}, Ljava/util/List;->isEmpty()Z
move-result v7
if-nez v7, :cond_1d2
.line 63
new-instance v7, Lcom/coremedia/iso/boxes/SampleDependencyTypeBox;
invoke-direct {v7}, Lcom/coremedia/iso/boxes/SampleDependencyTypeBox;-><init>()V
.line 64
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSampleDependencies()Ljava/util/List;
move-result-object v8
invoke-virtual {v7, v8}, Lcom/coremedia/iso/boxes/SampleDependencyTypeBox;->setEntries(Ljava/util/List;)V
.line 65
invoke-virtual {v6, v7}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 66
:cond_1d2
new-instance v7, Ljava/util/HashMap;
invoke-direct {v7}, Ljava/util/HashMap;-><init>()V
.line 67
invoke-virtual/range {p2 .. p2}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v8
invoke-interface {v8}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v8
:goto_1df
invoke-interface {v8}, Ljava/util/Iterator;->hasNext()Z
move-result v9
if-eqz v9, :cond_1f3
invoke-interface {v8}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v9
check-cast v9, Lcom/googlecode/mp4parser/authoring/Track;
.line 68
invoke-virtual {v0, v9, v2}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->getChunkSizes(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)[I
move-result-object v10
invoke-virtual {v7, v9, v10}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
goto :goto_1df
.line 69
:cond_1f3
invoke-virtual {v7, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v8
check-cast v8, [I
.line 70
new-instance v9, Lcom/coremedia/iso/boxes/SampleToChunkBox;
invoke-direct {v9}, Lcom/coremedia/iso/boxes/SampleToChunkBox;-><init>()V
.line 71
new-instance v10, Ljava/util/LinkedList;
invoke-direct {v10}, Ljava/util/LinkedList;-><init>()V
invoke-virtual {v9, v10}, Lcom/coremedia/iso/boxes/SampleToChunkBox;->setEntries(Ljava/util/List;)V
const-wide/32 v10, -0x80000000
const/4 v12, 0x0
.line 72
:goto_20a
array-length v13, v8
if-ge v12, v13, :cond_23b
.line 73
aget v13, v8, v12
int-to-long v13, v13
cmp-long v15, v10, v13
if-eqz v15, :cond_232
.line 74
invoke-virtual {v9}, Lcom/coremedia/iso/boxes/SampleToChunkBox;->getEntries()Ljava/util/List;
move-result-object v10
new-instance v11, Lcom/coremedia/iso/boxes/SampleToChunkBox$Entry;
add-int/lit8 v13, v12, 0x1
int-to-long v14, v13
aget v13, v8, v12
move-object/from16 v20, v3
int-to-long v2, v13
const-wide/16 v18, 0x1
move-object v13, v11
move-wide/from16 v16, v2
invoke-direct/range {v13 .. v19}, Lcom/coremedia/iso/boxes/SampleToChunkBox$Entry;-><init>(JJJ)V
invoke-interface {v10, v11}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 75
aget v2, v8, v12
int-to-long v2, v2
move-wide v10, v2
goto :goto_234
:cond_232
move-object/from16 v20, v3
:goto_234
add-int/lit8 v12, v12, 0x1
move-object/from16 v2, p2
move-object/from16 v3, v20
goto :goto_20a
:cond_23b
move-object/from16 v20, v3
.line 76
invoke-virtual {v6, v9}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 77
new-instance v2, Lcom/coremedia/iso/boxes/SampleSizeBox;
invoke-direct {v2}, Lcom/coremedia/iso/boxes/SampleSizeBox;-><init>()V
.line 78
iget-object v3, v0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2SampleSizes:Ljava/util/HashMap;
invoke-virtual {v3, v1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, [J
invoke-virtual {v2, v3}, Lcom/coremedia/iso/boxes/SampleSizeBox;->setSampleSizes([J)V
.line 79
invoke-virtual {v6, v2}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 80
new-instance v2, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;
invoke-direct {v2}, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;-><init>()V
.line 81
iget-object v3, v0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->chunkOffsetBoxes:Ljava/util/Set;
invoke-interface {v3, v2}, Ljava/util/Set;->add(Ljava/lang/Object;)Z
.line 82
array-length v3, v8
new-array v3, v3, [J
.line 83
sget-object v9, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
sget-object v10, Ljava/util/logging/Level;->FINE:Ljava/util/logging/Level;
invoke-virtual {v9, v10}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v9
const-string v10, "Calculating chunk offsets for track_"
if-eqz v9, :cond_284
.line 84
sget-object v9, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
.line 85
invoke-static {v10}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v11
.line 86
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v12
invoke-virtual {v12}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTrackId()J
move-result-wide v12
invoke-virtual {v11, v12, v13}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v11}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v11
invoke-virtual {v9, v11}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
:cond_284
const/4 v9, 0x0
const-wide/16 v11, 0x0
.line 87
:goto_287
array-length v13, v8
if-ge v9, v13, :cond_368
.line 88
sget-object v13, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
sget-object v14, Ljava/util/logging/Level;->FINER:Ljava/util/logging/Level;
invoke-virtual {v13, v14}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v13
if-eqz v13, :cond_2b9
.line 89
sget-object v13, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
.line 90
invoke-static {v10}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v14
.line 91
invoke-interface/range {p1 .. p1}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v15
move-object/from16 v16, v10
move-wide/from16 v17, v11
invoke-virtual {v15}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTrackId()J
move-result-wide v10
invoke-virtual {v14, v10, v11}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v10, " chunk "
invoke-virtual {v14, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v14, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v14}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v10
invoke-virtual {v13, v10}, Ljava/util/logging/Logger;->finer(Ljava/lang/String;)V
goto :goto_2bd
:cond_2b9
move-object/from16 v16, v10
move-wide/from16 v17, v11
.line 92
:goto_2bd
invoke-virtual/range {p2 .. p2}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v10
invoke-interface {v10}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v10
move-wide/from16 v11, v17
:goto_2c7
invoke-interface {v10}, Ljava/util/Iterator;->hasNext()Z
move-result v13
if-eqz v13, :cond_356
invoke-interface {v10}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v13
check-cast v13, Lcom/googlecode/mp4parser/authoring/Track;
.line 93
sget-object v14, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
sget-object v15, Ljava/util/logging/Level;->FINEST:Ljava/util/logging/Level;
invoke-virtual {v14, v15}, Ljava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
move-result v14
if-eqz v14, :cond_2fc
.line 94
sget-object v14, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
const-string v15, "Adding offsets of track_"
.line 95
invoke-static {v15}, Landroid/support/v4/media/c;->c(Ljava/lang/String;)Ljava/lang/StringBuilder;
move-result-object v15
.line 96
invoke-interface {v13}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v17
move-object/from16 v18, v4
move-object/from16 v19, v5
invoke-virtual/range {v17 .. v17}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTrackId()J
move-result-wide v4
invoke-virtual {v15, v4, v5}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
invoke-virtual {v15}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v4
invoke-virtual {v14, v4}, Ljava/util/logging/Logger;->finest(Ljava/lang/String;)V
goto :goto_300
:cond_2fc
move-object/from16 v18, v4
move-object/from16 v19, v5
.line 97
:goto_300
invoke-virtual {v7, v13}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v4
check-cast v4, [I
const/4 v5, 0x0
const-wide/16 v14, 0x0
:goto_309
if-ge v5, v9, :cond_31a
move-object/from16 v17, v7
.line 98
aget v7, v4, v5
move-object/from16 v21, v8
int-to-long v7, v7
add-long/2addr v14, v7
add-int/lit8 v5, v5, 0x1
move-object/from16 v7, v17
move-object/from16 v8, v21
goto :goto_309
:cond_31a
move-object/from16 v17, v7
move-object/from16 v21, v8
if-ne v13, v1, :cond_322
.line 99
aput-wide v11, v3, v9
.line 100
:cond_322
invoke-static {v14, v15}, Lcom/googlecode/mp4parser/util/CastUtils;->l2i(J)I
move-result v5
:goto_326
int-to-long v7, v5
aget v1, v4, v9
move-object/from16 v22, v2
int-to-long v1, v1
add-long/2addr v1, v14
cmp-long v23, v7, v1
if-gez v23, :cond_348
.line 101
iget-object v1, v0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2SampleSizes:Ljava/util/HashMap;
invoke-virtual {v1, v13}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, [J
if-eqz v1, :cond_341
.line 102
array-length v2, v1
if-lez v2, :cond_341
.line 103
aget-wide v7, v1, v5
add-long/2addr v11, v7
:cond_341
add-int/lit8 v5, v5, 0x1
move-object/from16 v1, p1
move-object/from16 v2, v22
goto :goto_326
:cond_348
move-object/from16 v1, p1
move-object/from16 v7, v17
move-object/from16 v4, v18
move-object/from16 v5, v19
move-object/from16 v8, v21
move-object/from16 v2, v22
goto/16 :goto_2c7
:cond_356
move-object/from16 v22, v2
move-object/from16 v18, v4
move-object/from16 v19, v5
move-object/from16 v17, v7
move-object/from16 v21, v8
add-int/lit8 v9, v9, 0x1
move-object/from16 v1, p1
move-object/from16 v10, v16
goto/16 :goto_287
:cond_368
move-object v1, v2
move-object/from16 v18, v4
move-object/from16 v19, v5
.line 104
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;->setChunkOffsets([J)V
.line 105
invoke-virtual {v6, v1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
move-object/from16 v1, v19
.line 106
invoke-virtual {v1, v6}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
move-object/from16 v2, v18
.line 107
invoke-virtual {v2, v1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
return-object v20
.end method
.method public static gcd(JJ)J
.registers 7
const-wide/16 v0, 0x0
cmp-long v2, p2, v0
if-nez v2, :cond_7
return-wide p0
:cond_7
rem-long/2addr p0, p2
invoke-static {p2, p3, p0, p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->gcd(JJ)J
move-result-wide p0
return-wide p0
.end method
.method public static getDuration(Lcom/googlecode/mp4parser/authoring/Track;)J
.registers 8
.line 1
invoke-interface {p0}, Lcom/googlecode/mp4parser/authoring/Track;->getDecodingTimeEntries()Ljava/util/List;
move-result-object p0
invoke-interface {p0}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p0
const-wide/16 v0, 0x0
:goto_a
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_22
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;
.line 2
invoke-virtual {v2}, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;->getCount()J
move-result-wide v3
invoke-virtual {v2}, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;->getDelta()J
move-result-wide v5
mul-long v5, v5, v3
add-long/2addr v0, v5
goto :goto_a
:cond_22
return-wide v0
.end method
.method private static sum([I)J
.registers 7
array-length v0, p0
const-wide/16 v1, 0x0
const/4 v3, 0x0
:goto_4
if-ge v3, v0, :cond_d
aget v4, p0, v3
int-to-long v4, v4
add-long/2addr v1, v4
add-int/lit8 v3, v3, 0x1
goto :goto_4
:cond_d
return-wide v1
.end method
# virtual methods
.method public build(Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/IsoFile;
.registers 10
.line 1
sget-object v0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->LOG:Ljava/util/logging/Logger;
new-instance v1, Ljava/lang/StringBuilder;
invoke-direct {v1}, Ljava/lang/StringBuilder;-><init>()V
const-string v2, "Creating movie "
invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v0, v1}, Ljava/util/logging/Logger;->fine(Ljava/lang/String;)V
.line 2
invoke-virtual {p1}, 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_1e
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
const/4 v2, 0x0
if-eqz v1, :cond_4e
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/googlecode/mp4parser/authoring/Track;
.line 3
invoke-interface {v1}, Lcom/googlecode/mp4parser/authoring/Track;->getSamples()Ljava/util/List;
move-result-object v3
.line 4
invoke-virtual {p0, v1, v3}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->putSamples(Lcom/googlecode/mp4parser/authoring/Track;Ljava/util/List;)Ljava/util/List;
.line 5
invoke-interface {v3}, Ljava/util/List;->size()I
move-result v4
new-array v5, v4, [J
:goto_38
if-ge v2, v4, :cond_4a
.line 6
invoke-interface {v3, v2}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v6
check-cast v6, Ljava/nio/ByteBuffer;
invoke-virtual {v6}, Ljava/nio/Buffer;->limit()I
move-result v6
int-to-long v6, v6
aput-wide v6, v5, v2
add-int/lit8 v2, v2, 0x1
goto :goto_38
.line 7
:cond_4a
invoke-virtual {p0, v1, v5}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->putSampleSizes(Lcom/googlecode/mp4parser/authoring/Track;[J)[J
goto :goto_1e
.line 8
:cond_4e
new-instance v0, Lcom/coremedia/iso/IsoFile;
invoke-direct {v0}, Lcom/coremedia/iso/IsoFile;-><init>()V
.line 9
new-instance v1, Ljava/util/LinkedList;
invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V
const-string v3, "isom"
.line 10
invoke-virtual {v1, v3}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
const-string v4, "iso2"
.line 11
invoke-virtual {v1, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
const-string v4, "avc1"
.line 12
invoke-virtual {v1, v4}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 13
new-instance v4, Lcom/coremedia/iso/boxes/FileTypeBox;
const-wide/16 v5, 0x0
invoke-direct {v4, v3, v5, v6, v1}, Lcom/coremedia/iso/boxes/FileTypeBox;-><init>(Ljava/lang/String;JLjava/util/List;)V
invoke-virtual {v0, v4}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 14
invoke-direct {p0, p1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->createMovieBox(Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/boxes/MovieBox;
move-result-object v1
invoke-virtual {v0, v1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 15
new-instance v1, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;
const/4 v3, 0x0
invoke-direct {v1, p0, p1, v3}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;-><init>(Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;Lcom/googlecode/mp4parser/authoring/Movie;Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$1;)V
.line 16
invoke-virtual {v0, v1}, Lcom/googlecode/mp4parser/AbstractContainerBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 17
invoke-virtual {v1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->getDataOffset()J
move-result-wide v3
.line 18
iget-object p1, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->chunkOffsetBoxes:Ljava/util/Set;
invoke-interface {p1}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object p1
:cond_8b
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_a7
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;
.line 19
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;->getChunkOffsets()[J
move-result-object v1
const/4 v5, 0x0
.line 20
:goto_9c
array-length v6, v1
if-ge v5, v6, :cond_8b
.line 21
aget-wide v6, v1, v5
add-long/2addr v6, v3
aput-wide v6, v1, v5
add-int/lit8 v5, v5, 0x1
goto :goto_9c
:cond_a7
return-object v0
.end method
.method public createUdta(Lcom/googlecode/mp4parser/authoring/Movie;)Lcom/coremedia/iso/boxes/Box;
.registers 2
const/4 p1, 0x0
return-object p1
.end method
.method public getChunkSizes(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)[I
.registers 13
.line 1
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->intersectionFinder:Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;
invoke-interface {v0, p1, p2}, Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;->sampleNumbers(Lcom/googlecode/mp4parser/authoring/Track;Lcom/googlecode/mp4parser/authoring/Movie;)[J
move-result-object p2
.line 2
array-length v0, p2
new-array v0, v0, [I
const/4 v1, 0x0
.line 3
:goto_a
array-length v2, p2
if-ge v1, v2, :cond_2e
.line 4
aget-wide v2, p2, v1
const-wide/16 v4, 0x1
sub-long/2addr v2, v4
.line 5
array-length v6, p2
add-int/lit8 v7, v1, 0x1
if-ne v6, v7, :cond_21
.line 6
invoke-interface {p1}, Lcom/googlecode/mp4parser/authoring/Track;->getSamples()Ljava/util/List;
move-result-object v4
invoke-interface {v4}, Ljava/util/List;->size()I
move-result v4
int-to-long v4, v4
goto :goto_25
.line 7
:cond_21
aget-wide v8, p2, v7
sub-long v4, v8, v4
:goto_25
sub-long/2addr v4, v2
.line 8
invoke-static {v4, v5}, Lcom/googlecode/mp4parser/util/CastUtils;->l2i(J)I
move-result v2
aput v2, v0, v1
move v1, v7
goto :goto_a
.line 9
:cond_2e
iget-object p2, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2Sample:Ljava/util/HashMap;
invoke-virtual {p2, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Ljava/util/List;
if-eqz p1, :cond_3b
.line 10
invoke-interface {p1}, Ljava/util/List;->size()I
:cond_3b
return-object v0
.end method
.method public getFragmentIntersectionFinder()Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;
.registers 3
new-instance v0, Ljava/lang/UnsupportedOperationException;
const-string v1, "No fragment intersection finder in default MP4 builder!"
invoke-direct {v0, v1}, Ljava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getTimescale(Lcom/googlecode/mp4parser/authoring/Movie;)J
.registers 6
.line 1
invoke-virtual {p1}, 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
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {v0}, 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 v0
.line 2
invoke-virtual {p1}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object p1
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_1e
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-eqz v2, :cond_37
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/googlecode/mp4parser/authoring/Track;
.line 3
invoke-interface {v2}, Lcom/googlecode/mp4parser/authoring/Track;->getTrackMetaData()Lcom/googlecode/mp4parser/authoring/TrackMetaData;
move-result-object v2
invoke-virtual {v2}, Lcom/googlecode/mp4parser/authoring/TrackMetaData;->getTimescale()J
move-result-wide v2
invoke-static {v2, v3, v0, v1}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->gcd(JJ)J
move-result-wide v0
goto :goto_1e
:cond_37
return-wide v0
.end method
.method public putSampleSizes(Lcom/googlecode/mp4parser/authoring/Track;[J)[J
.registers 4
if-nez p2, :cond_5
const/4 p2, 0x0
new-array p2, p2, [J
:cond_5
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2SampleSizes:Ljava/util/HashMap;
invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, [J
return-object p1
.end method
.method public putSamples(Lcom/googlecode/mp4parser/authoring/Track;Ljava/util/List;)Ljava/util/List;
.registers 4
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/googlecode/mp4parser/authoring/Track;",
"Ljava/util/List<",
"Ljava/nio/ByteBuffer;",
">;)",
"Ljava/util/List<",
"Ljava/nio/ByteBuffer;",
">;"
}
.end annotation
if-nez p2, :cond_7
.line 1
new-instance p2, Ljava/util/ArrayList;
invoke-direct {p2}, Ljava/util/ArrayList;-><init>()V
.line 2
:cond_7
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2Sample:Ljava/util/HashMap;
invoke-virtual {v0, p1, p2}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
move-result-object p1
check-cast p1, Ljava/util/List;
return-object p1
.end method
.method public setIntersectionFinder(Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;)V
.registers 2
iput-object p1, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->intersectionFinder:Lcom/googlecode/mp4parser/authoring/builder/FragmentIntersectionFinder;
return-void
.end method
.method public unifyAdjacentBuffers(Ljava/util/List;)Ljava/util/List;
.registers 8
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/List<",
"Ljava/nio/ByteBuffer;",
">;)",
"Ljava/util/List<",
"Ljava/nio/ByteBuffer;",
">;"
}
.end annotation
.line 1
new-instance v0, Ljava/util/ArrayList;
invoke-interface {p1}, Ljava/util/List;->size()I
move-result v1
invoke-direct {v0, v1}, Ljava/util/ArrayList;-><init>(I)V
.line 2
invoke-interface {p1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object p1
:goto_d
invoke-interface {p1}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_c3
invoke-interface {p1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Ljava/nio/ByteBuffer;
.line 3
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v2
add-int/lit8 v2, v2, -0x1
if-ltz v2, :cond_81
.line 4
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->hasArray()Z
move-result v3
if-eqz v3, :cond_81
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/nio/ByteBuffer;
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->hasArray()Z
move-result v3
if-eqz v3, :cond_81
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v3
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v4
if-ne v3, v4, :cond_81
.line 5
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/nio/ByteBuffer;
invoke-virtual {v3}, Ljava/nio/ByteBuffer;->arrayOffset()I
move-result v3
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/Buffer;->limit()I
move-result v4
add-int/2addr v4, v3
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->arrayOffset()I
move-result v3
if-ne v4, v3, :cond_81
.line 6
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->remove(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/nio/ByteBuffer;
.line 7
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->array()[B
move-result-object v3
invoke-virtual {v2}, Ljava/nio/ByteBuffer;->arrayOffset()I
move-result v4
invoke-virtual {v2}, Ljava/nio/Buffer;->limit()I
move-result v2
invoke-virtual {v1}, Ljava/nio/Buffer;->limit()I
move-result v1
add-int/2addr v1, v2
invoke-static {v3, v4, v1}, Ljava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer;
move-result-object v1
invoke-virtual {v1}, Ljava/nio/ByteBuffer;->slice()Ljava/nio/ByteBuffer;
move-result-object v1
.line 8
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto :goto_d
:cond_81
if-ltz v2, :cond_be
.line 9
instance-of v3, v1, Ljava/nio/MappedByteBuffer;
if-eqz v3, :cond_be
.line 10
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
instance-of v3, v3, Ljava/nio/MappedByteBuffer;
if-eqz v3, :cond_be
.line 11
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v3
check-cast v3, Ljava/nio/ByteBuffer;
invoke-virtual {v3}, Ljava/nio/Buffer;->limit()I
move-result v3
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/nio/ByteBuffer;
invoke-virtual {v4}, Ljava/nio/Buffer;->capacity()I
move-result v4
invoke-virtual {v1}, Ljava/nio/Buffer;->capacity()I
move-result v5
sub-int/2addr v4, v5
if-ne v3, v4, :cond_be
.line 12
invoke-virtual {v0, v2}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v2
check-cast v2, Ljava/nio/ByteBuffer;
.line 13
invoke-virtual {v1}, Ljava/nio/Buffer;->limit()I
move-result v1
invoke-virtual {v2}, Ljava/nio/Buffer;->limit()I
move-result v3
add-int/2addr v3, v1
invoke-virtual {v2, v3}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;
goto/16 :goto_d
.line 14
:cond_be
invoke-virtual {v0, v1}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
goto/16 :goto_d
:cond_c3
return-object v0
.end method