public static TapeTimecode tapeTimecode(long frame, boolean dropFrame, int tapeFps) { if (dropFrame) { long D = frame / 17982; long M = frame % 17982; frame += 18 * D + 2 * ((M - 2) / 1798); } long sec = frame / tapeFps; return new TapeTimecode((short) (sec / 3600), (byte) ((sec / 60) % 60), (byte) (sec % 60), (byte) (frame % tapeFps), dropFrame, tapeFps); } }
private TapeTimecode getTimecode(int startCounter, int frameNo, TimecodeSampleEntry entry) { int frame = dropFrameAdjust(frameNo + startCounter, entry); int sec = frame / entry.getNumFrames(); return new TapeTimecode((short) (sec / 3600), (byte) ((sec / 60) % 60), (byte) (sec % 60), (byte) (frame % entry.getNumFrames()), entry.isDropFrame()); }
private TapeTimecode getTimecode(int startCounter, int frameNo, TimecodeSampleEntry entry) { int frame = dropFrameAdjust(frameNo + startCounter, entry); int sec = frame / entry.getNumFrames(); return new TapeTimecode((short) (sec / 3600), (byte) ((sec / 60) % 60), (byte) (sec % 60), (byte) (frame % entry.getNumFrames()), entry.isDropFrame()); }
public static GOPHeader read(ByteBuffer bb) { BitReader _in = BitReader.createBitReader(bb); boolean dropFrame = _in.read1Bit() == 1; short hours = (short) _in.readNBit(5); byte minutes = (byte) _in.readNBit(6); _in.skip(1); byte seconds = (byte) _in.readNBit(6); byte frames = (byte) _in.readNBit(6); boolean closedGop = _in.read1Bit() == 1; boolean brokenLink = _in.read1Bit() == 1; return new GOPHeader(new TapeTimecode(hours, minutes, seconds, frames, dropFrame, 0), closedGop, brokenLink); }