diff options
author | Teng-Hui Zhu <ztenghui@google.com> | 2012-09-20 16:00:17 -0700 |
---|---|---|
committer | Teng-Hui Zhu <ztenghui@google.com> | 2012-09-20 16:25:28 -0700 |
commit | dd9eb897ee7c7b507cbdcf80263bb4b5de6966bf (patch) | |
tree | a0f3b67524d3e7beeca5e30878f349d58a65b705 /isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244 | |
parent | 8436c0da2d787a33439f14e9273ea647f346fa9b (diff) | |
download | mp4parser-dd9eb897ee7c7b507cbdcf80263bb4b5de6966bf.tar.gz |
Initial drop the compilable version of mp4parser, with least modification
bug:7093055
Change-Id: Id9b1b4ec91e26ae6e9fd75d86696aa30f30897b3
Diffstat (limited to 'isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244')
4 files changed, 639 insertions, 0 deletions
diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/all-wcprops b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/all-wcprops new file mode 100644 index 0000000..1f9ed7a --- /dev/null +++ b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/all-wcprops @@ -0,0 +1,11 @@ +K 25 +svn:wc:ra_dav:version-url +V 92 +/svn/!svn/ver/683/trunk/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244 +END +SegmentIndexBox.java +K 25 +svn:wc:ra_dav:version-url +V 113 +/svn/!svn/ver/683/trunk/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/SegmentIndexBox.java +END diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/entries b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/entries new file mode 100644 index 0000000..954a06a --- /dev/null +++ b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/entries @@ -0,0 +1,62 @@ +10 + +dir +778 +http://mp4parser.googlecode.com/svn/trunk/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244 +http://mp4parser.googlecode.com/svn + + + +2012-06-23T08:51:59.024275Z +683 +Sebastian.Annies@gmail.com + + + + + + + + + + + + + + +7decde4b-c250-0410-a0da-51896bc88be6 + +SegmentIndexBox.java +file + + + + +2012-09-14T17:27:50.567220Z +1d0e3a16184ab4820e3c6dc9ebdcea87 +2012-06-23T08:51:59.024275Z +683 +Sebastian.Annies@gmail.com + + + + + + + + + + + + + + + + + + + + + +8722 + diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/text-base/SegmentIndexBox.java.svn-base b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/text-base/SegmentIndexBox.java.svn-base new file mode 100644 index 0000000..638a87b --- /dev/null +++ b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/.svn/text-base/SegmentIndexBox.java.svn-base @@ -0,0 +1,283 @@ +package com.googlecode.mp4parser.boxes.threegpp26244; + +import com.coremedia.iso.IsoTypeReader; +import com.coremedia.iso.IsoTypeWriter; +import com.googlecode.mp4parser.AbstractFullBox; +import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitReaderBuffer; +import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitWriterBuffer; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * <pre> + * aligned(8) class SegmentIndexBox extends FullBox(‘sidx’, version, 0) { + * unsigned int(32) reference_ID; + * unsigned int(32) timescale; + * if (version==0) + * { + * unsigned int(32) earliest_presentation_time; + * unsigned int(32) first_offset; + * } + * else + * { + * unsigned int(64) earliest_presentation_time; + * unsigned int(64) first_offset; + * } + * unsigned int(16) reserved = 0; + * unsigned int(16) reference_count; + * for(i=1; i <= reference_count; i++) + * { + * bit (1) reference_type; + * unsigned int(31) referenced_size; + * unsigned int(32) subsegment_duration; + * bit(1) starts_with_SAP; + * unsigned int(3) SAP_type; + * unsigned int(28) SAP_delta_time; + * } + * } + * </pre> + */ +public class SegmentIndexBox extends AbstractFullBox { + public static final String TYPE = "sidx"; + List<Entry> entries = new ArrayList<Entry>(); + + long referenceId; + long timeScale; + long earliestPresentationTime; + long firstOffset; + int reserved; + + + public SegmentIndexBox() { + super(TYPE); + } + + @Override + protected long getContentSize() { + long size = 4; + size += 4; + size += 4; + size += getVersion() == 0 ? 8 : 16; + size += 2; // reserved + size += 2; // reference count + + size += entries.size() * 12; + + return size; + } + + @Override + protected void getContent(ByteBuffer byteBuffer) { + writeVersionAndFlags(byteBuffer); + IsoTypeWriter.writeUInt32(byteBuffer, referenceId); + IsoTypeWriter.writeUInt32(byteBuffer, timeScale); + if (getVersion() == 0) { + IsoTypeWriter.writeUInt32(byteBuffer, earliestPresentationTime); + IsoTypeWriter.writeUInt32(byteBuffer, firstOffset); + } else { + IsoTypeWriter.writeUInt64(byteBuffer, earliestPresentationTime); + IsoTypeWriter.writeUInt64(byteBuffer, firstOffset); + } + IsoTypeWriter.writeUInt16(byteBuffer, reserved); + IsoTypeWriter.writeUInt16(byteBuffer, entries.size()); + for (Entry entry : entries) { + BitWriterBuffer b = new BitWriterBuffer(byteBuffer); + b.writeBits(entry.getReferenceType(), 1); + b.writeBits(entry.getReferencedSize(), 31); + IsoTypeWriter.writeUInt32(byteBuffer, entry.getSubsegmentDuration()); + b = new BitWriterBuffer(byteBuffer); + b.writeBits(entry.getStartsWithSap(), 1); + b.writeBits(entry.getSapType(), 3); + b.writeBits(entry.getSapDeltaTime(), 28); + } + + } + + @Override + protected void _parseDetails(ByteBuffer content) { + parseVersionAndFlags(content); + referenceId = IsoTypeReader.readUInt32(content); + timeScale = IsoTypeReader.readUInt32(content); + if (getVersion() == 0) { + earliestPresentationTime = IsoTypeReader.readUInt32(content); + firstOffset = IsoTypeReader.readUInt32(content); + } else { + earliestPresentationTime = IsoTypeReader.readUInt64(content); + firstOffset = IsoTypeReader.readUInt64(content); + } + reserved = IsoTypeReader.readUInt16(content); + int numEntries = IsoTypeReader.readUInt16(content); + for (int i = 0; i < numEntries; i++) { + BitReaderBuffer b = new BitReaderBuffer(content); + Entry e = new Entry(); + e.setReferenceType((byte) b.readBits(1)); + e.setReferencedSize(b.readBits(31)); + e.setSubsegmentDuration(IsoTypeReader.readUInt32(content)); + b = new BitReaderBuffer(content); + e.setStartsWithSap((byte) b.readBits(1)); + e.setSapType((byte) b.readBits(3)); + e.setSapDeltaTime(b.readBits(28)); + entries.add(e); + } + } + + + public List<Entry> getEntries() { + return entries; + } + + public void setEntries(List<Entry> entries) { + this.entries = entries; + } + + public long getReferenceId() { + return referenceId; + } + + public void setReferenceId(long referenceId) { + this.referenceId = referenceId; + } + + public long getTimeScale() { + return timeScale; + } + + public void setTimeScale(long timeScale) { + this.timeScale = timeScale; + } + + public long getEarliestPresentationTime() { + return earliestPresentationTime; + } + + public void setEarliestPresentationTime(long earliestPresentationTime) { + this.earliestPresentationTime = earliestPresentationTime; + } + + public long getFirstOffset() { + return firstOffset; + } + + public void setFirstOffset(long firstOffset) { + this.firstOffset = firstOffset; + } + + public int getReserved() { + return reserved; + } + + public void setReserved(int reserved) { + this.reserved = reserved; + } + + public static class Entry { + byte referenceType; + int referencedSize; + long subsegmentDuration; + byte startsWithSap; + byte sapType; + int sapDeltaTime; + + public Entry() { + } + + public Entry(byte referenceType, int referencedSize, long subsegmentDuration, byte startsWithSap, byte sapType, int sapDeltaTime) { + this.referenceType = referenceType; + this.referencedSize = referencedSize; + this.subsegmentDuration = subsegmentDuration; + this.startsWithSap = startsWithSap; + this.sapType = sapType; + this.sapDeltaTime = sapDeltaTime; + } + + public byte getReferenceType() { + return referenceType; + } + + public void setReferenceType(byte referenceType) { + this.referenceType = referenceType; + } + + public int getReferencedSize() { + return referencedSize; + } + + public void setReferencedSize(int referencedSize) { + this.referencedSize = referencedSize; + } + + public long getSubsegmentDuration() { + return subsegmentDuration; + } + + public void setSubsegmentDuration(long subsegmentDuration) { + this.subsegmentDuration = subsegmentDuration; + } + + public byte getStartsWithSap() { + return startsWithSap; + } + + public void setStartsWithSap(byte startsWithSap) { + this.startsWithSap = startsWithSap; + } + + public byte getSapType() { + return sapType; + } + + public void setSapType(byte sapType) { + this.sapType = sapType; + } + + public int getSapDeltaTime() { + return sapDeltaTime; + } + + public void setSapDeltaTime(int sapDeltaTime) { + this.sapDeltaTime = sapDeltaTime; + } + + @Override + public String toString() { + return "Entry{" + + "referenceType=" + referenceType + + ", referencedSize=" + referencedSize + + ", subsegmentDuration=" + subsegmentDuration + + ", startsWithSap=" + startsWithSap + + ", sapType=" + sapType + + ", sapDeltaTime=" + sapDeltaTime + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Entry entry = (Entry) o; + + if (referenceType != entry.referenceType) return false; + if (referencedSize != entry.referencedSize) return false; + if (sapDeltaTime != entry.sapDeltaTime) return false; + if (sapType != entry.sapType) return false; + if (startsWithSap != entry.startsWithSap) return false; + if (subsegmentDuration != entry.subsegmentDuration) return false; + + return true; + } + + @Override + public int hashCode() { + int result = (int) referenceType; + result = 31 * result + referencedSize; + result = 31 * result + (int) (subsegmentDuration ^ (subsegmentDuration >>> 32)); + result = 31 * result + (int) startsWithSap; + result = 31 * result + (int) sapType; + result = 31 * result + sapDeltaTime; + return result; + } + } +} diff --git a/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/SegmentIndexBox.java b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/SegmentIndexBox.java new file mode 100644 index 0000000..638a87b --- /dev/null +++ b/isoparser/src/main/java/com/googlecode/mp4parser/boxes/threegpp26244/SegmentIndexBox.java @@ -0,0 +1,283 @@ +package com.googlecode.mp4parser.boxes.threegpp26244; + +import com.coremedia.iso.IsoTypeReader; +import com.coremedia.iso.IsoTypeWriter; +import com.googlecode.mp4parser.AbstractFullBox; +import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitReaderBuffer; +import com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitWriterBuffer; + +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.List; + +/** + * <pre> + * aligned(8) class SegmentIndexBox extends FullBox(‘sidx’, version, 0) { + * unsigned int(32) reference_ID; + * unsigned int(32) timescale; + * if (version==0) + * { + * unsigned int(32) earliest_presentation_time; + * unsigned int(32) first_offset; + * } + * else + * { + * unsigned int(64) earliest_presentation_time; + * unsigned int(64) first_offset; + * } + * unsigned int(16) reserved = 0; + * unsigned int(16) reference_count; + * for(i=1; i <= reference_count; i++) + * { + * bit (1) reference_type; + * unsigned int(31) referenced_size; + * unsigned int(32) subsegment_duration; + * bit(1) starts_with_SAP; + * unsigned int(3) SAP_type; + * unsigned int(28) SAP_delta_time; + * } + * } + * </pre> + */ +public class SegmentIndexBox extends AbstractFullBox { + public static final String TYPE = "sidx"; + List<Entry> entries = new ArrayList<Entry>(); + + long referenceId; + long timeScale; + long earliestPresentationTime; + long firstOffset; + int reserved; + + + public SegmentIndexBox() { + super(TYPE); + } + + @Override + protected long getContentSize() { + long size = 4; + size += 4; + size += 4; + size += getVersion() == 0 ? 8 : 16; + size += 2; // reserved + size += 2; // reference count + + size += entries.size() * 12; + + return size; + } + + @Override + protected void getContent(ByteBuffer byteBuffer) { + writeVersionAndFlags(byteBuffer); + IsoTypeWriter.writeUInt32(byteBuffer, referenceId); + IsoTypeWriter.writeUInt32(byteBuffer, timeScale); + if (getVersion() == 0) { + IsoTypeWriter.writeUInt32(byteBuffer, earliestPresentationTime); + IsoTypeWriter.writeUInt32(byteBuffer, firstOffset); + } else { + IsoTypeWriter.writeUInt64(byteBuffer, earliestPresentationTime); + IsoTypeWriter.writeUInt64(byteBuffer, firstOffset); + } + IsoTypeWriter.writeUInt16(byteBuffer, reserved); + IsoTypeWriter.writeUInt16(byteBuffer, entries.size()); + for (Entry entry : entries) { + BitWriterBuffer b = new BitWriterBuffer(byteBuffer); + b.writeBits(entry.getReferenceType(), 1); + b.writeBits(entry.getReferencedSize(), 31); + IsoTypeWriter.writeUInt32(byteBuffer, entry.getSubsegmentDuration()); + b = new BitWriterBuffer(byteBuffer); + b.writeBits(entry.getStartsWithSap(), 1); + b.writeBits(entry.getSapType(), 3); + b.writeBits(entry.getSapDeltaTime(), 28); + } + + } + + @Override + protected void _parseDetails(ByteBuffer content) { + parseVersionAndFlags(content); + referenceId = IsoTypeReader.readUInt32(content); + timeScale = IsoTypeReader.readUInt32(content); + if (getVersion() == 0) { + earliestPresentationTime = IsoTypeReader.readUInt32(content); + firstOffset = IsoTypeReader.readUInt32(content); + } else { + earliestPresentationTime = IsoTypeReader.readUInt64(content); + firstOffset = IsoTypeReader.readUInt64(content); + } + reserved = IsoTypeReader.readUInt16(content); + int numEntries = IsoTypeReader.readUInt16(content); + for (int i = 0; i < numEntries; i++) { + BitReaderBuffer b = new BitReaderBuffer(content); + Entry e = new Entry(); + e.setReferenceType((byte) b.readBits(1)); + e.setReferencedSize(b.readBits(31)); + e.setSubsegmentDuration(IsoTypeReader.readUInt32(content)); + b = new BitReaderBuffer(content); + e.setStartsWithSap((byte) b.readBits(1)); + e.setSapType((byte) b.readBits(3)); + e.setSapDeltaTime(b.readBits(28)); + entries.add(e); + } + } + + + public List<Entry> getEntries() { + return entries; + } + + public void setEntries(List<Entry> entries) { + this.entries = entries; + } + + public long getReferenceId() { + return referenceId; + } + + public void setReferenceId(long referenceId) { + this.referenceId = referenceId; + } + + public long getTimeScale() { + return timeScale; + } + + public void setTimeScale(long timeScale) { + this.timeScale = timeScale; + } + + public long getEarliestPresentationTime() { + return earliestPresentationTime; + } + + public void setEarliestPresentationTime(long earliestPresentationTime) { + this.earliestPresentationTime = earliestPresentationTime; + } + + public long getFirstOffset() { + return firstOffset; + } + + public void setFirstOffset(long firstOffset) { + this.firstOffset = firstOffset; + } + + public int getReserved() { + return reserved; + } + + public void setReserved(int reserved) { + this.reserved = reserved; + } + + public static class Entry { + byte referenceType; + int referencedSize; + long subsegmentDuration; + byte startsWithSap; + byte sapType; + int sapDeltaTime; + + public Entry() { + } + + public Entry(byte referenceType, int referencedSize, long subsegmentDuration, byte startsWithSap, byte sapType, int sapDeltaTime) { + this.referenceType = referenceType; + this.referencedSize = referencedSize; + this.subsegmentDuration = subsegmentDuration; + this.startsWithSap = startsWithSap; + this.sapType = sapType; + this.sapDeltaTime = sapDeltaTime; + } + + public byte getReferenceType() { + return referenceType; + } + + public void setReferenceType(byte referenceType) { + this.referenceType = referenceType; + } + + public int getReferencedSize() { + return referencedSize; + } + + public void setReferencedSize(int referencedSize) { + this.referencedSize = referencedSize; + } + + public long getSubsegmentDuration() { + return subsegmentDuration; + } + + public void setSubsegmentDuration(long subsegmentDuration) { + this.subsegmentDuration = subsegmentDuration; + } + + public byte getStartsWithSap() { + return startsWithSap; + } + + public void setStartsWithSap(byte startsWithSap) { + this.startsWithSap = startsWithSap; + } + + public byte getSapType() { + return sapType; + } + + public void setSapType(byte sapType) { + this.sapType = sapType; + } + + public int getSapDeltaTime() { + return sapDeltaTime; + } + + public void setSapDeltaTime(int sapDeltaTime) { + this.sapDeltaTime = sapDeltaTime; + } + + @Override + public String toString() { + return "Entry{" + + "referenceType=" + referenceType + + ", referencedSize=" + referencedSize + + ", subsegmentDuration=" + subsegmentDuration + + ", startsWithSap=" + startsWithSap + + ", sapType=" + sapType + + ", sapDeltaTime=" + sapDeltaTime + + '}'; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + + Entry entry = (Entry) o; + + if (referenceType != entry.referenceType) return false; + if (referencedSize != entry.referencedSize) return false; + if (sapDeltaTime != entry.sapDeltaTime) return false; + if (sapType != entry.sapType) return false; + if (startsWithSap != entry.startsWithSap) return false; + if (subsegmentDuration != entry.subsegmentDuration) return false; + + return true; + } + + @Override + public int hashCode() { + int result = (int) referenceType; + result = 31 * result + referencedSize; + result = 31 * result + (int) (subsegmentDuration ^ (subsegmentDuration >>> 32)); + result = 31 * result + (int) startsWithSap; + result = 31 * result + (int) sapType; + result = 31 * result + sapDeltaTime; + return result; + } + } +} |