public Track getTrackByTrackId(long trackId) { for (Track track : tracks) { if (track.getTrackMetaData().getTrackId() == trackId) { return track; } } return null; }
public TrackMetaData getTrackMetaData() { TrackMetaData trackMetaData = (TrackMetaData) source.getTrackMetaData().clone(); trackMetaData.setTimescale(timeScale); return trackMetaData; }
@Override public String toString() { String s = "Movie{ "; for (Track track : tracks) { s += "track_" + track.getTrackMetaData().getTrackId() + " (" + track.getHandler() + ") "; } s += '}'; return s; }
private static long calculateTracktimesScalingFactor(Movie m, Track track) { long timeScale = 1; for (Track track1 : m.getTracks()) { if (track1.getHandler().equals(track.getHandler())) { if (track1.getTrackMetaData().getTimescale() != track.getTrackMetaData().getTimescale()) { timeScale = lcm(timeScale, track1.getTrackMetaData().getTimescale()); } } } return timeScale; }
private static long getTrackDuration(Movie movie, Track track) { return (track.getDuration() * movie.getTimescale()) / track.getTrackMetaData().getTimescale(); }
private static long[] getTimes(Track track, long[] syncSamples, long targetTimeScale) { long[] syncSampleTimes = new long[syncSamples.length]; int currentSample = 1; // first syncsample is 1 long currentDuration = 0; int currentSyncSampleIndex = 0; while (currentSample <= syncSamples[syncSamples.length - 1]) { if (currentSample == syncSamples[currentSyncSampleIndex]) { syncSampleTimes[currentSyncSampleIndex++] = (currentDuration * targetTimeScale) / track.getTrackMetaData().getTimescale(); } currentDuration += track.getSampleDurations()[currentSample - 1]; currentSample++; } return syncSampleTimes; }
public void addTrack(Track nuTrack) { // do some checking // perhaps the movie needs to get longer! if (getTrackByTrackId(nuTrack.getTrackMetaData().getTrackId()) != null) { // We already have a track with that trackId. Create a new one nuTrack.getTrackMetaData().setTrackId(getNextTrackId()); } tracks.add(nuTrack); }
public TrackMetaData getTrackMetaData() { TrackMetaData trackMetaData = (TrackMetaData) source.getTrackMetaData().clone(); trackMetaData.setTimescale(source.getTrackMetaData().getTimescale() / this.timeScaleDivisor); return trackMetaData; }
public long[] getSampleDurations() { long[] scaled = new long[source.getSampleDurations().length]; for (int i = 0; i < source.getSampleDurations().length; i++) { scaled[i] = source.getSampleDurations()[i] / timeScaleDivisor; } return scaled; }
public long[] getSampleDurations() { long[] adoptedSampleDuration = new long[sampleDurations.length]; for (int i = 0; i < adoptedSampleDuration.length; i++) { adoptedSampleDuration[i] = sampleDurations[i] * trackMetaData.getTimescale() / 1000; } return adoptedSampleDuration; }
public void close() throws IOException { for (Track track : tracks) { track.close(); } }
@Override public String toString() { return "PiffMp4TrackImpl{" + "handler='" + getHandler() + '\'' + '}'; }
@Override public String toString() { return "CencMp4TrackImpl{" + "handler='" + getHandler() + '\'' + '}'; }
public long getDuration() { long duration = 0; for (long delta : getSampleDurations()) { duration += delta; } return duration; }
@Override public long[] getSampleDurations() { long[] l = super.getSampleDurations(); l[0] *= 10; l[l.length-1] *= 10; return l; } });
@Override public String getName() { return "enc(" + super.getName() + ")"; }
public TrackMetaData getTrackMetaData() { TrackMetaData trackMetaData = (TrackMetaData) source.getTrackMetaData().clone(); trackMetaData.setTimescale(source.getTrackMetaData().getTimescale() * this.timeScaleFactor); return trackMetaData; }
public long getNextTrackId() { long nextTrackId = 0; for (Track track : tracks) { nextTrackId = nextTrackId < track.getTrackMetaData().getTrackId() ? track.getTrackMetaData().getTrackId() : nextTrackId; } return ++nextTrackId; }
public long[] getSampleDurations() { long[] scaled = new long[source.getSampleDurations().length]; for (int i = 0; i < source.getSampleDurations().length; i++) { scaled[i] = source.getSampleDurations()[i] * timeScaleFactor; } return scaled; }
public long[] getSampleDurations() { long[] adoptedSampleDuration = new long[sampleDurations.length]; for (int i = 0; i < adoptedSampleDuration.length; i++) { adoptedSampleDuration[i] = sampleDurations[i] * trackMetaData.getTimescale() / 1000; } return adoptedSampleDuration; }