package com.castlabs.dash.dashfragmenter.representation;
import com.googlecode.mp4parser.authoring.Track;
import com.googlecode.mp4parser.util.Mp4Arrays;
import com.mp4parser.iso23001.part7.ProtectionSystemSpecificHeaderBox;
import java.util.List;
public class SyncSampleExtraRepresentationBuilder extends AbstractRepresentationBuilder {
public static long[] calcSegmentStartSamples(Track track, int minFragmentSamples) {
long ss[] = track.getSyncSamples();
long startSamples[] = new long[]{ss[0]};
for (long s : ss) {
if (startSamples[startSamples.length - 1] + minFragmentSamples <= s) {
startSamples = Mp4Arrays.copyOfAndAppend(startSamples, new long[]{s});
}
}
return startSamples;
}
public static long[] calcFragmentStartSamples(Track track, int minFragmentSamples) {
long[] segmentStartSamples = calcSegmentStartSamples(track, minFragmentSamples);
long[] fragmentStartSamples = new long[segmentStartSamples.length * 2];
for (int i = 0; i < segmentStartSamples.length; i++) {
fragmentStartSamples[i * 2] = segmentStartSamples[i];
fragmentStartSamples[i * 2 + 1] = segmentStartSamples[i] + 1;
}
return fragmentStartSamples;
}
public SyncSampleExtraRepresentationBuilder(Track track, String source, List<ProtectionSystemSpecificHeaderBox> psshs) {
super(track, psshs, source, calcSegmentStartSamples(track, 50), calcFragmentStartSamples(track, 50));
}
}