cz.cuni.jagrlib.piece
Class ZigZagCodec

java.lang.Object
  extended by cz.cuni.jagrlib.DefaultProperty
      extended by cz.cuni.jagrlib.Piece
          extended by cz.cuni.jagrlib.piece.ZigZagCodec
All Implemented Interfaces:
Breakable, BlockCodec, PersistentParamsBinary, Property, Template

public class ZigZagCodec
extends Piece
implements BlockCodec

Zig-zag block coding. Used as back-end in block transform compression methods of raster 2D data.

Since:
0.25
See Also:
ZigZagCodec.java

Field Summary
protected static java.lang.String CATEGORY
          Object category.
protected  EntropyCodec codec
          Actual entropy codec (accelerator).
protected static int CTX_SKIP
          Context number for zero-skipping.
protected static int CTX_VALUE
          Context number for non-zero values encoding.
protected  int height
          Actual block height in samples.
protected  java.lang.StringBuffer logSb
          StringBuffer for logging purposes.
static RegPiece reg
          Static registration instance for this class.
protected static java.lang.String TEMPLATE_NAME
          Object template identifier.
protected  int variant
          Actual codec variant (not used yet).
protected  int width
          Actual block width in samples.
 
Fields inherited from class cz.cuni.jagrlib.Piece
channels, info, pl, plugs, TEMPLATE_TYPE, userBreak
 
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
ZigZagCodec()
           
 
Method Summary
 int decode(int[] data, int[][] predict)
          Block decoding.
 void encode(int[] data, int[][] predict)
          Block coding.
protected  int findNonzero(int[] data, int[] pos)
          Finds next non-zero number, alters pos, returns CTX_SKIP-encoded value.
 java.lang.Object get(java.lang.String key)
          Gets the given property.
 void init()
          Prepares the underlying EntropyCodec.
 boolean loadData(byte[] data)
          Loads instance parameters from (previously stored) binary data.
 void set(java.lang.String key, java.lang.Object value)
          Sets the given property.
 void setBlockSize(int width, int height)
          Sets actual block size.
static int setTemplate(Template t, int ord)
          General-purpose registration routine.
 int setVariant(int variant)
          Set actual codec variant (context).
protected  boolean step(int[] pos)
          Performs one step, returns true if succeeded.
protected  boolean step(int[] pos, int size)
          Performs step of the given size, returns true if succeeded.
 byte[] storeData()
          Pack instance parameters into binary format.
 
Methods inherited from class cz.cuni.jagrlib.Piece
className, connect, findPlug, findPlug, getInfo, getInterface, getInterface, getPlug, getReg, init, 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
 

Field Detail

variant

protected int variant
Actual codec variant (not used yet).


width

protected int width
Actual block width in samples.


height

protected int height
Actual block height in samples.


codec

protected EntropyCodec codec
Actual entropy codec (accelerator).


logSb

protected java.lang.StringBuffer logSb
StringBuffer for logging purposes.

See Also:
Property.LOGGING

CTX_VALUE

protected static final int CTX_VALUE
Context number for non-zero values encoding.

See Also:
Constant Field Values

CTX_SKIP

protected static final int CTX_SKIP
Context number for zero-skipping.

See Also:
Constant Field Values

TEMPLATE_NAME

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

See Also:
Constant Field Values

CATEGORY

protected static final java.lang.String CATEGORY
Object category.

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

ZigZagCodec

public ZigZagCodec()
Method Detail

step

protected final boolean step(int[] pos)
Performs one step, returns true if succeeded.


step

protected final boolean step(int[] pos,
                             int size)
Performs step of the given size, returns true if succeeded.


findNonzero

protected final int findNonzero(int[] data,
                                int[] pos)
Finds next non-zero number, alters pos, returns CTX_SKIP-encoded value.


init

public void init()
          throws java.io.IOException
Prepares the underlying EntropyCodec. Should be called before any of encode(int[], int[][])s or decode(int[], int[][])s.

Specified by:
init in interface BlockCodec
Throws:
java.io.IOException

setVariant

public int setVariant(int variant)
Set actual codec variant (context). Should set mode of the underlying EntropyCodec too.

Specified by:
setVariant in interface BlockCodec
Parameters:
variant - Variant number (from 0).
Returns:
Old variant number.
See Also:
setBlockSize(int, int)

setBlockSize

public void setBlockSize(int width,
                         int height)
                  throws java.io.IOException
Sets actual block size. Can be used both for 1D and 2D quantization.

Specified by:
setBlockSize in interface BlockCodec
Parameters:
width - Horizontal block size (1D block size).
height - Vertical block size (1 for 1D).
Throws:
java.io.IOException
See Also:
setVariant(int)

encode

public void encode(int[] data,
                   int[][] predict)
            throws java.io.IOException
Block coding. Converts matrix of integer data to EntropyCodec input. Connected EntropyCodec module will be feeded by them.

Specified by:
encode in interface BlockCodec
Parameters:
data - Source data to be encoded.
predict - Pre-allocated array used for predicition passing. predict[1] will be used as source, predict[0] is filled with prediction for the next block[s]. Can be null.
Throws:
java.io.IOException
See Also:
decode(int[], int[][])

decode

public int decode(int[] data,
                  int[][] predict)
           throws java.io.IOException
Block decoding. Reads input from underlying EntropyCodec and converts them back into given integer matrix.

Specified by:
decode in interface BlockCodec
Parameters:
data - Target data array (pre-allocated to sufficient size).
predict - Pre-allocated array used for predicition passing. predict[1] will be used as source, predict[0] is filled with prediction for the next block[s]. Can be null.
Returns:
Number of decoded array items (should be with * height if successful).
Throws:
java.io.IOException
See Also:
encode(int[], int[][])

storeData

public byte[] storeData()
Pack instance parameters into binary format.

Specified by:
storeData in interface PersistentParamsBinary
Returns:
Data array to be stored into binary stream. Can be null. The array can be shared by all method calls.
See Also:
loadData(byte[])

loadData

public boolean loadData(byte[] data)
Loads instance parameters from (previously stored) binary data.

Specified by:
loadData in interface PersistentParamsBinary
Parameters:
data - Binary data to be interpreted. Can be null.
Returns:
true if successful.
See Also:
storeData()

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.