Package javax.media.format

Source Code of javax.media.format.JPEGFormat

package javax.media.format;

import javax.media.Format;

import net.sf.fmj.codegen.FormatTraceUtils;
import net.sf.fmj.utility.FormatUtils;

/**
* Standard JMF class -- see <a href="http://java.sun.com/products/java-media/jmf/2.1.1/apidocs/javax/media/format/JPEGFormat.html" target="_blank">this class in the JMF Javadoc</a>.
* Coding complete.
* @author Ken Larson
*
*/
public class JPEGFormat extends VideoFormat
{

  public static final int DEC_422 = 0;
  public static final int DEC_420 = 1;
  public static final int DEC_444 = 2;
  public static final int DEC_402 = 3;
  public static final int DEC_411 = 4;

  int qFactor = NOT_SPECIFIED;
  int decimation = NOT_SPECIFIED;
 
  public JPEGFormat()
  {
    super(JPEG);
    dataType = Format.byteArray;

  }
 
  public JPEGFormat(java.awt.Dimension size,
            int maxDataLength,
            Class dataType,
            float frameRate,
            int q,
            int dec)
  {
    super(JPEG, size, maxDataLength, dataType, frameRate);
    this.qFactor = q;
    this.decimation = dec;

  }
 
  public int getQFactor()
  {  return qFactor;
  }
 
  public int getDecimation()
  {  return decimation;
  }
 
  public Object clone()
  {  return new JPEGFormat(FormatUtils.clone(size), maxDataLength, dataType, frameRate, qFactor, decimation);
  }
 
  protected void copy(Format f)
  {
    super.copy(f);
    final JPEGFormat oCast = (JPEGFormat) f;  // it has to be a JPEGFormat, or ClassCastException will be thrown.
    this.qFactor = oCast.qFactor;
    this.decimation = oCast.decimation;
  }
 
  public String toString()
  {
    // examples:
    // jpeg video format: dataType = class [B
    // jpeg video format: size = 1x1 FrameRate = 1.0 maxDataLength = 1000 dataType = class [S q factor = 2 decimation = 3
    // jpeg video format: size = 1x1 FrameRate = 1.0 maxDataLength = 1000 dataType = class [S decimation = 3
 
    final StringBuffer b = new StringBuffer();
    b.append("jpeg video format:");
    if (FormatUtils.specified(size))
      b.append(" size = " + size.width + "x" + size.height);
    if (FormatUtils.specified(frameRate))
      b.append(" FrameRate = " + frameRate);
    if (FormatUtils.specified(maxDataLength))
      b.append(" maxDataLength = " + maxDataLength);
    if (FormatUtils.specified(dataType))
      b.append(" dataType = " + dataType);
    if (FormatUtils.specified(qFactor))
      b.append(" q factor = " + qFactor);
    if (FormatUtils.specified(decimation))
      b.append(" decimation = " + decimation);
   
    return b.toString();
  }
 
  public boolean equals(Object format)
  {
    if (!super.equals(format))
      return false;
   
    if (!(format instanceof JPEGFormat)) 
    {
      return false;
    }
   
    final JPEGFormat oCast = (JPEGFormat) format;
    return
      this.qFactor == oCast.qFactor &&
      this.decimation == oCast.decimation; 
  }
 
  public boolean matches(Format format)
  {
    if (!super.matches(format))
    { 
      FormatTraceUtils.traceMatches(this, format, false);
      return false;
    }
   
    if (!(format instanceof JPEGFormat))
    { 
      final boolean result = true;
      FormatTraceUtils.traceMatches(this, format, result);
      return result;
    }
   
    final JPEGFormat oCast = (JPEGFormat) format;

    final boolean result =
      FormatUtils.matches(oCast.qFactor, this.qFactor) &&
      FormatUtils.matches(oCast.decimation, this.decimation);
   
    FormatTraceUtils.traceMatches(this, format, result);
   
    return result;
  }
 
  public Format intersects(Format other)
  {
    final Format result = super.intersects(other);

    if (other instanceof JPEGFormat)
    {
      final JPEGFormat resultCast = (JPEGFormat) result;
     
      final JPEGFormat oCast = (JPEGFormat) other;
      if (getClass().isAssignableFrom(other.getClass()))
      { 
        // "other" was cloned.
       
        if (FormatUtils.specified(this.qFactor))
          resultCast.qFactor = this.qFactor;
        if (FormatUtils.specified(this.decimation))
          resultCast.decimation = this.decimation;
       
       
      }
      else if (other.getClass().isAssignableFrom(getClass()))
      {  // this was cloned
       
        if (!FormatUtils.specified(resultCast.qFactor))
          resultCast.qFactor = oCast.qFactor;
        if (!FormatUtils.specified(resultCast.decimation))
          resultCast.decimation = oCast.decimation;
     
     
      }
    }
   
    FormatTraceUtils.traceIntersects(this, other, result);
   
    return result;
  }
}
TOP

Related Classes of javax.media.format.JPEGFormat

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.