MP4Builder.smali
.class public Lim/tpelyyftgw/messenger/video/MP4Builder;
.super Ljava/lang/Object;
.source "MP4Builder.java"
# annotations
.annotation system Ldalvik/annotation/MemberClasses;
value = {
Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
}
.end annotation
# instance fields
.field private currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
.field private dataOffset:J
.field private fc:Ljava/nio/channels/FileChannel;
.field private fos:Ljava/io/FileOutputStream;
.field private mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
.field private sizeBuffer:Ljava/nio/ByteBuffer;
.field private splitMdat:Z
.field private track2SampleSizes:Ljava/util/HashMap;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/HashMap<",
"Lim/tpelyyftgw/messenger/video/Track;",
"[J>;"
}
.end annotation
.end field
.field private wasFirstVideoFrame:Z
.field private writeNewMdat:Z
.field private wroteSinceLastMdat:J
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method public constructor <init>()V
.registers 4
.line 46
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 48
const/4 v0, 0x0
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
.line 49
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
.line 50
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
.line 51
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
.line 52
const-wide/16 v1, 0x0
iput-wide v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
.line 53
iput-wide v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
.line 54
const/4 v1, 0x1
iput-boolean v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->writeNewMdat:Z
.line 55
new-instance v1, Ljava/util/HashMap;
invoke-direct {v1}, Ljava/util/HashMap;-><init>()V
iput-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->track2SampleSizes:Ljava/util/HashMap;
.line 56
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->sizeBuffer:Ljava/nio/ByteBuffer;
return-void
.end method
.method private flushCurrentMdat()V
.registers 6
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 80
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v0}, Ljava/nio/channels/FileChannel;->position()J
move-result-wide v0
.line 81
.local v0, "oldPosition":J
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
iget-object v3, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->getOffset()J
move-result-wide v3
invoke-virtual {v2, v3, v4}, Ljava/nio/channels/FileChannel;->position(J)Ljava/nio/channels/FileChannel;
.line 82
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
iget-object v3, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v2, v3}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->getBox(Ljava/nio/channels/WritableByteChannel;)V
.line 83
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v2, v0, v1}, Ljava/nio/channels/FileChannel;->position(J)Ljava/nio/channels/FileChannel;
.line 84
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
const-wide/16 v3, 0x0
invoke-virtual {v2, v3, v4}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->setDataOffset(J)V
.line 85
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
invoke-virtual {v2, v3, v4}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->setContentSize(J)V
.line 86
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v2}, Ljava/io/FileOutputStream;->flush()V
.line 87
iget-object v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v2}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor;
move-result-object v2
invoke-virtual {v2}, Ljava/io/FileDescriptor;->sync()V
.line 88
return-void
.end method
.method public static gcd(JJ)J
.registers 7
.param p0, "a" # J
.param p2, "b" # J
.line 268
const-wide/16 v0, 0x0
cmp-long v2, p2, v0
if-nez v2, :cond_7
.line 269
return-wide p0
.line 271
:cond_7
rem-long v0, p0, p2
invoke-static {p2, p3, v0, v1}, Lim/tpelyyftgw/messenger/video/MP4Builder;->gcd(JJ)J
move-result-wide v0
return-wide v0
.end method
# virtual methods
.method public addTrack(Landroid/media/MediaFormat;Z)I
.registers 4
.param p1, "mediaFormat" # Landroid/media/MediaFormat;
.param p2, "isAudio" # Z
.line 167
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
invoke-virtual {v0, p1, p2}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->addTrack(Landroid/media/MediaFormat;Z)I
move-result v0
return v0
.end method
.method protected createCtts(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 10
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 389
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getSampleCompositions()[I
move-result-object v0
.line 390
.local v0, "sampleCompositions":[I
if-nez v0, :cond_7
.line 391
return-void
.line 393
:cond_7
const/4 v1, 0x0
.line 394
.local v1, "lastEntry":Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;
new-instance v2, Ljava/util/ArrayList;
invoke-direct {v2}, Ljava/util/ArrayList;-><init>()V
.line 396
.local v2, "entries":Ljava/util/List;, "Ljava/util/List<Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;>;"
const/4 v3, 0x0
.local v3, "a":I
:goto_e
array-length v4, v0
if-ge v3, v4, :cond_31
.line 397
aget v4, v0, v3
.line 398
.local v4, "offset":I
const/4 v5, 0x1
if-eqz v1, :cond_25
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;->getOffset()I
move-result v6
if-ne v6, v4, :cond_25
.line 399
invoke-virtual {v1}, Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;->getCount()I
move-result v6
add-int/2addr v6, v5
invoke-virtual {v1, v6}, Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;->setCount(I)V
goto :goto_2e
.line 401
:cond_25
new-instance v6, Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;
invoke-direct {v6, v5, v4}, Lcom/coremedia/iso/boxes/CompositionTimeToSample$Entry;-><init>(II)V
move-object v1, v6
.line 402
invoke-interface {v2, v1}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 396
.end local v4 # "offset":I
:goto_2e
add-int/lit8 v3, v3, 0x1
goto :goto_e
.line 405
.end local v3 # "a":I
:cond_31
new-instance v3, Lcom/coremedia/iso/boxes/CompositionTimeToSample;
invoke-direct {v3}, Lcom/coremedia/iso/boxes/CompositionTimeToSample;-><init>()V
.line 406
.local v3, "ctts":Lcom/coremedia/iso/boxes/CompositionTimeToSample;
invoke-virtual {v3, v2}, Lcom/coremedia/iso/boxes/CompositionTimeToSample;->setEntries(Ljava/util/List;)V
.line 407
invoke-virtual {p2, v3}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 408
return-void
.end method
.method protected createFileTypeBox()Lcom/coremedia/iso/boxes/FileTypeBox;
.registers 6
.line 194
new-instance v0, Ljava/util/LinkedList;
invoke-direct {v0}, Ljava/util/LinkedList;-><init>()V
.line 195
.local v0, "minorBrands":Ljava/util/LinkedList;, "Ljava/util/LinkedList<Ljava/lang/String;>;"
const-string v1, "isom"
invoke-virtual {v0, v1}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 196
const-string v2, "iso2"
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 197
const-string v2, "avc1"
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 198
const-string v2, "mp41"
invoke-virtual {v0, v2}, Ljava/util/LinkedList;->add(Ljava/lang/Object;)Z
.line 199
new-instance v2, Lcom/coremedia/iso/boxes/FileTypeBox;
const-wide/16 v3, 0x200
invoke-direct {v2, v1, v3, v4, v0}, Lcom/coremedia/iso/boxes/FileTypeBox;-><init>(Ljava/lang/String;JLjava/util/List;)V
return-object v2
.end method
.method public createMovie(Lim/tpelyyftgw/messenger/video/Mp4Movie;Z)Lim/tpelyyftgw/messenger/video/MP4Builder;
.registers 8
.param p1, "mp4Movie" # Lim/tpelyyftgw/messenger/video/Mp4Movie;
.param p2, "split" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 61
iput-object p1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
.line 63
new-instance v0, Ljava/io/FileOutputStream;
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getCacheFile()Ljava/io/File;
move-result-object v1
invoke-direct {v0, v1}, Ljava/io/FileOutputStream;-><init>(Ljava/io/File;)V
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
.line 64
invoke-virtual {v0}, Ljava/io/FileOutputStream;->getChannel()Ljava/nio/channels/FileChannel;
move-result-object v0
iput-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
.line 66
invoke-virtual {p0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createFileTypeBox()Lcom/coremedia/iso/boxes/FileTypeBox;
move-result-object v0
.line 67
.local v0, "fileTypeBox":Lcom/coremedia/iso/boxes/FileTypeBox;
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v0, v1}, Lcom/coremedia/iso/boxes/FileTypeBox;->getBox(Ljava/nio/channels/WritableByteChannel;)V
.line 68
iget-wide v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
invoke-virtual {v0}, Lcom/coremedia/iso/boxes/FileTypeBox;->getSize()J
move-result-wide v3
add-long/2addr v1, v3
iput-wide v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
.line 69
iget-wide v3, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
add-long/2addr v3, v1
iput-wide v3, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
.line 70
iput-boolean p2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->splitMdat:Z
.line 72
new-instance v1, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
const/4 v2, 0x0
invoke-direct {v1, p0, v2}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;-><init>(Lim/tpelyyftgw/messenger/video/MP4Builder;Lim/tpelyyftgw/messenger/video/MP4Builder$1;)V
iput-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
.line 74
const/4 v1, 0x4
invoke-static {v1}, Ljava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
move-result-object v1
iput-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->sizeBuffer:Ljava/nio/ByteBuffer;
.line 76
return-object p0
.end method
.method protected createMovieBox(Lim/tpelyyftgw/messenger/video/Mp4Movie;)Lcom/coremedia/iso/boxes/MovieBox;
.registers 14
.param p1, "movie" # Lim/tpelyyftgw/messenger/video/Mp4Movie;
.line 286
new-instance v0, Lcom/coremedia/iso/boxes/MovieBox;
invoke-direct {v0}, Lcom/coremedia/iso/boxes/MovieBox;-><init>()V
.line 287
.local v0, "movieBox":Lcom/coremedia/iso/boxes/MovieBox;
new-instance v1, Lcom/coremedia/iso/boxes/MovieHeaderBox;
invoke-direct {v1}, Lcom/coremedia/iso/boxes/MovieHeaderBox;-><init>()V
.line 289
.local v1, "mvhd":Lcom/coremedia/iso/boxes/MovieHeaderBox;
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 290
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 291
sget-object v2, Lcom/googlecode/mp4parser/util/Matrix;->ROTATE_0:Lcom/googlecode/mp4parser/util/Matrix;
invoke-virtual {v1, v2}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setMatrix(Lcom/googlecode/mp4parser/util/Matrix;)V
.line 292
invoke-virtual {p0, p1}, Lim/tpelyyftgw/messenger/video/MP4Builder;->getTimescale(Lim/tpelyyftgw/messenger/video/Mp4Movie;)J
move-result-wide v2
.line 293
.local v2, "movieTimeScale":J
const-wide/16 v4, 0x0
.line 295
.local v4, "duration":J
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v6
invoke-virtual {v6}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_2d
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v7
if-eqz v7, :cond_4e
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v7
check-cast v7, Lim/tpelyyftgw/messenger/video/Track;
.line 296
.local v7, "track":Lim/tpelyyftgw/messenger/video/Track;
invoke-virtual {v7}, Lim/tpelyyftgw/messenger/video/Track;->prepare()V
.line 297
invoke-virtual {v7}, Lim/tpelyyftgw/messenger/video/Track;->getDuration()J
move-result-wide v8
mul-long v8, v8, v2
invoke-virtual {v7}, Lim/tpelyyftgw/messenger/video/Track;->getTimeScale()I
move-result v10
int-to-long v10, v10
div-long/2addr v8, v10
.line 298
.local v8, "tracksDuration":J
cmp-long v10, v8, v4
if-lez v10, :cond_4d
.line 299
move-wide v4, v8
.line 301
.end local v7 # "track":Lim/tpelyyftgw/messenger/video/Track;
.end local v8 # "tracksDuration":J
:cond_4d
goto :goto_2d
.line 303
:cond_4e
invoke-virtual {v1, v4, v5}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setDuration(J)V
.line 304
invoke-virtual {v1, v2, v3}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setTimescale(J)V
.line 305
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v6
invoke-virtual {v6}, Ljava/util/ArrayList;->size()I
move-result v6
add-int/lit8 v6, v6, 0x1
int-to-long v6, v6
invoke-virtual {v1, v6, v7}, Lcom/coremedia/iso/boxes/MovieHeaderBox;->setNextTrackId(J)V
.line 307
invoke-virtual {v0, v1}, Lcom/coremedia/iso/boxes/MovieBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 308
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v6
invoke-virtual {v6}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v6
:goto_6d
invoke-interface {v6}, Ljava/util/Iterator;->hasNext()Z
move-result v7
if-eqz v7, :cond_81
invoke-interface {v6}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v7
check-cast v7, Lim/tpelyyftgw/messenger/video/Track;
.line 309
.restart local v7 # "track":Lim/tpelyyftgw/messenger/video/Track;
invoke-virtual {p0, v7, p1}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createTrackBox(Lim/tpelyyftgw/messenger/video/Track;Lim/tpelyyftgw/messenger/video/Mp4Movie;)Lcom/coremedia/iso/boxes/TrackBox;
move-result-object v8
invoke-virtual {v0, v8}, Lcom/coremedia/iso/boxes/MovieBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 310
.end local v7 # "track":Lim/tpelyyftgw/messenger/video/Track;
goto :goto_6d
.line 311
:cond_81
return-object v0
.end method
.method protected createSidx(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 3
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 488
return-void
.end method
.method protected createStbl(Lim/tpelyyftgw/messenger/video/Track;)Lcom/coremedia/iso/boxes/Box;
.registers 3
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.line 371
new-instance v0, Lcom/coremedia/iso/boxes/SampleTableBox;
invoke-direct {v0}, Lcom/coremedia/iso/boxes/SampleTableBox;-><init>()V
.line 373
.local v0, "stbl":Lcom/coremedia/iso/boxes/SampleTableBox;
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStsd(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 374
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStts(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 375
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createCtts(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 376
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStss(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 377
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStsc(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 378
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStsz(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 379
invoke-virtual {p0, p1, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStco(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.line 381
return-object v0
.end method
.method protected createStco(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 13
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 491
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 492
.local v0, "chunksOffsets":Ljava/util/ArrayList;, "Ljava/util/ArrayList<Ljava/lang/Long;>;"
const-wide/16 v1, -0x1
.line 493
.local v1, "lastOffset":J
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getSamples()Ljava/util/ArrayList;
move-result-object v3
invoke-virtual {v3}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_f
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-eqz v4, :cond_3d
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lim/tpelyyftgw/messenger/video/Sample;
.line 494
.local v4, "sample":Lim/tpelyyftgw/messenger/video/Sample;
invoke-virtual {v4}, Lim/tpelyyftgw/messenger/video/Sample;->getOffset()J
move-result-wide v5
.line 495
.local v5, "offset":J
const-wide/16 v7, -0x1
cmp-long v9, v1, v7
if-eqz v9, :cond_2b
cmp-long v9, v1, v5
if-eqz v9, :cond_2b
.line 496
const-wide/16 v1, -0x1
.line 498
:cond_2b
cmp-long v9, v1, v7
if-nez v9, :cond_36
.line 499
invoke-static {v5, v6}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
invoke-virtual {v0, v7}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
.line 501
:cond_36
invoke-virtual {v4}, Lim/tpelyyftgw/messenger/video/Sample;->getSize()J
move-result-wide v7
add-long v1, v5, v7
.line 502
.end local v4 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.end local v5 # "offset":J
goto :goto_f
.line 503
:cond_3d
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v3
new-array v3, v3, [J
.line 504
.local v3, "chunkOffsetsLong":[J
const/4 v4, 0x0
.local v4, "a":I
:goto_44
invoke-virtual {v0}, Ljava/util/ArrayList;->size()I
move-result v5
if-ge v4, v5, :cond_59
.line 505
invoke-virtual {v0, v4}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Ljava/lang/Long;
invoke-virtual {v5}, Ljava/lang/Long;->longValue()J
move-result-wide v5
aput-wide v5, v3, v4
.line 504
add-int/lit8 v4, v4, 0x1
goto :goto_44
.line 508
.end local v4 # "a":I
:cond_59
new-instance v4, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;
invoke-direct {v4}, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;-><init>()V
.line 509
.local v4, "stco":Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;
invoke-virtual {v4, v3}, Lcom/coremedia/iso/boxes/StaticChunkOffsetBox;->setChunkOffsets([J)V
.line 510
invoke-virtual {p2, v4}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 511
return-void
.end method
.method protected createStsc(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 30
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 439
new-instance v0, Lcom/coremedia/iso/boxes/SampleToChunkBox;
invoke-direct {v0}, Lcom/coremedia/iso/boxes/SampleToChunkBox;-><init>()V
.line 440
.local v0, "stsc":Lcom/coremedia/iso/boxes/SampleToChunkBox;
new-instance v1, Ljava/util/LinkedList;
invoke-direct {v1}, Ljava/util/LinkedList;-><init>()V
invoke-virtual {v0, v1}, Lcom/coremedia/iso/boxes/SampleToChunkBox;->setEntries(Ljava/util/List;)V
.line 443
const/4 v1, 0x1
.line 444
.local v1, "lastChunkNumber":I
const/4 v2, 0x0
.line 446
.local v2, "lastSampleCount":I
const/4 v3, -0x1
.line 448
.local v3, "previousWritedChunkCount":I
invoke-virtual/range {p1 .. p1}, Lim/tpelyyftgw/messenger/video/Track;->getSamples()Ljava/util/ArrayList;
move-result-object v4
invoke-virtual {v4}, Ljava/util/ArrayList;->size()I
move-result v4
.line 449
.local v4, "samplesCount":I
const/4 v5, 0x0
.local v5, "a":I
:goto_19
if-ge v5, v4, :cond_89
.line 450
invoke-virtual/range {p1 .. p1}, Lim/tpelyyftgw/messenger/video/Track;->getSamples()Ljava/util/ArrayList;
move-result-object v6
invoke-virtual {v6, v5}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v6
check-cast v6, Lim/tpelyyftgw/messenger/video/Sample;
.line 451
.local v6, "sample":Lim/tpelyyftgw/messenger/video/Sample;
invoke-virtual {v6}, Lim/tpelyyftgw/messenger/video/Sample;->getOffset()J
move-result-wide v7
.line 452
.local v7, "offset":J
invoke-virtual {v6}, Lim/tpelyyftgw/messenger/video/Sample;->getSize()J
move-result-wide v9
.line 454
.local v9, "size":J
add-long v11, v7, v9
.line 455
.local v11, "lastOffset":J
add-int/lit8 v2, v2, 0x1
.line 457
const/4 v13, 0x0
.line 458
.local v13, "write":Z
add-int/lit8 v14, v4, -0x1
if-eq v5, v14, :cond_4c
.line 459
invoke-virtual/range {p1 .. p1}, Lim/tpelyyftgw/messenger/video/Track;->getSamples()Ljava/util/ArrayList;
move-result-object v14
add-int/lit8 v15, v5, 0x1
invoke-virtual {v14, v15}, Ljava/util/ArrayList;->get(I)Ljava/lang/Object;
move-result-object v14
check-cast v14, Lim/tpelyyftgw/messenger/video/Sample;
.line 460
.local v14, "nextSample":Lim/tpelyyftgw/messenger/video/Sample;
invoke-virtual {v14}, Lim/tpelyyftgw/messenger/video/Sample;->getOffset()J
move-result-wide v15
cmp-long v17, v11, v15
if-eqz v17, :cond_4b
.line 461
const/4 v13, 0x1
.line 463
.end local v14 # "nextSample":Lim/tpelyyftgw/messenger/video/Sample;
:cond_4b
goto :goto_4d
.line 464
:cond_4c
const/4 v13, 0x1
.line 466
:goto_4d
if-eqz v13, :cond_7c
.line 467
if-eq v3, v2, :cond_70
.line 468
invoke-virtual {v0}, Lcom/coremedia/iso/boxes/SampleToChunkBox;->getEntries()Ljava/util/List;
move-result-object v14
new-instance v15, Lcom/coremedia/iso/boxes/SampleToChunkBox$Entry;
move/from16 v23, v3
move/from16 v22, v4
.end local v3 # "previousWritedChunkCount":I
.end local v4 # "samplesCount":I
.local v22, "samplesCount":I
.local v23, "previousWritedChunkCount":I
int-to-long v3, v1
move-object/from16 v24, v6
move-wide/from16 v25, v7
.end local v6 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.end local v7 # "offset":J
.local v24, "sample":Lim/tpelyyftgw/messenger/video/Sample;
.local v25, "offset":J
int-to-long v6, v2
const-wide/16 v20, 0x1
move-object v8, v15
move-wide/from16 v16, v3
move-wide/from16 v18, v6
invoke-direct/range {v15 .. v21}, Lcom/coremedia/iso/boxes/SampleToChunkBox$Entry;-><init>(JJJ)V
invoke-interface {v14, v8}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 469
move v3, v2
.end local v23 # "previousWritedChunkCount":I
.restart local v3 # "previousWritedChunkCount":I
goto :goto_78
.line 467
.end local v22 # "samplesCount":I
.end local v24 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.end local v25 # "offset":J
.restart local v4 # "samplesCount":I
.restart local v6 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.restart local v7 # "offset":J
:cond_70
move/from16 v23, v3
move/from16 v22, v4
move-object/from16 v24, v6
move-wide/from16 v25, v7
.line 471
.end local v4 # "samplesCount":I
.end local v6 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.end local v7 # "offset":J
.restart local v22 # "samplesCount":I
.restart local v24 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.restart local v25 # "offset":J
:goto_78
const/4 v2, 0x0
.line 472
add-int/lit8 v1, v1, 0x1
goto :goto_84
.line 466
.end local v22 # "samplesCount":I
.end local v24 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.end local v25 # "offset":J
.restart local v4 # "samplesCount":I
.restart local v6 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.restart local v7 # "offset":J
:cond_7c
move/from16 v23, v3
move/from16 v22, v4
move-object/from16 v24, v6
move-wide/from16 v25, v7
.line 449
.end local v4 # "samplesCount":I
.end local v6 # "sample":Lim/tpelyyftgw/messenger/video/Sample;
.end local v7 # "offset":J
.end local v9 # "size":J
.end local v13 # "write":Z
.restart local v22 # "samplesCount":I
:goto_84
add-int/lit8 v5, v5, 0x1
move/from16 v4, v22
goto :goto_19
.end local v11 # "lastOffset":J
.end local v22 # "samplesCount":I
.restart local v4 # "samplesCount":I
:cond_89
move/from16 v23, v3
.line 475
.end local v3 # "previousWritedChunkCount":I
.end local v5 # "a":I
.restart local v23 # "previousWritedChunkCount":I
move-object/from16 v3, p2
invoke-virtual {v3, v0}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 476
return-void
.end method
.method protected createStsd(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 4
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 385
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getSampleDescriptionBox()Lcom/coremedia/iso/boxes/SampleDescriptionBox;
move-result-object v0
invoke-virtual {p2, v0}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 386
return-void
.end method
.method protected createStss(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 5
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 430
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getSyncSamples()[J
move-result-object v0
.line 431
.local v0, "syncSamples":[J
if-eqz v0, :cond_14
array-length v1, v0
if-lez v1, :cond_14
.line 432
new-instance v1, Lcom/coremedia/iso/boxes/SyncSampleBox;
invoke-direct {v1}, Lcom/coremedia/iso/boxes/SyncSampleBox;-><init>()V
.line 433
.local v1, "stss":Lcom/coremedia/iso/boxes/SyncSampleBox;
invoke-virtual {v1, v0}, Lcom/coremedia/iso/boxes/SyncSampleBox;->setSampleNumber([J)V
.line 434
invoke-virtual {p2, v1}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 436
.end local v1 # "stss":Lcom/coremedia/iso/boxes/SyncSampleBox;
:cond_14
return-void
.end method
.method protected createStsz(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 5
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 479
new-instance v0, Lcom/coremedia/iso/boxes/SampleSizeBox;
invoke-direct {v0}, Lcom/coremedia/iso/boxes/SampleSizeBox;-><init>()V
.line 480
.local v0, "stsz":Lcom/coremedia/iso/boxes/SampleSizeBox;
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->track2SampleSizes:Ljava/util/HashMap;
invoke-virtual {v1, p1}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v1
check-cast v1, [J
invoke-virtual {v0, v1}, Lcom/coremedia/iso/boxes/SampleSizeBox;->setSampleSizes([J)V
.line 481
invoke-virtual {p2, v0}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 482
return-void
.end method
.method protected createStts(Lim/tpelyyftgw/messenger/video/Track;Lcom/coremedia/iso/boxes/SampleTableBox;)V
.registers 14
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "stbl" # Lcom/coremedia/iso/boxes/SampleTableBox;
.line 411
const/4 v0, 0x0
.line 412
.local v0, "lastEntry":Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;
new-instance v1, Ljava/util/ArrayList;
invoke-direct {v1}, Ljava/util/ArrayList;-><init>()V
.line 413
.local v1, "entries":Ljava/util/List;, "Ljava/util/List<Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;>;"
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getSampleDurations()[J
move-result-object v2
.line 415
.local v2, "deltas":[J
const/4 v3, 0x0
.local v3, "a":I
:goto_b
array-length v4, v2
if-ge v3, v4, :cond_31
.line 416
aget-wide v4, v2, v3
.line 417
.local v4, "delta":J
const-wide/16 v6, 0x1
if-eqz v0, :cond_25
invoke-virtual {v0}, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;->getDelta()J
move-result-wide v8
cmp-long v10, v8, v4
if-nez v10, :cond_25
.line 418
invoke-virtual {v0}, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;->getCount()J
move-result-wide v8
add-long/2addr v8, v6
invoke-virtual {v0, v8, v9}, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;->setCount(J)V
goto :goto_2e
.line 420
:cond_25
new-instance v8, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;
invoke-direct {v8, v6, v7, v4, v5}, Lcom/coremedia/iso/boxes/TimeToSampleBox$Entry;-><init>(JJ)V
move-object v0, v8
.line 421
invoke-interface {v1, v0}, Ljava/util/List;->add(Ljava/lang/Object;)Z
.line 415
.end local v4 # "delta":J
:goto_2e
add-int/lit8 v3, v3, 0x1
goto :goto_b
.line 424
.end local v3 # "a":I
:cond_31
new-instance v3, Lcom/coremedia/iso/boxes/TimeToSampleBox;
invoke-direct {v3}, Lcom/coremedia/iso/boxes/TimeToSampleBox;-><init>()V
.line 425
.local v3, "stts":Lcom/coremedia/iso/boxes/TimeToSampleBox;
invoke-virtual {v3, v1}, Lcom/coremedia/iso/boxes/TimeToSampleBox;->setEntries(Ljava/util/List;)V
.line 426
invoke-virtual {p2, v3}, Lcom/coremedia/iso/boxes/SampleTableBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 427
return-void
.end method
.method protected createTrackBox(Lim/tpelyyftgw/messenger/video/Track;Lim/tpelyyftgw/messenger/video/Mp4Movie;)Lcom/coremedia/iso/boxes/TrackBox;
.registers 13
.param p1, "track" # Lim/tpelyyftgw/messenger/video/Track;
.param p2, "movie" # Lim/tpelyyftgw/messenger/video/Mp4Movie;
.line 315
new-instance v0, Lcom/coremedia/iso/boxes/TrackBox;
invoke-direct {v0}, Lcom/coremedia/iso/boxes/TrackBox;-><init>()V
.line 316
.local v0, "trackBox":Lcom/coremedia/iso/boxes/TrackBox;
new-instance v1, Lcom/coremedia/iso/boxes/TrackHeaderBox;
invoke-direct {v1}, Lcom/coremedia/iso/boxes/TrackHeaderBox;-><init>()V
.line 318
.local v1, "tkhd":Lcom/coremedia/iso/boxes/TrackHeaderBox;
const/4 v2, 0x1
invoke-virtual {v1, v2}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setEnabled(Z)V
.line 319
invoke-virtual {v1, v2}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setInMovie(Z)V
.line 320
invoke-virtual {v1, v2}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setInPreview(Z)V
.line 321
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->isAudio()Z
move-result v3
if-eqz v3, :cond_20
.line 322
sget-object v3, Lcom/googlecode/mp4parser/util/Matrix;->ROTATE_0:Lcom/googlecode/mp4parser/util/Matrix;
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setMatrix(Lcom/googlecode/mp4parser/util/Matrix;)V
goto :goto_27
.line 324
:cond_20
invoke-virtual {p2}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getMatrix()Lcom/googlecode/mp4parser/util/Matrix;
move-result-object v3
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setMatrix(Lcom/googlecode/mp4parser/util/Matrix;)V
.line 326
:goto_27
const/4 v3, 0x0
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setAlternateGroup(I)V
.line 327
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getCreationTime()Ljava/util/Date;
move-result-object v4
invoke-virtual {v1, v4}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setCreationTime(Ljava/util/Date;)V
.line 328
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getDuration()J
move-result-wide v4
invoke-virtual {p0, p2}, Lim/tpelyyftgw/messenger/video/MP4Builder;->getTimescale(Lim/tpelyyftgw/messenger/video/Mp4Movie;)J
move-result-wide v6
mul-long v4, v4, v6
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getTimeScale()I
move-result v6
int-to-long v6, v6
div-long/2addr v4, v6
invoke-virtual {v1, v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setDuration(J)V
.line 329
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getHeight()I
move-result v4
int-to-double v4, v4
invoke-virtual {v1, v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setHeight(D)V
.line 330
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getWidth()I
move-result v4
int-to-double v4, v4
invoke-virtual {v1, v4, v5}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setWidth(D)V
.line 331
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setLayer(I)V
.line 332
new-instance v3, Ljava/util/Date;
invoke-direct {v3}, Ljava/util/Date;-><init>()V
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setModificationTime(Ljava/util/Date;)V
.line 333
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getTrackId()J
move-result-wide v3
const-wide/16 v5, 0x1
add-long/2addr v3, v5
invoke-virtual {v1, v3, v4}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setTrackId(J)V
.line 334
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getVolume()F
move-result v3
invoke-virtual {v1, v3}, Lcom/coremedia/iso/boxes/TrackHeaderBox;->setVolume(F)V
.line 336
invoke-virtual {v0, v1}, Lcom/coremedia/iso/boxes/TrackBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 338
new-instance v3, Lcom/coremedia/iso/boxes/MediaBox;
invoke-direct {v3}, Lcom/coremedia/iso/boxes/MediaBox;-><init>()V
.line 339
.local v3, "mdia":Lcom/coremedia/iso/boxes/MediaBox;
invoke-virtual {v0, v3}, Lcom/coremedia/iso/boxes/TrackBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 340
new-instance v4, Lcom/coremedia/iso/boxes/MediaHeaderBox;
invoke-direct {v4}, Lcom/coremedia/iso/boxes/MediaHeaderBox;-><init>()V
.line 341
.local v4, "mdhd":Lcom/coremedia/iso/boxes/MediaHeaderBox;
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getCreationTime()Ljava/util/Date;
move-result-object v5
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setCreationTime(Ljava/util/Date;)V
.line 342
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getDuration()J
move-result-wide v5
invoke-virtual {v4, v5, v6}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setDuration(J)V
.line 343
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getTimeScale()I
move-result v5
int-to-long v5, v5
invoke-virtual {v4, v5, v6}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setTimescale(J)V
.line 344
const-string v5, "eng"
invoke-virtual {v4, v5}, Lcom/coremedia/iso/boxes/MediaHeaderBox;->setLanguage(Ljava/lang/String;)V
.line 345
invoke-virtual {v3, v4}, Lcom/coremedia/iso/boxes/MediaBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 346
new-instance v5, Lcom/coremedia/iso/boxes/HandlerBox;
invoke-direct {v5}, Lcom/coremedia/iso/boxes/HandlerBox;-><init>()V
.line 347
.local v5, "hdlr":Lcom/coremedia/iso/boxes/HandlerBox;
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->isAudio()Z
move-result v6
if-eqz v6, :cond_ad
const-string v6, "SoundHandle"
goto :goto_af
:cond_ad
const-string v6, "VideoHandle"
:goto_af
invoke-virtual {v5, v6}, Lcom/coremedia/iso/boxes/HandlerBox;->setName(Ljava/lang/String;)V
.line 348
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getHandler()Ljava/lang/String;
move-result-object v6
invoke-virtual {v5, v6}, Lcom/coremedia/iso/boxes/HandlerBox;->setHandlerType(Ljava/lang/String;)V
.line 350
invoke-virtual {v3, v5}, Lcom/coremedia/iso/boxes/MediaBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 352
new-instance v6, Lcom/coremedia/iso/boxes/MediaInformationBox;
invoke-direct {v6}, Lcom/coremedia/iso/boxes/MediaInformationBox;-><init>()V
.line 353
.local v6, "minf":Lcom/coremedia/iso/boxes/MediaInformationBox;
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Track;->getMediaHeaderBox()Lcom/coremedia/iso/boxes/AbstractMediaHeaderBox;
move-result-object v7
invoke-virtual {v6, v7}, Lcom/coremedia/iso/boxes/MediaInformationBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 355
new-instance v7, Lcom/coremedia/iso/boxes/DataInformationBox;
invoke-direct {v7}, Lcom/coremedia/iso/boxes/DataInformationBox;-><init>()V
.line 356
.local v7, "dinf":Lcom/coremedia/iso/boxes/DataInformationBox;
new-instance v8, Lcom/coremedia/iso/boxes/DataReferenceBox;
invoke-direct {v8}, Lcom/coremedia/iso/boxes/DataReferenceBox;-><init>()V
.line 357
.local v8, "dref":Lcom/coremedia/iso/boxes/DataReferenceBox;
invoke-virtual {v7, v8}, Lcom/coremedia/iso/boxes/DataInformationBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 358
new-instance v9, Lcom/coremedia/iso/boxes/DataEntryUrlBox;
invoke-direct {v9}, Lcom/coremedia/iso/boxes/DataEntryUrlBox;-><init>()V
.line 359
.local v9, "url":Lcom/coremedia/iso/boxes/DataEntryUrlBox;
invoke-virtual {v9, v2}, Lcom/coremedia/iso/boxes/DataEntryUrlBox;->setFlags(I)V
.line 360
invoke-virtual {v8, v9}, Lcom/coremedia/iso/boxes/DataReferenceBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 361
invoke-virtual {v6, v7}, Lcom/coremedia/iso/boxes/MediaInformationBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 363
invoke-virtual {p0, p1}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createStbl(Lim/tpelyyftgw/messenger/video/Track;)Lcom/coremedia/iso/boxes/Box;
move-result-object v2
.line 364
.local v2, "stbl":Lcom/coremedia/iso/boxes/Box;
invoke-virtual {v6, v2}, Lcom/coremedia/iso/boxes/MediaInformationBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 365
invoke-virtual {v3, v6}, Lcom/coremedia/iso/boxes/MediaBox;->addBox(Lcom/coremedia/iso/boxes/Box;)V
.line 367
return-object v0
.end method
.method public finishMovie()V
.registers 8
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 171
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->getContentSize()J
move-result-wide v0
const-wide/16 v2, 0x0
cmp-long v4, v0, v2
if-eqz v4, :cond_f
.line 172
invoke-direct {p0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->flushCurrentMdat()V
.line 175
:cond_f
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v0
invoke-virtual {v0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v0
:goto_19
invoke-interface {v0}, Ljava/util/Iterator;->hasNext()Z
move-result v1
if-eqz v1, :cond_48
invoke-interface {v0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, Lim/tpelyyftgw/messenger/video/Track;
.line 176
.local v1, "track":Lim/tpelyyftgw/messenger/video/Track;
invoke-virtual {v1}, Lim/tpelyyftgw/messenger/video/Track;->getSamples()Ljava/util/ArrayList;
move-result-object v2
.line 177
.local v2, "samples":Ljava/util/List;, "Ljava/util/List<Lim/tpelyyftgw/messenger/video/Sample;>;"
invoke-interface {v2}, Ljava/util/List;->size()I
move-result v3
new-array v3, v3, [J
.line 178
.local v3, "sizes":[J
const/4 v4, 0x0
.local v4, "i":I
:goto_30
array-length v5, v3
if-ge v4, v5, :cond_42
.line 179
invoke-interface {v2, v4}, Ljava/util/List;->get(I)Ljava/lang/Object;
move-result-object v5
check-cast v5, Lim/tpelyyftgw/messenger/video/Sample;
invoke-virtual {v5}, Lim/tpelyyftgw/messenger/video/Sample;->getSize()J
move-result-wide v5
aput-wide v5, v3, v4
.line 178
add-int/lit8 v4, v4, 0x1
goto :goto_30
.line 181
.end local v4 # "i":I
:cond_42
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->track2SampleSizes:Ljava/util/HashMap;
invoke-virtual {v4, v1, v3}, Ljava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
.line 182
.end local v1 # "track":Lim/tpelyyftgw/messenger/video/Track;
.end local v2 # "samples":Ljava/util/List;, "Ljava/util/List<Lim/tpelyyftgw/messenger/video/Sample;>;"
.end local v3 # "sizes":[J
goto :goto_19
.line 184
:cond_48
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
invoke-virtual {p0, v0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->createMovieBox(Lim/tpelyyftgw/messenger/video/Mp4Movie;)Lcom/coremedia/iso/boxes/MovieBox;
move-result-object v0
.line 185
.local v0, "moov":Lcom/coremedia/iso/boxes/Box;
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-interface {v0, v1}, Lcom/coremedia/iso/boxes/Box;->getBox(Ljava/nio/channels/WritableByteChannel;)V
.line 186
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v1}, Ljava/io/FileOutputStream;->flush()V
.line 187
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v1}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor;
move-result-object v1
invoke-virtual {v1}, Ljava/io/FileDescriptor;->sync()V
.line 189
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v1}, Ljava/nio/channels/FileChannel;->close()V
.line 190
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v1}, Ljava/io/FileOutputStream;->close()V
.line 191
return-void
.end method
.method public getTimescale(Lim/tpelyyftgw/messenger/video/Mp4Movie;)J
.registers 8
.param p1, "mp4Movie" # Lim/tpelyyftgw/messenger/video/Mp4Movie;
.line 275
const-wide/16 v0, 0x0
.line 276
.local v0, "timescale":J
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v2
invoke-virtual {v2}, Ljava/util/ArrayList;->isEmpty()Z
move-result v2
if-nez v2, :cond_1f
.line 277
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v2
invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v2
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lim/tpelyyftgw/messenger/video/Track;
invoke-virtual {v2}, Lim/tpelyyftgw/messenger/video/Track;->getTimeScale()I
move-result v2
int-to-long v0, v2
.line 279
:cond_1f
invoke-virtual {p1}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->getTracks()Ljava/util/ArrayList;
move-result-object v2
invoke-virtual {v2}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object v2
:goto_27
invoke-interface {v2}, Ljava/util/Iterator;->hasNext()Z
move-result v3
if-eqz v3, :cond_3d
invoke-interface {v2}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v3
check-cast v3, Lim/tpelyyftgw/messenger/video/Track;
.line 280
.local v3, "track":Lim/tpelyyftgw/messenger/video/Track;
invoke-virtual {v3}, Lim/tpelyyftgw/messenger/video/Track;->getTimeScale()I
move-result v4
int-to-long v4, v4
invoke-static {v4, v5, v0, v1}, Lim/tpelyyftgw/messenger/video/MP4Builder;->gcd(JJ)J
move-result-wide v0
.line 281
.end local v3 # "track":Lim/tpelyyftgw/messenger/video/Track;
goto :goto_27
.line 282
:cond_3d
return-wide v0
.end method
.method public writeSampleData(ILjava/nio/ByteBuffer;Landroid/media/MediaCodec$BufferInfo;Z)J
.registers 14
.param p1, "trackIndex" # I
.param p2, "byteBuf" # Ljava/nio/ByteBuffer;
.param p3, "bufferInfo" # Landroid/media/MediaCodec$BufferInfo;
.param p4, "writeLength" # Z
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/lang/Exception;
}
.end annotation
.line 91
iget-boolean v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->writeNewMdat:Z
const/4 v1, 0x0
const-wide/16 v2, 0x0
if-eqz v0, :cond_28
.line 92
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
invoke-virtual {v0, v2, v3}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->setContentSize(J)V
.line 93
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v0, v4}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->getBox(Ljava/nio/channels/WritableByteChannel;)V
.line 94
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
iget-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
invoke-virtual {v0, v4, v5}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->setDataOffset(J)V
.line 95
iget-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
const-wide/16 v6, 0x10
add-long/2addr v4, v6
iput-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
.line 96
iget-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
add-long/2addr v4, v6
iput-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
.line 97
iput-boolean v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->writeNewMdat:Z
.line 128
:cond_28
iget-object v0, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->mdat:Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;
invoke-virtual {v0}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->getContentSize()J
move-result-wide v4
iget v6, p3, Landroid/media/MediaCodec$BufferInfo;->size:I
int-to-long v6, v6
add-long/2addr v4, v6
invoke-virtual {v0, v4, v5}, Lim/tpelyyftgw/messenger/video/MP4Builder$InterleaveChunkMdat;->setContentSize(J)V
.line 129
iget-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
iget v0, p3, Landroid/media/MediaCodec$BufferInfo;->size:I
int-to-long v6, v0
add-long/2addr v4, v6
iput-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
.line 131
const/4 v0, 0x0
.line 132
.local v0, "flush":Z
const-wide/32 v6, 0x8000
cmp-long v8, v4, v6
if-ltz v8, :cond_52
.line 133
iget-boolean v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->splitMdat:Z
if-eqz v4, :cond_4f
.line 134
invoke-direct {p0}, Lim/tpelyyftgw/messenger/video/MP4Builder;->flushCurrentMdat()V
.line 135
const/4 v4, 0x1
iput-boolean v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->writeNewMdat:Z
.line 137
:cond_4f
const/4 v0, 0x1
.line 138
iput-wide v2, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->wroteSinceLastMdat:J
.line 141
:cond_52
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->currentMp4Movie:Lim/tpelyyftgw/messenger/video/Mp4Movie;
iget-wide v5, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
invoke-virtual {v4, p1, v5, v6, p3}, Lim/tpelyyftgw/messenger/video/Mp4Movie;->addSample(IJLandroid/media/MediaCodec$BufferInfo;)V
.line 143
if-eqz p4, :cond_7d
.line 144
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->sizeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 145
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->sizeBuffer:Ljava/nio/ByteBuffer;
iget v5, p3, Landroid/media/MediaCodec$BufferInfo;->size:I
add-int/lit8 v5, v5, -0x4
invoke-virtual {v4, v5}, Ljava/nio/ByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
.line 146
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->sizeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v4, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 147
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
iget-object v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->sizeBuffer:Ljava/nio/ByteBuffer;
invoke-virtual {v1, v4}, Ljava/nio/channels/FileChannel;->write(Ljava/nio/ByteBuffer;)I
.line 149
iget v1, p3, Landroid/media/MediaCodec$BufferInfo;->offset:I
add-int/lit8 v1, v1, 0x4
invoke-virtual {p2, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
goto :goto_82
.line 151
:cond_7d
iget v1, p3, Landroid/media/MediaCodec$BufferInfo;->offset:I
invoke-virtual {p2, v1}, Ljava/nio/ByteBuffer;->position(I)Ljava/nio/Buffer;
.line 153
:goto_82
iget v1, p3, Landroid/media/MediaCodec$BufferInfo;->offset:I
iget v4, p3, Landroid/media/MediaCodec$BufferInfo;->size:I
add-int/2addr v1, v4
invoke-virtual {p2, v1}, Ljava/nio/ByteBuffer;->limit(I)Ljava/nio/Buffer;
.line 154
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v1, p2}, Ljava/nio/channels/FileChannel;->write(Ljava/nio/ByteBuffer;)I
.line 156
iget-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
iget v1, p3, Landroid/media/MediaCodec$BufferInfo;->size:I
int-to-long v6, v1
add-long/2addr v4, v6
iput-wide v4, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->dataOffset:J
.line 158
if-eqz v0, :cond_ae
.line 159
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v1}, Ljava/io/FileOutputStream;->flush()V
.line 160
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fos:Ljava/io/FileOutputStream;
invoke-virtual {v1}, Ljava/io/FileOutputStream;->getFD()Ljava/io/FileDescriptor;
move-result-object v1
invoke-virtual {v1}, Ljava/io/FileDescriptor;->sync()V
.line 161
iget-object v1, p0, Lim/tpelyyftgw/messenger/video/MP4Builder;->fc:Ljava/nio/channels/FileChannel;
invoke-virtual {v1}, Ljava/nio/channels/FileChannel;->position()J
move-result-wide v1
return-wide v1
.line 163
:cond_ae
return-wide v2
.end method