public static Rational R1(int num) { return R(num, 1); }
public VideoStreamDescriptor() { this.frameRates = new Rational[] { null, new Rational(24000, 1001), new Rational(24, 1), new Rational(25, 1), new Rational(30000, 1001), new Rational(30, 1), new Rational(50, 1), new Rational(60000, 1001), new Rational(60, 1), null, null, null, null, null, null, null}; }
public static Rational parse(String string) { int idx = string.indexOf(":"); if (idx < 0) { idx = string.indexOf("/"); } if (idx > 0) { String num = string.substring(0, idx); String den = string.substring(idx + 1); return new Rational(parseInt(num), parseInt(den)); } return R(parseInt(string), 1); }
public Size getDisplayDimensions() { int width = 0, height = 0; if (sampleEntries.get(0) instanceof VideoSampleEntry) { VideoSampleEntry vse = (VideoSampleEntry) sampleEntries.get(0); PixelAspectExt paspBox = Box.findFirst(vse, PixelAspectExt.class, PixelAspectExt.fourcc()); Rational pasp = paspBox != null ? paspBox.getRational() : new Rational(1, 1); width = (int) (pasp.getNum() * vse.getWidth()) / pasp.getDen(); height = (int) vse.getHeight(); } return new Size(width, height); }
public static List<Edit> editsOnEdits(Rational mvByTrack, List<Edit> lower, List<Edit> higher) { List<Edit> result = new ArrayList<Edit>(); List<Edit> next = new ArrayList<Edit>(lower); for (Edit edit : higher) { long startMv = mvByTrack.multiply(edit.getMediaTime()); Pair<List<Edit>> split = split(next, mvByTrack.flip(), startMv); Pair<List<Edit>> split2 = split(split.getB(), mvByTrack.flip(), startMv + edit.getDuration()); result.addAll(split2.getA()); next = split2.getB(); } return result; } }
if (total + edit.getDuration() > tvMv) { int leftDurMV = (int) (tvMv - total); int leftDurMedia = trackByMv.multiplyS(leftDurMV);
public static List<Edit> editsOnEdits(Rational mvByTrack, List<Edit> lower, List<Edit> higher) { List<Edit> result = new ArrayList<Edit>(); List<Edit> next = new ArrayList<Edit>(lower); for (Edit edit : higher) { long startMv = mvByTrack.multiplyLong(edit.getMediaTime()); Pair<List<Edit>> split = splitEdits(next, mvByTrack.flip(), startMv); Pair<List<Edit>> split2 = splitEdits(split.getB(), mvByTrack.flip(), startMv + edit.getDuration()); result.addAll(split2.getA()); next = split2.getB(); } return result; } }
public Size getDisplayDimensions() { int width = 0, height = 0; if (sampleEntries.get(0) instanceof VideoSampleEntry) { VideoSampleEntry vse = (VideoSampleEntry) sampleEntries.get(0); PixelAspectExt paspBox = Box.findFirst(vse, PixelAspectExt.class, PixelAspectExt.fourcc()); Rational pasp = paspBox != null ? paspBox.getRational() : new Rational(1, 1); width = (int) (pasp.getNum() * vse.getWidth()) / pasp.getDen(); height = (int) vse.getHeight(); } return new Size(width, height); }
public static List<Edit> editsOnEdits(Rational mvByTrack, List<Edit> lower, List<Edit> higher) { List<Edit> result = new ArrayList<Edit>(); List<Edit> next = new ArrayList<Edit>(lower); for (Edit edit : higher) { long startMv = mvByTrack.multiply(edit.getMediaTime()); Pair<List<Edit>> split = split(next, mvByTrack.flip(), startMv); Pair<List<Edit>> split2 = split(split.getB(), mvByTrack.flip(), startMv + edit.getDuration()); result.addAll(split2.getA()); next = split2.getB(); } return result; } }
if (total + edit.getDuration() > tvMv) { int leftDurMV = (int) (tvMv - total); int leftDurMedia = trackByMv.multiplyS(leftDurMV);
public Rational divideByInt(int scalar) { return new Rational(num, den * scalar); }
public Size getDisplayDimensions() { int width = 0, height = 0; if (sampleEntries != null && !sampleEntries.isEmpty() && sampleEntries.get(0) instanceof VideoSampleEntry) { VideoSampleEntry vse = (VideoSampleEntry) sampleEntries.get(0); PixelAspectExt paspBox = NodeBox.findFirst(vse, PixelAspectExt.class, PixelAspectExt.fourcc()); Rational pasp = paspBox != null ? paspBox.getRational() : new Rational(1, 1); width = pasp.getNum() * vse.getWidth() / pasp.getDen(); height = vse.getHeight(); } return new Size(width, height); }
public static Rational R(int num) { return R(num, 1); }
if (total + edit.getDuration() > tvMv) { int leftDurMV = (int) (tvMv - total); int leftDurMedia = trackByMv.multiplyS(leftDurMV);
public Rational divideBy(int scalar) { return new Rational(num, den * scalar); }
public Y4MDemuxer(SeekableByteChannel _is) throws IOException { this.is = _is; ByteBuffer buf = NIOUtils.fetchFromChannel(is, 2048); String[] header = splitC(readLine(buf), ' '); if (!"YUV4MPEG2".equals(header[0])) { invalidFormat = "Not yuv4mpeg stream"; return; } String chroma = find(header, 'C'); if (chroma != null && !chroma.startsWith("420")) { invalidFormat = "Only yuv420p is supported"; return; } width = Integer.parseInt(find(header, 'W')); height = Integer.parseInt(find(header, 'H')); String fpsStr = find(header, 'F'); if (fpsStr != null) { String[] numden = splitC(fpsStr, ':'); fps = new Rational(Integer.parseInt(numden[0]), Integer.parseInt(numden[1])); } is.setPosition(buf.position()); bufSize = width * height; bufSize += bufSize / 2; long fileSize = is.size(); totalFrames = (int) (fileSize / (bufSize + 7)); totalDuration = (totalFrames * fps.getDen()) / fps.getNum(); }