1dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/* 2dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Copyright 2008 CoreMedia AG, Hamburg 3dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 4dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Licensed under the Apache License, Version 2.0 (the License); 5dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * you may not use this file except in compliance with the License. 6dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * You may obtain a copy of the License at 7dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 8dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * http://www.apache.org/licenses/LICENSE-2.0 9dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * 10dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Unless required by applicable law or agreed to in writing, software 11dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * distributed under the License is distributed on an AS IS BASIS, 12dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * See the License for the specific language governing permissions and 14dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * limitations under the License. 15dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 16dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 17dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupackage com.coremedia.iso.boxes; 18dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 19dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.IsoTypeReader; 20dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.coremedia.iso.IsoTypeWriter; 21dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport com.googlecode.mp4parser.AbstractFullBox; 22dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 23dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhuimport java.nio.ByteBuffer; 24dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 25dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu/** 26dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * <code> 27dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Box Type: 'mvhd'<br> 28dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Container: {@link MovieBox} ('moov')<br> 29dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Mandatory: Yes<br> 30dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * Quantity: Exactly one<br><br> 31dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * </code> 32dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * This box defines overall information which is media-independent, and relevant to the entire presentation 33dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu * considered as a whole. 34dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu */ 35dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhupublic class MovieHeaderBox extends AbstractFullBox { 36dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long creationTime; 37dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long modificationTime; 38dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long timescale; 39dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long duration; 40dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private double rate = 1.0; 41dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private float volume = 1.0f; 42dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long[] matrix = new long[]{0x00010000, 0, 0, 0, 0x00010000, 0, 0, 0, 0x40000000}; 43dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private long nextTrackId; 44dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 45dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int previewTime; 46dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int previewDuration; 47dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int posterTime; 48dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int selectionTime; 49dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int selectionDuration; 50dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu private int currentTime; 51dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 52dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 53dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public static final String TYPE = "mvhd"; 54dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 55dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public MovieHeaderBox() { 56dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu super(TYPE); 57dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 58dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 59dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getCreationTime() { 60dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return creationTime; 61dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 62dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 63dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getModificationTime() { 64dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return modificationTime; 65dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 66dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 67dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getTimescale() { 68dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return timescale; 69dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 70dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 71dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getDuration() { 72dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return duration; 73dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 74dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 75dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public double getRate() { 76dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return rate; 77dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 78dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 79dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public float getVolume() { 80dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return volume; 81dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 82dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 83dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long[] getMatrix() { 84dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return matrix; 85dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 86dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 87dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public long getNextTrackId() { 88dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return nextTrackId; 89dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 90dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 91dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected long getContentSize() { 92dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu long contentSize = 4; 93dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (getVersion() == 1) { 94dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu contentSize += 28; 95dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 96dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu contentSize += 16; 97dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 98dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu contentSize += 80; 99dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return contentSize; 100dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 101dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 102dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 103dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void _parseDetails(ByteBuffer content) { 104dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu parseVersionAndFlags(content); 105dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (getVersion() == 1) { 106dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu creationTime = IsoTypeReader.readUInt64(content); 107dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu modificationTime = IsoTypeReader.readUInt64(content); 108dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu timescale = IsoTypeReader.readUInt32(content); 109dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu duration = IsoTypeReader.readUInt64(content); 110dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 111dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu creationTime = IsoTypeReader.readUInt32(content); 112dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu modificationTime = IsoTypeReader.readUInt32(content); 113dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu timescale = IsoTypeReader.readUInt32(content); 114dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu duration = IsoTypeReader.readUInt32(content); 115dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 116dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu rate = IsoTypeReader.readFixedPoint1616(content); 117dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu volume = IsoTypeReader.readFixedPoint88(content); 118dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeReader.readUInt16(content); 119dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeReader.readUInt32(content); 120dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeReader.readUInt32(content); 121dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu matrix = new long[9]; 122dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu for (int i = 0; i < 9; i++) { 123dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu matrix[i] = IsoTypeReader.readUInt32(content); 124dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 125dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 126dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu previewTime = content.getInt(); 127dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu previewDuration = content.getInt(); 128dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu posterTime = content.getInt(); 129dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu selectionTime = content.getInt(); 130dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu selectionDuration = content.getInt(); 131dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu currentTime = content.getInt(); 132dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 133dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu nextTrackId = IsoTypeReader.readUInt32(content); 134dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 135dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 136dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 137dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public String toString() { 138dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu StringBuilder result = new StringBuilder(); 139dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("MovieHeaderBox["); 140dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("creationTime=").append(getCreationTime()); 141dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 142dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("modificationTime=").append(getModificationTime()); 143dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 144dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("timescale=").append(getTimescale()); 145dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 146dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("duration=").append(getDuration()); 147dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 148dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("rate=").append(getRate()); 149dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 150dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("volume=").append(getVolume()); 151dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu for (int i = 0; i < matrix.length; i++) { 152dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 153dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("matrix").append(i).append("=").append(matrix[i]); 154dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 155dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append(";"); 156dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("nextTrackId=").append(getNextTrackId()); 157dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu result.append("]"); 158dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return result.toString(); 159dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 160dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 161dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 162dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu @Override 163dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu protected void getContent(ByteBuffer byteBuffer) { 164dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu writeVersionAndFlags(byteBuffer); 165dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu if (getVersion() == 1) { 166dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt64(byteBuffer, creationTime); 167dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt64(byteBuffer, modificationTime); 168dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, timescale); 169dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt64(byteBuffer, duration); 170dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } else { 171dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, creationTime); 172dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, modificationTime); 173dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, timescale); 174dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, duration); 175dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 176dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeFixedPont1616(byteBuffer, rate); 177dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeFixedPont88(byteBuffer, volume); 178dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt16(byteBuffer, 0); 179dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, 0); 180dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, 0); 181dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 182dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 183dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu for (int i = 0; i < 9; i++) { 184dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, matrix[i]); 185dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 186dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 187dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 188dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byteBuffer.putInt(previewTime); 189dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byteBuffer.putInt(previewDuration); 190dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byteBuffer.putInt(posterTime); 191dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byteBuffer.putInt(selectionTime); 192dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byteBuffer.putInt(selectionDuration); 193dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu byteBuffer.putInt(currentTime); 194dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 195dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu IsoTypeWriter.writeUInt32(byteBuffer, nextTrackId); 196dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 197dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 198dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 199dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setCreationTime(long creationTime) { 200dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.creationTime = creationTime; 201dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 202dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 203dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setModificationTime(long modificationTime) { 204dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.modificationTime = modificationTime; 205dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 206dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 207dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setTimescale(long timescale) { 208dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.timescale = timescale; 209dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 210dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 211dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setDuration(long duration) { 212dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.duration = duration; 213dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 214dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 215dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setRate(double rate) { 216dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.rate = rate; 217dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 218dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 219dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setVolume(float volume) { 220dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.volume = volume; 221dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 222dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 223dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setMatrix(long[] matrix) { 224dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.matrix = matrix; 225dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 226dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 227dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setNextTrackId(long nextTrackId) { 228dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.nextTrackId = nextTrackId; 229dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 230dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 231dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getPreviewTime() { 232dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return previewTime; 233dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 234dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 235dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setPreviewTime(int previewTime) { 236dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.previewTime = previewTime; 237dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 238dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 239dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getPreviewDuration() { 240dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return previewDuration; 241dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 242dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 243dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setPreviewDuration(int previewDuration) { 244dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.previewDuration = previewDuration; 245dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 246dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 247dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getPosterTime() { 248dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return posterTime; 249dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 250dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 251dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setPosterTime(int posterTime) { 252dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.posterTime = posterTime; 253dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 254dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 255dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getSelectionTime() { 256dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return selectionTime; 257dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 258dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 259dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setSelectionTime(int selectionTime) { 260dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.selectionTime = selectionTime; 261dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 262dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 263dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getSelectionDuration() { 264dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return selectionDuration; 265dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 266dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 267dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setSelectionDuration(int selectionDuration) { 268dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.selectionDuration = selectionDuration; 269dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 270dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 271dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public int getCurrentTime() { 272dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu return currentTime; 273dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 274dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu 275dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu public void setCurrentTime(int currentTime) { 276dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu this.currentTime = currentTime; 277dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu } 278dd9eb897ee7c7b507cbdcf80263bb4b5de6966bfTeng-Hui Zhu} 279