summaryrefslogtreecommitdiff
path: root/isoparser/src/main/java/com/coremedia/iso/boxes/.svn/text-base/TimeToSampleBox.java.svn-base
diff options
context:
space:
mode:
Diffstat (limited to 'isoparser/src/main/java/com/coremedia/iso/boxes/.svn/text-base/TimeToSampleBox.java.svn-base')
-rw-r--r--isoparser/src/main/java/com/coremedia/iso/boxes/.svn/text-base/TimeToSampleBox.java.svn-base152
1 files changed, 0 insertions, 152 deletions
diff --git a/isoparser/src/main/java/com/coremedia/iso/boxes/.svn/text-base/TimeToSampleBox.java.svn-base b/isoparser/src/main/java/com/coremedia/iso/boxes/.svn/text-base/TimeToSampleBox.java.svn-base
deleted file mode 100644
index 8f4f97e..0000000
--- a/isoparser/src/main/java/com/coremedia/iso/boxes/.svn/text-base/TimeToSampleBox.java.svn-base
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright 2008 CoreMedia AG, Hamburg
- *
- * Licensed under the Apache License, Version 2.0 (the License);
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an AS IS BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.coremedia.iso.boxes;
-
-
-import com.coremedia.iso.IsoTypeReader;
-import com.coremedia.iso.IsoTypeWriter;
-import com.googlecode.mp4parser.AbstractFullBox;
-
-import java.nio.ByteBuffer;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import static com.googlecode.mp4parser.util.CastUtils.l2i;
-
-/**
- * This box contains a compact version of a table that allows indexing from decoding time to sample number.
- * Other tables give sample sizes and pointers, from the sample number. Each entry in the table gives the
- * number of consecutive samples with the same time delta, and the delta of those samples. By adding the
- * deltas a complete time-to-sample map may be built.<br>
- * The Decoding Time to Sample Box contains decode time delta's: <code>DT(n+1) = DT(n) + STTS(n)</code> where STTS(n)
- * is the (uncompressed) table entry for sample n.<br>
- * The sample entries are ordered by decoding time stamps; therefore the deltas are all non-negative. <br>
- * The DT axis has a zero origin; <code>DT(i) = SUM(for j=0 to i-1 of delta(j))</code>, and the sum of all
- * deltas gives the length of the media in the track (not mapped to the overall timescale, and not considering
- * any edit list). <br>
- * The Edit List Box provides the initial CT value if it is non-empty (non-zero).
- */
-public class TimeToSampleBox extends AbstractFullBox {
- public static final String TYPE = "stts";
-
- List<Entry> entries = Collections.emptyList();
-
-
- public TimeToSampleBox() {
- super(TYPE);
- }
-
- protected long getContentSize() {
- return 8 + entries.size() * 8;
- }
-
- @Override
- public void _parseDetails(ByteBuffer content) {
- parseVersionAndFlags(content);
- int entryCount = l2i(IsoTypeReader.readUInt32(content));
- entries = new ArrayList<Entry>(entryCount);
-
- for (int i = 0; i < entryCount; i++) {
- entries.add(new Entry(IsoTypeReader.readUInt32(content), IsoTypeReader.readUInt32(content)));
- }
-
- }
-
- @Override
- protected void getContent(ByteBuffer byteBuffer) {
- writeVersionAndFlags(byteBuffer);
- IsoTypeWriter.writeUInt32(byteBuffer, entries.size());
- for (Entry entry : entries) {
- IsoTypeWriter.writeUInt32(byteBuffer, entry.getCount());
- IsoTypeWriter.writeUInt32(byteBuffer, entry.getDelta());
- }
- }
-
- public List<Entry> getEntries() {
- return entries;
- }
-
- public void setEntries(List<Entry> entries) {
- this.entries = entries;
- }
-
- public String toString() {
- return "TimeToSampleBox[entryCount=" + entries.size() + "]";
- }
-
- public static class Entry {
- long count;
- long delta;
-
- public Entry(long count, long delta) {
- this.count = count;
- this.delta = delta;
- }
-
- public long getCount() {
- return count;
- }
-
- public long getDelta() {
- return delta;
- }
-
- public void setCount(long count) {
- this.count = count;
- }
-
- public void setDelta(long delta) {
- this.delta = delta;
- }
-
- @Override
- public String toString() {
- return "Entry{" +
- "count=" + count +
- ", delta=" + delta +
- '}';
- }
- }
-
- /**
- * Decompresses the list of entries and returns the list of decoding times.
- *
- * @return decoding time per sample
- */
- public static long[] blowupTimeToSamples(List<TimeToSampleBox.Entry> entries) {
- long numOfSamples = 0;
- for (TimeToSampleBox.Entry entry : entries) {
- numOfSamples += entry.getCount();
- }
- assert numOfSamples <= Integer.MAX_VALUE;
- long[] decodingTime = new long[(int) numOfSamples];
-
- int current = 0;
-
-
- for (TimeToSampleBox.Entry entry : entries) {
- for (int i = 0; i < entry.getCount(); i++) {
- decodingTime[current++] = entry.getDelta();
- }
- }
-
- return decodingTime;
- }
-
-
-}