1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.googlecode.mp4parser.boxes.threegpp26244; 2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.IsoTypeReader; 4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.IsoTypeWriter; 5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.googlecode.mp4parser.AbstractFullBox; 6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitReaderBuffer; 7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.googlecode.mp4parser.boxes.mp4.objectdescriptors.BitWriterBuffer; 8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.nio.ByteBuffer; 10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.util.ArrayList; 11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.util.List; 12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/** 14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * <pre> 15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * aligned(8) class SegmentIndexBox extends FullBox(‘sidx’, version, 0) { 16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(32) reference_ID; 17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(32) timescale; 18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * if (version==0) 19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * { 20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(32) earliest_presentation_time; 21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(32) first_offset; 22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * } 23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * else 24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * { 25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(64) earliest_presentation_time; 26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(64) first_offset; 27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * } 28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(16) reserved = 0; 29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(16) reference_count; 30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * for(i=1; i <= reference_count; i++) 31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * { 32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * bit (1) reference_type; 33dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(31) referenced_size; 34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(32) subsegment_duration; 35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * bit(1) starts_with_SAP; 36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(3) SAP_type; 37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * unsigned int(28) SAP_delta_time; 38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * } 39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * } 40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * </pre> 41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupublic class SegmentIndexBox extends AbstractFullBox { 43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static final String TYPE = "sidx"; 44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu List<Entry> entries = new ArrayList<Entry>(); 45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long referenceId; 47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long timeScale; 48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long earliestPresentationTime; 49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long firstOffset; 50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int reserved; 51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public SegmentIndexBox() { 54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu super(TYPE); 55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 57dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 58dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected long getContentSize() { 59dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long size = 4; 60dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu size += 4; 61dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu size += 4; 62dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu size += getVersion() == 0 ? 8 : 16; 63dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu size += 2; // reserved 64dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu size += 2; // reference count 65dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 66dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu size += entries.size() * 12; 67dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 68dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return size; 69dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 70dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 71dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 72dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected void getContent(ByteBuffer byteBuffer) { 73dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu writeVersionAndFlags(byteBuffer); 74dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, referenceId); 75dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, timeScale); 76dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (getVersion() == 0) { 77dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, earliestPresentationTime); 78dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, firstOffset); 79dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 80dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt64(byteBuffer, earliestPresentationTime); 81dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt64(byteBuffer, firstOffset); 82dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 83dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(byteBuffer, reserved); 84dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(byteBuffer, entries.size()); 85dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu for (Entry entry : entries) { 86dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu BitWriterBuffer b = new BitWriterBuffer(byteBuffer); 87dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b.writeBits(entry.getReferenceType(), 1); 88dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b.writeBits(entry.getReferencedSize(), 31); 89dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, entry.getSubsegmentDuration()); 90dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b = new BitWriterBuffer(byteBuffer); 91dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b.writeBits(entry.getStartsWithSap(), 1); 92dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b.writeBits(entry.getSapType(), 3); 93dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b.writeBits(entry.getSapDeltaTime(), 28); 94dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 95dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 96dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 97dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 98dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 99dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected void _parseDetails(ByteBuffer content) { 100dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu parseVersionAndFlags(content); 101dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu referenceId = IsoTypeReader.readUInt32(content); 102dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu timeScale = IsoTypeReader.readUInt32(content); 103dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (getVersion() == 0) { 104dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu earliestPresentationTime = IsoTypeReader.readUInt32(content); 105dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu firstOffset = IsoTypeReader.readUInt32(content); 106dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 107dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu earliestPresentationTime = IsoTypeReader.readUInt64(content); 108dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu firstOffset = IsoTypeReader.readUInt64(content); 109dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 110dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu reserved = IsoTypeReader.readUInt16(content); 111dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int numEntries = IsoTypeReader.readUInt16(content); 112dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu for (int i = 0; i < numEntries; i++) { 113dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu BitReaderBuffer b = new BitReaderBuffer(content); 114dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu Entry e = new Entry(); 115dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu e.setReferenceType((byte) b.readBits(1)); 116dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu e.setReferencedSize(b.readBits(31)); 117dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu e.setSubsegmentDuration(IsoTypeReader.readUInt32(content)); 118dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu b = new BitReaderBuffer(content); 119dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu e.setStartsWithSap((byte) b.readBits(1)); 120dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu e.setSapType((byte) b.readBits(3)); 121dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu e.setSapDeltaTime(b.readBits(28)); 122dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu entries.add(e); 123dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 124dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 125dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 126dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 127dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public List<Entry> getEntries() { 128dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return entries; 129dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 130dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 131dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setEntries(List<Entry> entries) { 132dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.entries = entries; 133dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 134dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 135dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getReferenceId() { 136dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return referenceId; 137dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 138dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 139dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setReferenceId(long referenceId) { 140dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.referenceId = referenceId; 141dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 142dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 143dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getTimeScale() { 144dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return timeScale; 145dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 146dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 147dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setTimeScale(long timeScale) { 148dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.timeScale = timeScale; 149dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 150dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 151dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getEarliestPresentationTime() { 152dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return earliestPresentationTime; 153dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 154dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 155dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setEarliestPresentationTime(long earliestPresentationTime) { 156dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.earliestPresentationTime = earliestPresentationTime; 157dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 158dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 159dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getFirstOffset() { 160dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return firstOffset; 161dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 162dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 163dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setFirstOffset(long firstOffset) { 164dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.firstOffset = firstOffset; 165dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 166dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 167dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getReserved() { 168dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return reserved; 169dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 170dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 171dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setReserved(int reserved) { 172dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.reserved = reserved; 173dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 174dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 175dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static class Entry { 176dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byte referenceType; 177dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int referencedSize; 178dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long subsegmentDuration; 179dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byte startsWithSap; 180dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byte sapType; 181dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int sapDeltaTime; 182dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 183dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public Entry() { 184dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 185dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 186dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public Entry(byte referenceType, int referencedSize, long subsegmentDuration, byte startsWithSap, byte sapType, int sapDeltaTime) { 187dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.referenceType = referenceType; 188dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.referencedSize = referencedSize; 189dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.subsegmentDuration = subsegmentDuration; 190dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.startsWithSap = startsWithSap; 191dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.sapType = sapType; 192dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.sapDeltaTime = sapDeltaTime; 193dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 194dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 195dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public byte getReferenceType() { 196dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return referenceType; 197dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 198dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 199dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setReferenceType(byte referenceType) { 200dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.referenceType = referenceType; 201dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 202dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 203dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getReferencedSize() { 204dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return referencedSize; 205dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 206dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 207dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setReferencedSize(int referencedSize) { 208dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.referencedSize = referencedSize; 209dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 210dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 211dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getSubsegmentDuration() { 212dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return subsegmentDuration; 213dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 214dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 215dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setSubsegmentDuration(long subsegmentDuration) { 216dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.subsegmentDuration = subsegmentDuration; 217dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 218dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 219dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public byte getStartsWithSap() { 220dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return startsWithSap; 221dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 222dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 223dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setStartsWithSap(byte startsWithSap) { 224dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.startsWithSap = startsWithSap; 225dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 226dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 227dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public byte getSapType() { 228dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return sapType; 229dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 230dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 231dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setSapType(byte sapType) { 232dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.sapType = sapType; 233dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 234dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 235dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getSapDeltaTime() { 236dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return sapDeltaTime; 237dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 238dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 239dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setSapDeltaTime(int sapDeltaTime) { 240dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.sapDeltaTime = sapDeltaTime; 241dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 242dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 243dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 244dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public String toString() { 245dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return "Entry{" + 246dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu "referenceType=" + referenceType + 247dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu ", referencedSize=" + referencedSize + 248dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu ", subsegmentDuration=" + subsegmentDuration + 249dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu ", startsWithSap=" + startsWithSap + 250dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu ", sapType=" + sapType + 251dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu ", sapDeltaTime=" + sapDeltaTime + 252dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu '}'; 253dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 254dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 255dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 256dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public boolean equals(Object o) { 257dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (this == o) return true; 258dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (o == null || getClass() != o.getClass()) return false; 259dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 260dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu Entry entry = (Entry) o; 261dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 262dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (referenceType != entry.referenceType) return false; 263dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (referencedSize != entry.referencedSize) return false; 264dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (sapDeltaTime != entry.sapDeltaTime) return false; 265dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (sapType != entry.sapType) return false; 266dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (startsWithSap != entry.startsWithSap) return false; 267dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (subsegmentDuration != entry.subsegmentDuration) return false; 268dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 269dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return true; 270dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 271dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 272dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 273dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int hashCode() { 274dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu int result = (int) referenceType; 275dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result = 31 * result + referencedSize; 276dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result = 31 * result + (int) (subsegmentDuration ^ (subsegmentDuration >>> 32)); 277dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result = 31 * result + (int) startsWithSap; 278dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result = 31 * result + (int) sapType; 279dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result = 31 * result + sapDeltaTime; 280dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return result; 281dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 282dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 283dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 284