All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jcodec.containers.mkv.muxer.MKVMuxerTrack Maven / Gradle / Ivy

There is a newer version: 0.2.5
Show newest version
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 trackBlocks;
    
    public MKVMuxerTrack() {
        this.trackBlocks = new ArrayList();
        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;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy