private void putCompositionOffsets(NodeBox stbl) { if (compositionOffsets.size() > 0) { compositionOffsets.add(new LongEntry(lastCompositionSamples, lastCompositionOffset)); long min = minLongOffset(compositionOffsets); if (min > 0) { for (LongEntry entry : compositionOffsets) { entry.offset -= min; } } LongEntry first = compositionOffsets.get(0); if (first.getOffset() > 0) { if (edits == null) { edits = new ArrayList<Edit>(); edits.add(new Edit(trackTotalDuration, first.getOffset(), 1.0f)); } else { for (Edit edit : edits) { edit.setMediaTime(edit.getMediaTime() + first.getOffset()); } } } Entry[] intEntries = new Entry[compositionOffsets.size()]; for (int i = 0; i < compositionOffsets.size(); i++) { LongEntry longEntry = compositionOffsets.get(i); intEntries[i] = new Entry(checkedCast(longEntry.count), checkedCast(longEntry.offset)); } stbl.add(CompositionOffsetsBox.createCompositionOffsetsBox(intEntries)); } }
private void putCompositionOffsets(NodeBox stbl) { if (compositionOffsets.size() > 0) { compositionOffsets.add(new Entry(lastCompositionSamples, lastCompositionOffset)); int min = minOffset(compositionOffsets); if (min > 0) { for (Entry entry : compositionOffsets) { entry.offset -= min; } } Entry first = compositionOffsets.get(0); if (first.getOffset() > 0) { if (edits == null) { edits = new ArrayList<Edit>(); edits.add(new Edit(trackTotalDuration, first.getOffset(), 1.0f)); } else { for (Edit edit : edits) { edit.setMediaTime(edit.getMediaTime() + first.getOffset()); } } } stbl.add(new CompositionOffsetsBox(compositionOffsets.toArray(new Entry[0]))); } }
if (compositionOffset != lastCompositionOffset) { if (lastCompositionSamples > 0) compositionOffsets.add(new Entry(lastCompositionSamples, lastCompositionOffset)); lastCompositionOffset = compositionOffset; lastCompositionSamples = 0;
@Override protected void seekPointer(long frameNo) { if (compOffsets != null) { cttsSubInd = (int) frameNo; cttsInd = 0; while (cttsSubInd >= compOffsets[cttsInd].getCount()) { cttsSubInd -= compOffsets[cttsInd].getCount(); cttsInd++; } } curFrame = (int) frameNo; stcoInd = 0; stscInd = 0; noInChunk = (int) frameNo; offInChunk = 0; while (noInChunk >= sampleToChunks[stscInd].getCount()) { noInChunk -= sampleToChunks[stscInd].getCount(); nextChunk(); } for (int i = 0; i < noInChunk; i++) { offInChunk += sizes[(int) frameNo - noInChunk + i]; } if (syncSamples != null) for (ssOff = 0; ssOff < syncSamples.length && syncSamples[ssOff] < curFrame + 1; ssOff++) ; if (partialSync != null) for (psOff = 0; psOff < partialSync.length && partialSync[psOff] < curFrame + 1; psOff++) ; }
protected void seekPointer(long frameNo) { if (compOffsets != null) { cttsSubInd = (int) frameNo; cttsInd = 0; while (cttsSubInd >= compOffsets[cttsInd].getCount()) { cttsSubInd -= compOffsets[cttsInd].getCount(); cttsInd++; } } curFrame = (int) frameNo; stcoInd = 0; stscInd = 0; noInChunk = (int) frameNo; offInChunk = 0; while (noInChunk >= sampleToChunks[stscInd].getCount()) { noInChunk -= sampleToChunks[stscInd].getCount(); nextChunk(); } for (int i = 0; i < noInChunk; i++) { offInChunk += sizes[(int) frameNo - noInChunk + i]; } if (syncSamples != null) for (ssOff = 0; ssOff < syncSamples.length && syncSamples[ssOff] < curFrame + 1; ssOff++) ; if (partialSync != null) for (psOff = 0; psOff < partialSync.length && partialSync[psOff] < curFrame + 1; psOff++) ; }
if (compositionOffset != lastCompositionOffset) { if (lastCompositionSamples > 0) compositionOffsets.add(new Entry(lastCompositionSamples, lastCompositionOffset)); lastCompositionOffset = compositionOffset; lastCompositionSamples = 0;
protected void seekPointer(long frameNo) { if (compOffsets != null) { cttsSubInd = (int) frameNo; cttsInd = 0; while (cttsSubInd >= compOffsets[cttsInd].getCount()) { cttsSubInd -= compOffsets[cttsInd].getCount(); cttsInd++; } } curFrame = (int) frameNo; stcoInd = 0; stscInd = 0; noInChunk = (int) frameNo; offInChunk = 0; while (noInChunk >= sampleToChunks[stscInd].getCount()) { noInChunk -= sampleToChunks[stscInd].getCount(); nextChunk(); } for (int i = 0; i < noInChunk; i++) { offInChunk += sizes[(int) frameNo - noInChunk + i]; } if (syncSamples != null) for (ssOff = 0; ssOff < syncSamples.length && syncSamples[ssOff] < curFrame + 1; ssOff++) ; if (partialSync != null) for (psOff = 0; psOff < partialSync.length && partialSync[psOff] < curFrame + 1; psOff++) ; }
private void putCompositionOffsets(NodeBox stbl) { if (compositionOffsets.size() > 0) { compositionOffsets.add(new Entry(lastCompositionSamples, lastCompositionOffset)); int min = minOffset(compositionOffsets); if (min > 0) { for (Entry entry : compositionOffsets) { entry.offset -= min; } } Entry first = compositionOffsets.get(0); if (first.getOffset() > 0) { if (edits == null) { edits = new ArrayList<Edit>(); edits.add(new Edit(trackTotalDuration, first.getOffset(), 1.0f)); } else { for (Edit edit : edits) { edit.setMediaTime(edit.getMediaTime() + first.getOffset()); } } } stbl.add(new CompositionOffsetsBox(compositionOffsets.toArray(new Entry[0]))); } }
@Override public void parse(ByteBuffer input) { super.parse(input); int num = input.getInt(); entries = new Entry[num]; for (int i = 0; i < num; i++) { entries[i] = new Entry(input.getInt(), input.getInt()); } }
@Override public void parse(ByteBuffer input) { super.parse(input); int num = input.getInt(); entries = new Entry[num]; for (int i = 0; i < num; i++) { entries[i] = new Entry(input.getInt(), input.getInt()); } }
@Override public void parse(ByteBuffer input) { super.parse(input); int num = input.getInt(); entries = new Entry[num]; for (int i = 0; i < num; i++) { entries[i] = new Entry(input.getInt(), input.getInt()); } }
public static int minOffset(List<Entry> offs) { int min = Integer.MAX_VALUE; for (Entry entry : offs) { min = Math.min(min, entry.getOffset()); } return min; }