diff options
author | Teng-Hui Zhu <ztenghui@google.com> | 2012-09-23 14:58:04 -0700 |
---|---|---|
committer | Teng-Hui Zhu <ztenghui@google.com> | 2012-09-24 10:00:17 -0700 |
commit | 9fcbbdafbb20691e1d519ee1ab35f8a5889bef15 (patch) | |
tree | 8fc971e8e3fd520e5d60a3a77f757ae4f858b36f /isoparser/src/main/java/com | |
parent | d6072f0a479bb3bb6fe1ef2825b9ee6187827d96 (diff) | |
download | mp4parser-9fcbbdafbb20691e1d519ee1ab35f8a5889bef15.tar.gz |
Working around the aspectJ implementation.
Instead of fully implementing the aspectJ, here we just parse the Box at the
constructor.
The code originially use aspects to implement the parse on demand for various
member functions. However, we can actually just parse in the constructor since
trimming need to parse most of the boxes anyway.
bug:7093055
Change-Id: If53fa9a413d561be80dbd6c4c37b0a14a9cec610
Diffstat (limited to 'isoparser/src/main/java/com')
4 files changed, 9 insertions, 3 deletions
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/SampleEntry.java b/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/SampleEntry.java index a1a5486..f9eb071 100644 --- a/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/SampleEntry.java +++ b/isoparser/src/main/java/com/coremedia/iso/boxes/sampleentry/SampleEntry.java @@ -107,8 +107,9 @@ public abstract class SampleEntry extends AbstractBox implements ContainerBox { @Override public void parse(ReadableByteChannel readableByteChannel, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { - super.parse(readableByteChannel, header, contentSize, boxParser); this.boxParser = boxParser; + super.parse(readableByteChannel, header, contentSize, boxParser); + } diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/AbstractBox.java b/isoparser/src/main/java/com/googlecode/mp4parser/AbstractBox.java index f75bc1d..a2a4541 100644 --- a/isoparser/src/main/java/com/googlecode/mp4parser/AbstractBox.java +++ b/isoparser/src/main/java/com/googlecode/mp4parser/AbstractBox.java @@ -112,6 +112,10 @@ public abstract class AbstractBox implements Box { assert contentSize < Integer.MAX_VALUE; content = ChannelHelper.readFully(readableByteChannel, contentSize); } + if (isParsed() == false) { + parseDetails(); + } + } public void getBox(WritableByteChannel os) throws IOException { diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/AbstractContainerBox.java b/isoparser/src/main/java/com/googlecode/mp4parser/AbstractContainerBox.java index 93369f3..e1f944f 100644 --- a/isoparser/src/main/java/com/googlecode/mp4parser/AbstractContainerBox.java +++ b/isoparser/src/main/java/com/googlecode/mp4parser/AbstractContainerBox.java @@ -102,8 +102,8 @@ public abstract class AbstractContainerBox extends AbstractBox implements Contai @Override public void parse(ReadableByteChannel readableByteChannel, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { - super.parse(readableByteChannel, header, contentSize, boxParser); this.boxParser = boxParser; + super.parse(readableByteChannel, header, contentSize, boxParser); } @Override diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/FullContainerBox.java b/isoparser/src/main/java/com/googlecode/mp4parser/FullContainerBox.java index d16e47d..30eb285 100644 --- a/isoparser/src/main/java/com/googlecode/mp4parser/FullContainerBox.java +++ b/isoparser/src/main/java/com/googlecode/mp4parser/FullContainerBox.java @@ -92,8 +92,9 @@ public abstract class FullContainerBox extends AbstractFullBox implements Contai @Override public void parse(ReadableByteChannel readableByteChannel, ByteBuffer header, long contentSize, BoxParser boxParser) throws IOException { - super.parse(readableByteChannel, header, contentSize, boxParser); this.boxParser = boxParser; + super.parse(readableByteChannel, header, contentSize, boxParser); + } @Override |