From 9fcbbdafbb20691e1d519ee1ab35f8a5889bef15 Mon Sep 17 00:00:00 2001 From: Teng-Hui Zhu Date: Sun, 23 Sep 2012 14:58:04 -0700 Subject: 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 --- .../main/java/com/coremedia/iso/boxes/sampleentry/SampleEntry.java | 3 ++- isoparser/src/main/java/com/googlecode/mp4parser/AbstractBox.java | 4 ++++ .../src/main/java/com/googlecode/mp4parser/AbstractContainerBox.java | 2 +- .../src/main/java/com/googlecode/mp4parser/FullContainerBox.java | 3 ++- 4 files changed, 9 insertions(+), 3 deletions(-) (limited to 'isoparser') 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 -- cgit v1.2.3