DefaultMp4Builder$InterleaveChunkMdat.smali
.class Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;
.super Ljava/lang/Object;
.source "DefaultMp4Builder.java"
# interfaces
.implements Lcom/coremedia/iso/boxes/Box;
# annotations
.annotation system Ldalvik/annotation/EnclosingClass;
value = Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;
.end annotation
.annotation system Ldalvik/annotation/InnerClass;
accessFlags = 0x2
name = "InterleaveChunkMdat"
.end annotation
# instance fields
.field chunkList:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Ljava/util/List<",
"Lcom/googlecode/mp4parser/authoring/Sample;",
">;>;"
}
.end annotation
.end field
.field contentSize:J
.field parent:Lcom/coremedia/iso/boxes/Container;
.field final synthetic this$0:Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;
.field tracks:Ljava/util/List;
.annotation system Ldalvik/annotation/Signature;
value = {
"Ljava/util/List<",
"Lcom/googlecode/mp4parser/authoring/Track;",
">;"
}
.end annotation
.end field
# direct methods
.method static constructor <clinit>()V
.registers 1
return-void
.end method
.method private constructor <init>(Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;Lcom/googlecode/mp4parser/authoring/Movie;Ljava/util/Map;J)V
.registers 16
.param p2, "movie" # Lcom/googlecode/mp4parser/authoring/Movie;
.param p4, "contentSize" # J
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Lcom/googlecode/mp4parser/authoring/Movie;",
"Ljava/util/Map<",
"Lcom/googlecode/mp4parser/authoring/Track;",
"[I>;J)V"
}
.end annotation
.line 622
.local p3, "chunks":Ljava/util/Map;, "Ljava/util/Map<Lcom/googlecode/mp4parser/authoring/Track;[I>;"
iput-object p1, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->this$0:Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 617
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->chunkList:Ljava/util/List;
.line 623
iput-wide p4, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->contentSize:J
.line 624
invoke-virtual {p2}, Lcom/googlecode/mp4parser/authoring/Movie;->getTracks()Ljava/util/List;
move-result-object v0
iput-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->tracks:Ljava/util/List;
.line 626
const/4 v0, 0x0
.local v0, "i":I
:goto_15
invoke-interface {p3}, Ljava/util/Map;->values()Ljava/util/Collection;
move-result-object v1
invoke-interface {v1}, Ljava/util/Collection;->iterator()Ljava/util/Iterator;
move-result-object v1
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v1
check-cast v1, [I
array-length v1, v1
if-lt v0, v1, :cond_27
.line 640
.end local v0 # "i":I
return-void
.line 627
.restart local v0 # "i":I
:cond_27
iget-object v1, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->tracks:Ljava/util/List;
invoke-interface {v1}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v1
:goto_2d
invoke-interface {v1}, Ljava/util/Iterator;->hasNext()Z
move-result v2
if-nez v2, :cond_36
.line 626
add-int/lit8 v0, v0, 0x1
goto :goto_15
.line 627
:cond_36
invoke-interface {v1}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v2
check-cast v2, Lcom/googlecode/mp4parser/authoring/Track;
.line 629
.local v2, "track":Lcom/googlecode/mp4parser/authoring/Track;
invoke-interface {p3, v2}, Ljava/util/Map;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v3
check-cast v3, [I
.line 630
.local v3, "chunkSizes":[I
const-wide/16 v4, 0x0
.line 631
.local v4, "firstSampleOfChunk":J
const/4 v6, 0x0
.local v6, "j":I
:goto_45
if-lt v6, v0, :cond_65
.line 634
.end local v6 # "j":I
iget-object v6, p1, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;->track2Sample:Ljava/util/HashMap;
invoke-virtual {v6, v2}, Ljava/util/HashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
move-result-object v6
check-cast v6, Ljava/util/List;
invoke-static {v4, v5}, Lcom/googlecode/mp4parser/util/CastUtils;->l2i(J)I
move-result v7
aget v8, v3, v0
int-to-long v8, v8
add-long/2addr v8, v4
invoke-static {v8, v9}, Lcom/googlecode/mp4parser/util/CastUtils;->l2i(J)I
move-result v8
invoke-interface {v6, v7, v8}, Ljava/util/List;->subList(II)Ljava/util/List;
move-result-object v6
.line 635
.local v6, "chunk":Ljava/util/List;, "Ljava/util/List<Lcom/googlecode/mp4parser/authoring/Sample;>;"
iget-object v7, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->chunkList:Ljava/util/List;
invoke-interface {v7, v6}, Ljava/util/List;->add(Ljava/lang/Object;)Z
goto :goto_2d
.line 632
.local v6, "j":I
:cond_65
aget v7, v3, v6
int-to-long v7, v7
add-long/2addr v4, v7
.line 631
add-int/lit8 v6, v6, 0x1
goto :goto_45
.end method
.method synthetic constructor <init>(Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;Lcom/googlecode/mp4parser/authoring/Movie;Ljava/util/Map;JLcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;)V
.registers 7
.line 622
invoke-direct/range {p0 .. p5}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;-><init>(Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder;Lcom/googlecode/mp4parser/authoring/Movie;Ljava/util/Map;J)V
return-void
.end method
.method private isSmallBox(J)Z
.registers 8
.param p1, "contentSize" # J
.line 682
const-wide/16 v0, 0x8
add-long/2addr v0, p1
const-wide v2, 0x100000000L
cmp-long v4, v0, v2
if-gez v4, :cond_e
const/4 v0, 0x1
return v0
:cond_e
const/4 v0, 0x0
return v0
.end method
# virtual methods
.method public getBox(Ljava/nio/channels/WritableByteChannel;)V
.registers 9
.param p1, "writableByteChannel" # Ljava/nio/channels/WritableByteChannel;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 687
const/16 v0, 0x10
invoke-static {v0}, Ljava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
move-result-object v0
.line 688
.local v0, "bb":Ljava/nio/ByteBuffer;
invoke-virtual {p0}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->getSize()J
move-result-wide v1
.line 689
.local v1, "size":J
invoke-direct {p0, v1, v2}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->isSmallBox(J)Z
move-result v3
if-eqz v3, :cond_14
.line 690
invoke-static {v0, v1, v2}, Lcom/coremedia/iso/IsoTypeWriter;->writeUInt32(Ljava/nio/ByteBuffer;J)V
.line 691
goto :goto_19
.line 692
:cond_14
const-wide/16 v3, 0x1
invoke-static {v0, v3, v4}, Lcom/coremedia/iso/IsoTypeWriter;->writeUInt32(Ljava/nio/ByteBuffer;J)V
.line 694
:goto_19
const-string v3, "mdat"
invoke-static {v3}, Lcom/coremedia/iso/IsoFile;->fourCCtoBytes(Ljava/lang/String;)[B
move-result-object v3
invoke-virtual {v0, v3}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 695
invoke-direct {p0, v1, v2}, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->isSmallBox(J)Z
move-result v3
if-eqz v3, :cond_30
.line 696
const/16 v3, 0x8
new-array v3, v3, [B
invoke-virtual {v0, v3}, Ljava/nio/ByteBuffer;->put([B)Ljava/nio/ByteBuffer;
.line 697
goto :goto_33
.line 698
:cond_30
invoke-static {v0, v1, v2}, Lcom/coremedia/iso/IsoTypeWriter;->writeUInt64(Ljava/nio/ByteBuffer;J)V
.line 700
:goto_33
invoke-virtual {v0}, Ljava/nio/ByteBuffer;->rewind()Ljava/nio/Buffer;
.line 701
invoke-interface {p1, v0}, Ljava/nio/channels/WritableByteChannel;->write(Ljava/nio/ByteBuffer;)I
.line 702
iget-object v3, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->chunkList:Ljava/util/List;
invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_3f
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-nez v4, :cond_46
.line 708
return-void
.line 702
:cond_46
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Ljava/util/List;
.line 703
.local v4, "samples":Ljava/util/List;, "Ljava/util/List<Lcom/googlecode/mp4parser/authoring/Sample;>;"
invoke-interface {v4}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v5
:goto_50
invoke-interface {v5}, Ljava/util/Iterator;->hasNext()Z
move-result v6
if-nez v6, :cond_57
goto :goto_3f
:cond_57
invoke-interface {v5}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v6
check-cast v6, Lcom/googlecode/mp4parser/authoring/Sample;
.line 704
.local v6, "sample":Lcom/googlecode/mp4parser/authoring/Sample;
invoke-interface {v6, p1}, Lcom/googlecode/mp4parser/authoring/Sample;->writeTo(Ljava/nio/channels/WritableByteChannel;)V
goto :goto_50
.end method
.method public getDataOffset()J
.registers 8
.line 658
move-object v0, p0
.line 659
.local v0, "b":Ljava/lang/Object;
const-wide/16 v1, 0x10
.line 660
.local v1, "offset":J
nop
:goto_4
instance-of v3, v0, Lcom/coremedia/iso/boxes/Box;
if-nez v3, :cond_9
.line 669
return-wide v1
.line 661
:cond_9
move-object v3, v0
check-cast v3, Lcom/coremedia/iso/boxes/Box;
invoke-interface {v3}, Lcom/coremedia/iso/boxes/Box;->getParent()Lcom/coremedia/iso/boxes/Container;
move-result-object v3
invoke-interface {v3}, Lcom/coremedia/iso/boxes/Container;->getBoxes()Ljava/util/List;
move-result-object v3
invoke-interface {v3}, Ljava/util/List;->iterator()Ljava/util/Iterator;
move-result-object v3
:goto_18
invoke-interface {v3}, Ljava/util/Iterator;->hasNext()Z
move-result v4
if-nez v4, :cond_1f
goto :goto_28
:cond_1f
invoke-interface {v3}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v4
check-cast v4, Lcom/coremedia/iso/boxes/Box;
.line 662
.local v4, "box":Lcom/coremedia/iso/boxes/Box;
if-ne v0, v4, :cond_30
.line 663
nop
.line 667
.end local v4 # "box":Lcom/coremedia/iso/boxes/Box;
:goto_28
move-object v3, v0
check-cast v3, Lcom/coremedia/iso/boxes/Box;
invoke-interface {v3}, Lcom/coremedia/iso/boxes/Box;->getParent()Lcom/coremedia/iso/boxes/Container;
move-result-object v0
goto :goto_4
.line 665
.restart local v4 # "box":Lcom/coremedia/iso/boxes/Box;
:cond_30
invoke-interface {v4}, Lcom/coremedia/iso/boxes/Box;->getSize()J
move-result-wide v5
add-long/2addr v1, v5
goto :goto_18
.end method
.method public getOffset()J
.registers 3
.line 651
new-instance v0, Ljava/lang/RuntimeException;
const-string v1, "Doesn\'t have any meaning for programmatically created boxes"
invoke-direct {v0, v1}, Ljava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
throw v0
.end method
.method public getParent()Lcom/coremedia/iso/boxes/Container;
.registers 2
.line 643
iget-object v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->parent:Lcom/coremedia/iso/boxes/Container;
return-object v0
.end method
.method public getSize()J
.registers 5
.line 678
iget-wide v0, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->contentSize:J
const-wide/16 v2, 0x10
add-long/2addr v0, v2
return-wide v0
.end method
.method public getType()Ljava/lang/String;
.registers 2
.line 674
const-string v0, "mdat"
return-object v0
.end method
.method public parse(Lcom/googlecode/mp4parser/DataSource;Ljava/nio/ByteBuffer;JLcom/coremedia/iso/BoxParser;)V
.registers 6
.param p1, "dataSource" # Lcom/googlecode/mp4parser/DataSource;
.param p2, "header" # Ljava/nio/ByteBuffer;
.param p3, "contentSize" # J
.param p5, "boxParser" # Lcom/coremedia/iso/BoxParser;
.annotation system Ldalvik/annotation/Throws;
value = {
Ljava/io/IOException;
}
.end annotation
.line 655
return-void
.end method
.method public setParent(Lcom/coremedia/iso/boxes/Container;)V
.registers 2
.param p1, "parent" # Lcom/coremedia/iso/boxes/Container;
.line 647
iput-object p1, p0, Lcom/googlecode/mp4parser/authoring/builder/DefaultMp4Builder$InterleaveChunkMdat;->parent:Lcom/coremedia/iso/boxes/Container;
.line 648
return-void
.end method