
org.jcodec.movtool.streaming.tracks.Jpeg2AVCTrack Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jcodec-streaming Show documentation
Show all versions of jcodec-streaming Show documentation
Pure Java implementation of video/audio codecs and formats
The newest version!
package org.jcodec.movtool.streaming.tracks;
import java.lang.IllegalStateException;
import java.lang.System;
import java.lang.ThreadLocal;
import java.lang.IllegalArgumentException;
import org.jcodec.codecs.mjpeg.JpegDecoder;
import org.jcodec.codecs.mjpeg.JpegToThumb2x2;
import org.jcodec.codecs.mjpeg.JpegToThumb4x4;
import org.jcodec.common.VideoCodecMeta;
import org.jcodec.common.VideoDecoder;
import org.jcodec.common.model.Size;
import org.jcodec.movtool.streaming.VirtualTrack;
/**
* This class is part of JCodec ( www.jcodec.org ) This software is distributed
* under FreeBSD License
*
* Virtual movie track that transcodes Jpeg to AVC on the fly.
*
* @author The JCodec project
*
*/
public class Jpeg2AVCTrack extends Transcode2AVCTrack {
public Jpeg2AVCTrack(VirtualTrack proresTrack, Size frameDim) {
super(proresTrack, frameDim);
}
@Override
protected void checkFourCC(VirtualTrack jpegTrack) {
String fourcc = jpegTrack.getCodecMeta().getFourcc();
if ("jpeg".equals(fourcc) || "mjpa".equals(fourcc))
return;
throw new IllegalArgumentException("Input track is not Jpeg");
}
@Override
protected int selectScaleFactor(Size frameDim) {
return frameDim.getWidth() >= 960 ? 2 : (frameDim.getWidth() > 480 ? 1 : 0);
}
@Override
protected VideoDecoder getDecoder(int scaleFactor) {
VideoCodecMeta meta = (VideoCodecMeta)src.getCodecMeta();
JpegDecoder decoder;
switch (scaleFactor) {
case 2:
decoder = new JpegToThumb2x2();
break;
case 1:
decoder = new JpegToThumb4x4();
break;
case 0:
decoder = new JpegDecoder();
break;
default:
throw new IllegalArgumentException("Unsupported scale factor: " + scaleFactor);
}
decoder.setInterlace(meta.isInterlaced(), meta.isTopFieldFirst());
return decoder;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy