cz.cuni.jagrlib.piece
Class CompressedFormatTransform

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.DefaultFileFormat
              extended by cz.cuni.jagrlib.DefaultRasterFileFormat
                  extended by cz.cuni.jagrlib.piece.CompressedFormatTransform
All Implemented Interfaces:
Breakable, DataFileFormat, Property, Template

public class CompressedFormatTransform
extends DefaultRasterFileFormat

Lossy image compression (using discrete image transform, quantization, block coding and dynamic entropy coder).

Since:
0.25
See Also:
CompressedFormatTransform.java

Field Summary
static java.lang.String BLOCK_HEIGHT
           
static java.lang.String BLOCK_WIDTH
           
protected  int blockHeight
          Transform block height.
protected  int blockWidth
          Transform block width.
static int MAGIC
          16-bit magic number (used at the file beginning).
static java.lang.String PREDICTION
           
protected  float quality
          Actual coding quality (affects encoder quantization tables).
static java.lang.String QUALITY
           
static RegPiece reg
          Static registration instance for this class.
static java.lang.String STAT_BLOCK
           
protected  int statBlock
          Number of block which is logged to LogFile.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
protected  boolean usePrediction
          Use inter-block prediction?
 
Fields inherited from class cz.cuni.jagrlib.DefaultRasterFileFormat
CATEGORY
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
Fields inherited from interface cz.cuni.jagrlib.iface.DataFileFormat
DOUBLE_STREAM
 
Fields inherited from interface cz.cuni.jagrlib.iface.Property
LOGGING, STATISTICS, TEXT_DESCRIPTION
 
Fields inherited from interface cz.cuni.jagrlib.Template
ALL_PLUGS, C_1D, C_2D, C_3D, C_ALPHA, C_BINARY, C_BREP, C_CAMERA, C_CIRCLE, C_CLIP, C_COMPRESSION, C_CURVE, C_DATA, C_DRAW, C_EDITOR, C_ELLIPSE, C_FILL, C_FILTER, C_FLOAT, C_FUNCTION, C_IMAGE, C_INTEGER, C_IO, C_LIGHT, C_LINE, C_METRIC, C_POLYGON, C_PROJECTION, C_RADIOSITY, C_RASTER, C_RENDER, C_SAMPLE, C_SCENE, C_SET, C_SOLID, C_TEXT, C_TRANSFORM, C_VECTOR, C_VIEWER, C_WORKER, CAT_EMPTY, EMPTY, IFACE, JAGRLIB, JAGRLIB2, MANIPULATOR_COMBO, MANIPULATOR_CUSTOM, MANIPULATOR_DEFAULT, MANIPULATOR_MULTILINE, PL_ALPHAMASK, PL_BITMASK, PL_CAUSTIC, PL_CODEC, PL_COLORMAP, PL_COMPARE, PL_DATA, PL_DIRECT, PL_EDITOR, PL_FILTER, PL_FUNCTION, PL_IMAGE, PL_IMPORT, PL_INPUT, PL_INTERSECTION, PL_LIGHTSOURCE, PL_ORDER, PL_OUTPUT, PL_PALETTE, PL_PHOTON, PL_PROPERTY, PL_QUANTIZER, PL_RASTER, PL_RENDER, PL_SHADOW, PL_STREAM, PL_TRANSFORM, PL_TRIGGER, PL_VOLUME, PL_WINDOW, TYPE_BOOLEAN, TYPE_DOUBLE, TYPE_FLOAT, TYPE_INTEGER, TYPE_LONG, TYPE_OBJECT, TYPE_STRING
 
Constructor Summary
CompressedFormatTransform()
           
 
Method Summary
protected  void commonLoad(BitStream stream, RasterGraphics g)
          Common load code.
protected  void commonSave(BitStream stream, RasterGraphics g)
          Common save code.
 java.lang.String[] fileNameMasks()
          Returns file-name masks associated with the file-format type.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 int headerLength()
          Length of file-format header (number of bytes which is necessary for file-format matching).
protected  void checkBlockSize(DiscreteTransform transform, int width, int height)
           
protected  void logArray(java.lang.String str, double[] arr)
           
protected  void logArray(java.lang.String str, int[] arr)
           
 double match(byte[] header, java.lang.String fileName)
          File-format match test.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 
Methods inherited from class cz.cuni.jagrlib.DefaultRasterFileFormat
loadFile, loadFile, saveFile, saveFile
 
Methods inherited from class cz.cuni.jagrlib.DefaultFileFormat
closeFile, init, readFloat, readLine, readParameters, readToken, readUnsigned16, readUnsigned16, readUnsigned32, writeFloat, writeLine, writeParameters, writeUnsigned16, writeUnsigned16, writeUnsigned32
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, isCompatible, isCompatible, isConnected, logError, logWarning, myInterface, newInputPlug, newOptOutputPlug, newOutputPlug, newPlug, noTemplates, propBegin, propBounds, propDefault, propEnd, propEnum, propManipulator, propManipulator, setProgressListener, setRegStrings, setTemplateDynamic, stop
 
Methods inherited from class cz.cuni.jagrlib.DefaultProperty
booleanProperty, booleanProperty, colorDoubleProperty, colorProperty, commit, doubleProperty, doubleProperty, doubleProperty, enumProperty, floatProperty, floatProperty, floatProperty, intProperty, intProperty, intProperty, longProperty, longProperty, longProperty, set, stringProperty
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface cz.cuni.jagrlib.iface.Property
commit
 
Methods inherited from interface cz.cuni.jagrlib.Breakable
setProgressListener, stop
 

Field Detail

blockWidth

protected int blockWidth
Transform block width.


blockHeight

protected int blockHeight
Transform block height.


quality

protected float quality
Actual coding quality (affects encoder quantization tables).


usePrediction

protected boolean usePrediction
Use inter-block prediction?


statBlock

protected int statBlock
Number of block which is logged to LogFile. -1 to swith-off the statistics.


MAGIC

public static final int MAGIC
16-bit magic number (used at the file beginning).

See Also:
Constant Field Values

BLOCK_WIDTH

public static final java.lang.String BLOCK_WIDTH
See Also:
Constant Field Values

BLOCK_HEIGHT

public static final java.lang.String BLOCK_HEIGHT
See Also:
Constant Field Values

QUALITY

public static final java.lang.String QUALITY
See Also:
Constant Field Values

PREDICTION

public static final java.lang.String PREDICTION
See Also:
Constant Field Values

STAT_BLOCK

public static final java.lang.String STAT_BLOCK
See Also:
Constant Field Values

TEMPLATE_NAME

protected static final java.lang.String TEMPLATE_NAME
Object template identifier.

See Also:
Constant Field Values

reg

public static final RegPiece reg
Static registration instance for this class. Automatically initialized in class-loading time.

Constructor Detail

CompressedFormatTransform

public CompressedFormatTransform()
Method Detail

checkBlockSize

protected void checkBlockSize(DiscreteTransform transform,
                              int width,
                              int height)

logArray

protected void logArray(java.lang.String str,
                        double[] arr)

logArray

protected void logArray(java.lang.String str,
                        int[] arr)

commonLoad

protected void commonLoad(BitStream stream,
                          RasterGraphics g)
                   throws java.io.IOException
Common load code. Binary format & principle: see commonSave().

Overrides:
commonLoad in class DefaultRasterFileFormat
Parameters:
stream - Opened input bit-stream.
g - Checked raster-graphics object.
Throws:
java.io.IOException

commonSave

protected void commonSave(BitStream stream,
                          RasterGraphics g)
                   throws java.io.IOException
Common save code.

Binary format & principle:

  1. Pixel-transfer function transforms individual pixel values (example: RGB -> YCbCr). Each band will be processed individually.
  2. Discrete image transform is appplied to each image block.
  3. Block of coefficients is quantized using specified quantizer.
  4. Quantized block is transformed (and coded) using the block-codec (and underlying entropy codec).

Overrides:
commonSave in class DefaultRasterFileFormat
Parameters:
stream - Opened output bit-stream.
g - Checked raster-graphics object.
Throws:
java.io.IOException

headerLength

public int headerLength()
Length of file-format header (number of bytes which is necessary for file-format matching).

Specified by:
headerLength in interface DataFileFormat
Specified by:
headerLength in class DefaultFileFormat
Returns:
Number of bytes from beginning of a file which are enough for file-format match test.
See Also:
match(byte[], java.lang.String)

match

public double match(byte[] header,
                    java.lang.String fileName)
File-format match test. Guesses whether the binary file-header (and file-name) can belong to this file-format type.

Specified by:
match in interface DataFileFormat
Specified by:
match in class DefaultFileFormat
Parameters:
header - Bytes from beginning of the file.
fileName - Optional file-name string.
Returns:
Probability of being my file-format type (0.0 .. no way, 0.5 .. maybe, 0.9 .. almost sure, 1.0 .. absolutely - no need to check another formats).
See Also:
headerLength(), fileNameMasks()

fileNameMasks

public java.lang.String[] fileNameMasks()
Returns file-name masks associated with the file-format type. Needs not be implemented in systems where "file-name -> file-type" mapping is irrelevant.

Specified by:
fileNameMasks in interface DataFileFormat
Specified by:
fileNameMasks in class DefaultFileFormat
Returns:
Array of wild-card file-name masks (e.g. ["*.png"]) or null.
See Also:
match(byte[], java.lang.String)

set

public void set(java.lang.String key,
                java.lang.Object value)
Sets the given property.

Specified by:
set in interface Property
Overrides:
set in class DefaultProperty
Parameters:
key - Key string.
value - The new value.
See Also:
Property.commit()

get

public java.lang.Object get(java.lang.String key)
Gets the given property.

Specified by:
get in interface Property
Overrides:
get in class DefaultProperty
Parameters:
key - Key string.
Returns:
The actual value or null.

setTemplate

public static int setTemplate(Template t,
                              int ord)
General-purpose registration routine. Sets all plugs, strings, etc. to the given Template.