public static long lcm(long[] input) { long result = input[0]; for (int i = 1; i < input.length; i++) result = lcm(result, input[i]); return result; }
public static long lcm(long a, long b) { return a * (b / gcd(a, b)); }
public long getTimescale(Movie movie) { long timescale = movie.getTracks().iterator().next().getTrackMetaData().getTimescale(); for (Track track : movie.getTracks()) { timescale = lcm(timescale, track.getTrackMetaData().getTimescale()); } return timescale; }
public static int lcm(int a, int b) { return a * (b / gcd(a, b)); }
protected Box createMvhd() { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(creationTime); mvhd.setModificationTime(creationTime); long[] timescales = new long[0]; long maxTrackId = 0; double duration = 0; for (StreamingTrack streamingTrack : source) { duration = Math.max((double) nextSampleStartTime.get(streamingTrack) / streamingTrack.getTimescale(), duration); timescales = Mp4Arrays.copyOfAndAppend(timescales, streamingTrack.getTimescale()); maxTrackId = Math.max(streamingTrack.getTrackExtension(TrackIdTrackExtension.class).getTrackId(), maxTrackId); } mvhd.setTimescale(Mp4Math.lcm(timescales)); mvhd.setDuration((long) (Mp4Math.lcm(timescales) * duration)); // find the next available trackId mvhd.setNextTrackId(maxTrackId + 1); return mvhd; }
public long getTimescale() { long timescale = this.getTracks().iterator().next().getTrackMetaData().getTimescale(); for (Track track : this.getTracks()) { timescale = gcd(track.getTrackMetaData().getTimescale(), timescale); } return timescale; }
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; }
public static int lcm(int a, int b) { return a * (b / gcd(a, b)); }
protected Box createMvhd() { MovieHeaderBox mvhd = new MovieHeaderBox(); mvhd.setVersion(1); mvhd.setCreationTime(creationTime); mvhd.setModificationTime(creationTime); mvhd.setDuration(0);//no duration in moov for fragmented movies long[] timescales = new long[0]; long maxTrackId = 0; for (StreamingTrack streamingTrack : source) { timescales = Mp4Arrays.copyOfAndAppend(timescales, streamingTrack.getTimescale()); maxTrackId = Math.max(streamingTrack.getTrackExtension(TrackIdTrackExtension.class).getTrackId(), maxTrackId); } mvhd.setTimescale(Mp4Math.lcm(timescales)); // find the next available trackId mvhd.setNextTrackId(maxTrackId + 1); return mvhd; }
public static long lcm(long a, long b) { return a * (b / gcd(a, b)); }
public static long lcm(long[] input) { long result = input[0]; for (int i = 1; i < input.length; i++) result = lcm(result, input[i]); return result; }
public long getTimescale() { long timescale = this.getTracks().iterator().next().getTrackMetaData().getTimescale(); for (Track track : this.getTracks()) { timescale = gcd(track.getTrackMetaData().getTimescale(), timescale); } return timescale; }
public long getTimescale(Movie movie) { long timescale = movie.getTracks().iterator().next().getTrackMetaData().getTimescale(); for (Track track : movie.getTracks()) { timescale = lcm(timescale, track.getTrackMetaData().getTimescale()); } return timescale; }
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; }