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

ua.mobius.mscontrol.sdp.VideoFormat Maven / Gradle / Ivy

/*
 * 15/07/13 - Change notice:
 * This file has been modified by Mobius Software Ltd.
 * For more information please visit http://www.mobius.ua
 */
package ua.mobius.mscontrol.sdp;


/**
 * Standard JMF class -- see this class in the JMF Javadoc. Coding complete. Frame
 * rate is in frames per second.
 * 
 * @author Ken Larson
 * 
 */
public class VideoFormat extends Format {

    protected int maxDataLength = NOT_SPECIFIED;    // encodings:
    public static final String CINEPAK = "cvid";
    public static final String JPEG = "jpeg";
    public static final String JPEG_RTP = "jpeg/rtp";
    public static final String MPEG = "mpeg";
    public static final String MPEG_RTP = "mpeg/rtp";
    public static final String H261 = "h261";
    public static final String H261_RTP = "h261/rtp";
    public static final String H263 = "h263";
    public static final String H263_RTP = "h263/rtp";
    public static final String H263_1998_RTP = "h263-1998/rtp";
    public static final String RGB = "rgb";
    public static final String YUV = "yuv";
    public static final String IRGB = "irgb";
    public static final String SMC = "smc";
    public static final String RLE = "rle";
    public static final String RPZA = "rpza";
    public static final String MJPG = "mjpg";
    public static final String MJPEGA = "mjpa";
    public static final String MJPEGB = "mjpb";
    public static final String INDEO32 = "iv32";
    public static final String INDEO41 = "iv41";
    public static final String INDEO50 = "iv50";

    private int clockRate;
    
    public VideoFormat(String encoding) {
        super(encoding);
    }

    public VideoFormat(String encoding, float frameRate, int clockRate) {
        super(encoding);
        this.frameRate = (int) frameRate;
        this.clockRate = clockRate;
    }

    public int getClockRate() {
        return clockRate;
    }
    
    public int getMaxDataLength() {
        return maxDataLength;
    }

    @Override
    public Object clone() {
        return new VideoFormat(encoding, frameRate, clockRate);
    }

    @Override
    public String toString() {
        final StringBuffer b = new StringBuffer();

        if (encoding == null) {
            b.append("N/A");
        } else {
            b.append(encoding.toUpperCase());
        }
        if (FormatUtils.specified(frameRate)) {
            b.append(", ");
            b.append("FrameRate=");
            b.append(FormatUtils.frameRateToString(frameRate));
        }

        if (FormatUtils.specified(maxDataLength)) {
            b.append(", ");
            b.append("Length=");
            b.append(maxDataLength);
        }

        return b.toString();
    }

    @Override
    public boolean equals(Object format) {
        if (!super.equals(format)) {
            return false;
        }
        if (!(format instanceof VideoFormat)) {
            return false;
        }

        final VideoFormat oCast = (VideoFormat) format;
        return oCast.maxDataLength == this.maxDataLength && oCast.frameRate == this.frameRate;

    }

    @Override
    public int hashCode() {
        return super.hashCode();
    }
    
    @Override
    public boolean matches(Format format) {
        if (!super.matches(format)) {
            // if (getClass() == FormatUtils.videoFormatClass){
            // FormatTraceUtils.traceMatches(this, format, false); // otherwise
            // let subclass trace
            // }
            return false;
        }
        if (!(format instanceof VideoFormat)) {
            final boolean result = true;
            // if (getClass() == FormatUtils.videoFormatClass){
            // FormatTraceUtils.traceMatches(this, format, result);
            // }
            return result;
        }

        final VideoFormat oCast = (VideoFormat) format;

        // do not match against max data length.
        final boolean result = FormatUtils.matches(oCast.getFrameRate(), this.getFrameRate());

        // if (getClass() == FormatUtils.videoFormatClass){
        // FormatTraceUtils.traceMatches(this, format, result); // otherwise let
        // subclass trace
        // }

        return result;

    }

    @Override
    public Format relax() {
        final VideoFormat result = (VideoFormat) super.relax();
        result.maxDataLength = NOT_SPECIFIED;
        result.frameRate = NOT_SPECIFIED;
        return result;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy