package org.jcodec.containers.mkv.muxer; import static org.jcodec.containers.mkv.boxes.MkvBlock.keyFrame; import java.util.ArrayList; import java.util.List; import org.jcodec.common.MuxerTrack; import org.jcodec.common.VideoCodecMeta; import org.jcodec.common.model.Packet; import org.jcodec.containers.mkv.boxes.MkvBlock; /** * This class is part of JCodec ( www.jcodec.org ) This software is distributed * under FreeBSD License * * @author The JCodec project * */ public class MKVMuxerTrack implements MuxerTrack { public static enum MKVMuxerTrackType {VIDEO }; public MKVMuxerTrackType type; public VideoCodecMeta videoMeta; public String codecId; public int trackNo; private int frameDuration; List<MkvBlock> trackBlocks; public MKVMuxerTrack() { this.trackBlocks = new ArrayList<MkvBlock>(); this.type = MKVMuxerTrackType.VIDEO; } static final int DEFAULT_TIMESCALE = 1000000000; //NANOSECOND static final int NANOSECONDS_IN_A_MILISECOND = 1000000; static final int MULTIPLIER = DEFAULT_TIMESCALE/NANOSECONDS_IN_A_MILISECOND; public int getTimescale(){ return NANOSECONDS_IN_A_MILISECOND; } @Override public void addFrame(Packet outPacket) { MkvBlock frame = keyFrame(trackNo, 0, outPacket.getData()); frame.absoluteTimecode = outPacket.getPts() - 1; trackBlocks.add(frame); } public long getTrackNo() { return trackNo; } }