jj2000.j2k.entropy.encoder
Class LayersInfo

java.lang.Object
  |
  +--jj2000.j2k.entropy.encoder.LayersInfo

public class LayersInfo
extends java.lang.Object

This class stores the specification of a layer distribution in the bit stream. The specification is made of optimization points and a number of extra layers to add between the optimization points. Each optimization point creates a layer which is optimized by the rate allocator to the specified target bitrate. The extra layers are added by the rate allocator between the optimized layers, with the difference that they are not optimized (i.e. they have no precise target bitrate).

The overall target bitrate for the bit stream is always added as the last optimization point without any extra layers after it. If there are some optimization points whose target bitrate is larger than the overall target bitrate, the overall target bitrate will still appear as the last optimization point, even though it does not follow the increasing target bitrate order of the other optimization points. The rate allocator is responsible for eliminating layers that have target bitrates larger than the overall target bitrate.

Optimization points can be added with the addOptPoint() method. It takes the target bitrate for the optimized layer and the number of extra layers to add after it.

Information about the total number of layers, total number of optimization points, target bitrates, etc. can be obtained with the other methods.


Field Summary
(package private)  int[] extralyrs
          The number of extra layers to be added after an optimized layer.
(package private)  int nopt
          The number of optimized layers, or optimization points, without counting the extra one coming from the overall target bitrate
(package private)  float[] optbrate
          The target bitrate to which specified layers should be optimized.
private static int SZ_INCR
          The size increment for the arrays
private static int SZ_INIT
          The initial size for the arrays: 10
(package private)  float totbrate
          The overall target bitrate, for the whole bit stream
(package private)  int totlyrs
          The total number of layers
 
Constructor Summary
LayersInfo(float brate)
          Creates a new LayersInfo object.
 
Method Summary
 void addOptPoint(float brate, int elyrs)
          Adds a new optimization point, with target bitrate 'brate' and with 'elyrs' (unoptimized) extra layers after it.
 int getExtraLayers(int n)
          Returns the number of extra layers to add after the optimization point 'n', but before optimization point 'n+1'.
 int getNOptPoints()
          Returns the number of layers to optimize, or optimization points, as specified by this object.
 float getTargetBitrate(int n)
          Returns the target bitrate of the optmimization point 'n'.
 float getTotBitrate()
          Returns the overall target bitrate for the entire bit stream.
 int getTotNumLayers()
          Returns the total number of layers, according to the layer specification of this object and the overall target bitrate.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

SZ_INIT

private static final int SZ_INIT
The initial size for the arrays: 10

See Also:
Constant Field Values

SZ_INCR

private static final int SZ_INCR
The size increment for the arrays

See Also:
Constant Field Values

totlyrs

int totlyrs
The total number of layers


totbrate

float totbrate
The overall target bitrate, for the whole bit stream


nopt

int nopt
The number of optimized layers, or optimization points, without counting the extra one coming from the overall target bitrate


optbrate

float[] optbrate
The target bitrate to which specified layers should be optimized.


extralyrs

int[] extralyrs
The number of extra layers to be added after an optimized layer. After the layer that is optimized to optbrate[i], extralyrs[i] extra layers should be added. These layers are allocated between the bitrate optbrate[i] and the next optimized bitrate optbrate[i+1] or, if it does not exist, the overall target bitrate.

Constructor Detail

LayersInfo

public LayersInfo(float brate)
Creates a new LayersInfo object. The overall target bitrate 'brate' is always an extra optimization point, with no extra layers are after it. Note that any optimization points that are added with addOptPoint() are always added before the overall target bitrate.

Parameters:
brate - The overall target bitrate for the bit stream
Method Detail

getTotBitrate

public float getTotBitrate()
Returns the overall target bitrate for the entire bit stream.

Returns:
The overall target bitrate

getTotNumLayers

public int getTotNumLayers()
Returns the total number of layers, according to the layer specification of this object and the overall target bitrate.

Returns:
The total number of layers, according to the layer spec.

getNOptPoints

public int getNOptPoints()
Returns the number of layers to optimize, or optimization points, as specified by this object.

Returns:
The number of optimization points

getTargetBitrate

public float getTargetBitrate(int n)
Returns the target bitrate of the optmimization point 'n'.

Parameters:
n - The optimization point index (starts at 0).
Returns:
The target bitrate (in bpp) for the optimization point 'n'.

getExtraLayers

public int getExtraLayers(int n)
Returns the number of extra layers to add after the optimization point 'n', but before optimization point 'n+1'. If there is no optimization point 'n+1' then they should be added before the overall target bitrate.

Parameters:
n - The optimization point index (starts at 0).
Returns:
The number of extra (unoptimized) layers to add after the optimization point 'n'

addOptPoint

public void addOptPoint(float brate,
                        int elyrs)
Adds a new optimization point, with target bitrate 'brate' and with 'elyrs' (unoptimized) extra layers after it. The target bitrate 'brate' must be larger than the previous optimization point. The arguments are checked and IllegalArgumentException is thrown if they are not correct.

Parameters:
brate - The target bitrate for the optimized layer.
elyrs - The number of extra (unoptimized) layers to add after the optimized layer.