synchronized public long[] getSyncSamples() { return origTrack.getSyncSamples(); }
public long[] getSyncSamples() { return source.getSyncSamples(); }
public long[] getSyncSamples() { return source.getSyncSamples(); }
public long[] getSyncSamples() { return parent.getSyncSamples(); }
public long[] getSyncSamples() { return source.getSyncSamples(); }
public long[] getSyncSamples() { return source.getSyncSamples(); }
synchronized public long[] getSyncSamples() { if (origTrack.getSyncSamples() != null) { long[] origSyncSamples = origTrack.getSyncSamples(); int i = 0, j = origSyncSamples.length; while (i < origSyncSamples.length && origSyncSamples[i] < fromSample) { i++; } while (j > 0 && toSample < origSyncSamples[j - 1]) { j--; } long[] syncSampleArray = new long[j - i]; System.arraycopy(origTrack.getSyncSamples(), i, syncSampleArray, 0, j - i); for (int k = 0; k < syncSampleArray.length; k++) { syncSampleArray[k] -= fromSample; } return syncSampleArray; } return null; }
public long[] getSyncSamples() { if (tracks[0].getSyncSamples() != null && tracks[0].getSyncSamples().length > 0) { int numSyncSamples = 0; for (Track track : tracks) { numSyncSamples += track.getSyncSamples() != null ? track.getSyncSamples().length : 0; } long[] returnSyncSamples = new long[numSyncSamples]; int pos = 0; long samplesBefore = 0; for (Track track : tracks) { if (track.getSyncSamples() != null) { for (long l : track.getSyncSamples()) { returnSyncSamples[pos++] = samplesBefore + l; } } samplesBefore += track.getSamples().size(); } return returnSyncSamples; } else { return null; } }
private static double correctTimeToSyncSample(Track track, double cutHere, boolean next) { double[] timeOfSyncSamples = new double[track.getSyncSamples().length]; long currentSample = 0; double currentTime = 0; for (int i = 0; i < track.getSampleDurations().length; i++) { long delta = track.getSampleDurations()[i]; if (Arrays.binarySearch(track.getSyncSamples(), currentSample + 1) >= 0) { // samples always start with 1 but we start with zero therefore +1 timeOfSyncSamples[Arrays.binarySearch(track.getSyncSamples(), currentSample + 1)] = currentTime; } currentTime += (double) delta / (double) track.getTrackMetaData().getTimescale(); currentSample++; } double previous = 0; for (double timeOfSyncSample : timeOfSyncSamples) { if (timeOfSyncSample > cutHere) { if (next) { return timeOfSyncSample; } else { return previous; } } previous = timeOfSyncSample; } return timeOfSyncSamples[timeOfSyncSamples.length - 1]; }
private static double correctTimeToSyncSample(Track track, double cutHere, boolean next) { double[] timeOfSyncSamples = new double[track.getSyncSamples().length]; long currentSample = 0; double currentTime = 0; for (int i = 0; i < track.getSampleDurations().length; i++) { long delta = track.getSampleDurations()[i]; if (Arrays.binarySearch(track.getSyncSamples(), currentSample + 1) >= 0) { // samples always start with 1 but we start with zero therefore +1 timeOfSyncSamples[Arrays.binarySearch(track.getSyncSamples(), currentSample + 1)] = currentTime; } currentTime += (double) delta / (double) track.getTrackMetaData().getTimescale(); currentSample++; } double previous = 0; for (double timeOfSyncSample : timeOfSyncSamples) { if (timeOfSyncSample > cutHere) { if (next) { return timeOfSyncSample; } else { return previous; } } previous = timeOfSyncSample; } return timeOfSyncSamples[timeOfSyncSamples.length - 1]; }
private static double correctTimeToSyncSample(Track track, double cutHere, boolean next) { double[] timeOfSyncSamples = new double[track.getSyncSamples().length]; long currentSample = 0; double currentTime = 0; for (int i = 0; i < track.getSampleDurations().length; i++) { long delta = track.getSampleDurations()[i]; if (Arrays.binarySearch(track.getSyncSamples(), currentSample + 1) >= 0) { // samples always start with 1 but we start with zero therefore +1 timeOfSyncSamples[Arrays.binarySearch(track.getSyncSamples(), currentSample + 1)] = currentTime; } currentTime += (double) delta / (double) track.getTrackMetaData().getTimescale(); currentSample++; } double previous = 0; for (double timeOfSyncSample : timeOfSyncSamples) { if (timeOfSyncSample > cutHere) { if (next) { return timeOfSyncSample; } else { return previous; } } previous = timeOfSyncSample; } return timeOfSyncSamples[timeOfSyncSamples.length - 1]; }
private static long[] getTimes(Track track, Movie m) { long[] syncSamples = track.getSyncSamples(); long[] syncSampleTimes = new long[syncSamples.length]; int currentSample = 1; // first syncsample is 1 long currentDuration = 0; int currentSyncSampleIndex = 0; final long scalingFactor = calculateTracktimesScalingFactor(m, track); while (currentSample <= syncSamples[syncSamples.length - 1]) { if (currentSample == syncSamples[currentSyncSampleIndex]) { syncSampleTimes[currentSyncSampleIndex++] = currentDuration * scalingFactor; } currentDuration += track.getSampleDurations()[-1 + currentSample++]; } return syncSampleTimes; }
for (Track track : m.getTracks()) { if ("vide".equals(track.getHandler())) { ss.put(f.getName() + track.getTrackMetaData().getTrackId(), track.getSyncSamples()); maxIndex = Math.max(maxIndex, track.getSyncSamples().length);
private static long findNextSyncSample(Track track, double cutHere) { long currentSample = 0; double currentTime = 0; long[] durations = track.getSampleDurations(); long[] syncSamples = track.getSyncSamples(); for (int i = 0; i < durations.length; i++) { long delta = durations[i]; if ((syncSamples == null || syncSamples.length > 0 || Arrays.binarySearch(syncSamples, currentSample + 1) >= 0) && currentTime > cutHere) { return i; } currentTime += (double) delta / (double) track.getTrackMetaData().getTimescale(); currentSample++; } return currentSample; }
protected void createStss(Track track, SampleTableBox stbl) { long[] syncSamples = track.getSyncSamples(); if (syncSamples != null && syncSamples.length > 0) { SyncSampleBox stss = new SyncSampleBox(); stss.setSampleNumber(syncSamples); stbl.addBox(stss); } }
/** * Calculates the timestamp of all tracks' sync samples. * * @param movie <code>track</code> is located in this movie * @param track get this track's samples timestamps * @return a list of timestamps */ public static List<long[]> getSyncSamplesTimestamps(Movie movie, Track track) { List<long[]> times = new LinkedList<long[]>(); for (Track currentTrack : movie.getTracks()) { if (currentTrack.getHandler().equals(track.getHandler())) { long[] currentTrackSyncSamples = currentTrack.getSyncSamples(); if (currentTrackSyncSamples != null && currentTrackSyncSamples.length > 0) { final long[] currentTrackTimes = getTimes(currentTrack, movie); times.add(currentTrackTimes); } } } return times; }
common.clear(); System.out.println("Found video track in " + arg); long[] syncSamples = t.getSyncSamples(); long timescale = t.getTrackMetaData().getTimescale(); long tts = t.getSampleDurations()[0];
/** * {@inheritDoc} */ public long[] sampleNumbers(Track track) { long[] segmentStartSamples = new long[]{1}; long[] sampleDurations = track.getSampleDurations(); long[] syncSamples = track.getSyncSamples(); long timescale = track.getTrackMetaData().getTimescale(); double time = 0; for (int i = 0; i < sampleDurations.length; i++) { time += (double) sampleDurations[i] / timescale; if (time >= fragmentLength && (syncSamples == null || Arrays.binarySearch(syncSamples, i + 1) >= 0)) { if (i > 0) { segmentStartSamples = Mp4Arrays.copyOfAndAppend(segmentStartSamples, i + 1); } time = 0; } } return segmentStartSamples; } }
if (track.getSyncSamples() != null && track.getSyncSamples().length > 0) { if (timeCorrected) {
long[] syncSamples = videoTrack.getSyncSamples(); double[] syncSampleTimes = new double[0]; int refIndex = 0;