protected Box createTrex(StreamingTrack streamingTrack) { TrackExtendsBox trex = new TrackExtendsBox(); trex.setTrackId(streamingTrack.getTrackExtension(TrackIdTrackExtension.class).getTrackId()); trex.setDefaultSampleDescriptionIndex(1); trex.setDefaultSampleDuration(0); trex.setDefaultSampleSize(0); SampleFlags sf = new SampleFlags(); trex.setDefaultSampleFlags(sf); return trex; }
List<TrackExtendsBox> trexs = Path.getPaths(isoFile, "moov/mvex/trex"); for (TrackExtendsBox innerTrex : trexs) { if (innerTrex.getTrackId() == track.getTrackMetaData().getTrackId()) { trex = innerTrex; sf = trunEntry.getSampleFlags(); } else { sf = trex.getDefaultSampleFlags();
throw new RuntimeException("File doesn't contain trex box but track fragments aren't fully self contained. Cannot determine sample size."); defaultSampleSize = trex.getDefaultSampleSize();
final List<TrackExtendsBox> trackExtendsBoxes = mvex.getBoxes(TrackExtendsBox.class); for (TrackExtendsBox trex : trackExtendsBoxes) { if (trex.getTrackId() == trackId) { List<SubSampleInformationBox> subss = Path.getPaths(isofile, "moof/traf/subs"); if (subss.size() > 0) { decodingTimeEntries.add(new TimeToSampleBox.Entry(1, tfhd.getDefaultSampleDuration())); } else { decodingTimeEntries.add(new TimeToSampleBox.Entry(1, trex.getDefaultSampleDuration())); sampleFlags = tfhd.getDefaultSampleFlags(); } else { sampleFlags = trex.getDefaultSampleFlags();
log.debug("trex - track id: {} duration: {} sample size: {}", trex.getTrackId(), trex.getDefaultSampleDuration(), trex.getDefaultSampleSize()); List<TrackExtendsBox> trexs = mvex.getBoxes(TrackExtendsBox.class); for (TrackExtendsBox trex : trexs) { log.debug("trex - track id: {} duration: {} sample size: {}", trex.getTrackId(), trex.getDefaultSampleDuration(), trex.getDefaultSampleSize());
public FragmentedMp4SampleList(long track, Container isofile, RandomAccessSource randomAccess) { this.isofile = isofile; this.randomAccess = randomAccess; List<TrackBox> tbs = Path.getPaths(isofile, "moov[0]/trak"); for (TrackBox tb : tbs) { if (tb.getTrackHeaderBox().getTrackId() == track) { trackBox = tb; } } if (trackBox == null) { throw new RuntimeException("This MP4 does not contain track " + track); } List<TrackExtendsBox> trexs = Path.getPaths(isofile, "moov[0]/mvex[0]/trex"); for (TrackExtendsBox box : trexs) { if (box.getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { trex = box; } } sampleEntries = new ArrayList<>(trackBox.getSampleTableBox().getSampleDescriptionBox().getBoxes(SampleEntry.class)); if (sampleEntries.size() != trackBox.getSampleTableBox().getSampleDescriptionBox().getBoxes().size()) throw new AssertionError("stsd contains not only sample entries. Something's wrong here! Bailing out"); sampleCache = (SoftReference<Sample>[]) Array.newInstance(SoftReference.class, size()); initAllFragments(); }
public static SampleFlags getSampleFlags(int i, TrackRunBox trun, org.mp4parser.boxes.iso14496.part12.TrackExtendsBox trex) { return trun.isFirstSampleFlagsPresent() ? trun.getFirstSampleFlags() : (trun.isSampleFlagsPresent() ? trun.getEntries().get(i).getSampleFlags() : trex.getDefaultSampleFlags()); }
final List<TrackExtendsBox> trackExtendsBoxes = mvex.getBoxes(TrackExtendsBox.class); for (TrackExtendsBox trex : trackExtendsBoxes) { if (trex.getTrackId() == trackId) { List<SubSampleInformationBox> subss = Path.getPaths(isofile, "moof/traf/subs"); if (subss.size() > 0) { decodingTimeEntries.add(new TimeToSampleBox.Entry(1, tfhd.getDefaultSampleDuration())); } else { decodingTimeEntries.add(new TimeToSampleBox.Entry(1, trex.getDefaultSampleDuration())); sampleFlags = tfhd.getDefaultSampleFlags(); } else { sampleFlags = trex.getDefaultSampleFlags();
log.debug("trex - track id: {} duration: {} sample size: {}", trex.getTrackId(), trex.getDefaultSampleDuration(), trex.getDefaultSampleSize()); List<TrackExtendsBox> trexs = mvex.getBoxes(TrackExtendsBox.class); for (TrackExtendsBox trex : trexs) { log.debug("trex - track id: {} duration: {} sample size: {}", trex.getTrackId(), trex.getDefaultSampleDuration(), trex.getDefaultSampleSize());
public FragmentedMp4SampleList(long track, Container isofile, RandomAccessSource randomAccess) { this.isofile = isofile; this.randomAccess = randomAccess; List<TrackBox> tbs = Path.getPaths(isofile, "moov[0]/trak"); for (TrackBox tb : tbs) { if (tb.getTrackHeaderBox().getTrackId() == track) { trackBox = tb; } } if (trackBox == null) { throw new RuntimeException("This MP4 does not contain track " + track); } List<TrackExtendsBox> trexs = Path.getPaths(isofile, "moov[0]/mvex[0]/trex"); for (TrackExtendsBox box : trexs) { if (box.getTrackId() == trackBox.getTrackHeaderBox().getTrackId()) { trex = box; } } sampleEntries = new ArrayList<>(trackBox.getSampleTableBox().getSampleDescriptionBox().getBoxes(SampleEntry.class)); if (sampleEntries.size() != trackBox.getSampleTableBox().getSampleDescriptionBox().getBoxes().size()) throw new AssertionError("stsd contains not only sample entries. Something's wrong here! Bailing out"); sampleCache = (SoftReference<Sample>[]) Array.newInstance(SoftReference.class, size()); initAllFragments(); }
protected ParsableBox createTrex(Movie movie, Track track) { TrackExtendsBox trex = new TrackExtendsBox(); trex.setTrackId(track.getTrackMetaData().getTrackId()); trex.setDefaultSampleDescriptionIndex(1); trex.setDefaultSampleDuration(0); trex.setDefaultSampleSize(0); SampleFlags sf = new SampleFlags(); if ("soun".equals(track.getHandler()) || "subt".equals(track.getHandler())) { // as far as I know there is no audio encoding // where the sample are not self contained. // same seems to be true for subtitle tracks sf.setSampleDependsOn(2); sf.setSampleIsDependedOn(2); } trex.setDefaultSampleFlags(sf); return trex; }
List<TrackExtendsBox> trexs = Path.getPaths(isoFile, "moov/mvex/trex"); for (TrackExtendsBox innerTrex : trexs) { if (innerTrex.getTrackId() == track.getTrackMetaData().getTrackId()) { trex = innerTrex; sf = trunEntry.getSampleFlags(); } else { sf = trex.getDefaultSampleFlags();
throw new RuntimeException("File doesn't contain trex box but track fragments aren't fully self contained. Cannot determine sample size."); defaultSampleSize = trex.getDefaultSampleSize();
protected ParsableBox createTrex(Movie movie, Track track) { TrackExtendsBox trex = new TrackExtendsBox(); trex.setTrackId(track.getTrackMetaData().getTrackId()); trex.setDefaultSampleDescriptionIndex(1); trex.setDefaultSampleDuration(0); trex.setDefaultSampleSize(0); SampleFlags sf = new SampleFlags(); if ("soun".equals(track.getHandler()) || "subt".equals(track.getHandler())) { // as far as I know there is no audio encoding // where the sample are not self contained. // same seems to be true for subtitle tracks sf.setSampleDependsOn(2); sf.setSampleIsDependedOn(2); } trex.setDefaultSampleFlags(sf); return trex; }
protected Box createTrex(Track track) { TrackExtendsBox trex = new TrackExtendsBox(); trex.setTrackId(track.getTrackMetaData().getTrackId()); trex.setDefaultSampleDescriptionIndex(1); trex.setDefaultSampleDuration(0); trex.setDefaultSampleSize(0); SampleFlags sf = new SampleFlags(); if ("soun".equals(track.getHandler()) || "subt".equals(track.getHandler()) || "text".equals(track.getHandler())) { // as far as I know there is no audio encoding // where the sample are not self contained. // same seems to be true for subtitle tracks sf.setSampleDependsOn(2); sf.setSampleIsDependedOn(2); } trex.setDefaultSampleFlags(sf); return trex; }