Package jj2000.j2k.entropy.encoder
Class EBCOTRateAllocator
java.lang.Object
jj2000.j2k.image.ImgDataAdapter
jj2000.j2k.entropy.encoder.PostCompRateAllocator
jj2000.j2k.entropy.encoder.EBCOTRateAllocator
- All Implemented Interfaces:
ImgData
This implements the EBCOT post compression rate allocation algorithm. This
algorithm finds the most suitable truncation points for the set of
code-blocks, for each layer target bitrate. It works by first collecting
the rate distortion info from all code-blocks, in all tiles and all
components, and then running the rate-allocation on the whole image at
once, for each layer.
This implementation also provides some timing features. They can be enabled by setting the 'DO_TIMING' constant of this class to true and recompiling. The timing uses the 'System.currentTimeMillis()' Java API call, which returns wall clock time, not the actual CPU time used. The timing results will be printed on the message output. Since the times reported are wall clock times and not CPU usage times they can not be added to find the total used time (i.e. some time might be counted in several places). When timing is disabled ('DO_TIMING' is false) there is no penalty if the compiler performs some basic optimizations. Even if not the penalty should be negligeable.
-
Field Summary
Fields inherited from class jj2000.j2k.entropy.encoder.PostCompRateAllocator
numLayers, OPT_PREFIX, src, wpFields inherited from class jj2000.j2k.image.ImgDataAdapter
imgdatasrc, tIdx -
Constructor Summary
ConstructorsConstructorDescriptionEBCOTRateAllocator(CodedCBlkDataSrcEnc src, LayersInfo lyrs, CodestreamWriter writer, J2KImageWriteParamJava wp) Initializes the EBCOT rate allocator of entropy coded data. -
Method Summary
Modifier and TypeMethodDescriptionvoidfinalize()Prints the timing information, if collected, and calls 'finalize' on the super class.voidInitializes the layers array.voidRuns the rate allocation algorithm and writes the data to the bit stream writer object provided to the constructor.voidwriteCompPosResLy(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) Write a piece of bit stream according to the COMP_POS_RES_LY_PROG progression mode and between given boundsvoidwriteLyResCompPos(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) Write a piece of bit stream according to the LY_RES_COMP_POS_PROG progression mode and between given boundsvoidwritePosCompResLy(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) Write a piece of bit stream according to the COMP_POS_RES_LY_PROG progression mode and between given boundsvoidwriteResLyCompPos(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) Write a piece of bit stream according to the RES_LY_COMP_POS_PROG progression mode and between given boundsvoidwriteResPosCompLy(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) Write a piece of bit stream according to the RES_POS_COMP_LY_PROG progression mode and between given boundsMethods inherited from class jj2000.j2k.entropy.encoder.PostCompRateAllocator
createInstance, getNumLayers, getParameterInfo, setHeaderEncoderMethods inherited from class jj2000.j2k.image.ImgDataAdapter
getCompImgHeight, getCompImgWidth, getCompSubsX, getCompSubsY, getCompULX, getCompULY, getImgHeight, getImgULX, getImgULY, getImgWidth, getNomRangeBits, getNomTileHeight, getNomTileWidth, getNumComps, getNumTiles, getNumTiles, getTile, getTileCompHeight, getTileCompWidth, getTileHeight, getTileIdx, getTilePartULX, getTilePartULY, getTileWidth, nextTile, setTile
-
Constructor Details
-
EBCOTRateAllocator
public EBCOTRateAllocator(CodedCBlkDataSrcEnc src, LayersInfo lyrs, CodestreamWriter writer, J2KImageWriteParamJava wp) Initializes the EBCOT rate allocator of entropy coded data. The layout of layers, and their bitrate constraints, is specified by the 'lyrs' parameter.- Parameters:
src- The source of entropy coded data.lyrs- The layers layout specification.writer- The bit stream writer.- See Also:
-
-
Method Details
-
finalize
Prints the timing information, if collected, and calls 'finalize' on the super class. -
runAndWrite
Runs the rate allocation algorithm and writes the data to the bit stream writer object provided to the constructor.- Specified by:
runAndWritein classPostCompRateAllocator- Throws:
IOException- See Also:
-
initialize
Initializes the layers array. This must be called after the main header has been entirely written or simulated, so as to take its overhead into account. This method will get all the code-blocks and then initialize the target bitrates for each layer, according to the specifications.- Specified by:
initializein classPostCompRateAllocator- Throws:
IOException- See Also:
-
writeResLyCompPos
public void writeResLyCompPos(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) throws IOException Write a piece of bit stream according to the RES_LY_COMP_POS_PROG progression mode and between given bounds- Parameters:
t- Tile index.rs- First resolution level index.re- Last resolution level index.cs- First component index.ce- Last component index.lys- First layer index for each component and resolution.lye- Index of the last layer.- Throws:
IOException
-
writeLyResCompPos
public void writeLyResCompPos(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) throws IOException Write a piece of bit stream according to the LY_RES_COMP_POS_PROG progression mode and between given bounds- Parameters:
t- Tile index.rs- First resolution level index.re- Last resolution level index.cs- First component index.ce- Last component index.lys- First layer index for each component and resolution.lye- Index of the last layer.- Throws:
IOException
-
writePosCompResLy
public void writePosCompResLy(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) throws IOException Write a piece of bit stream according to the COMP_POS_RES_LY_PROG progression mode and between given bounds- Parameters:
t- Tile index.rs- First resolution level index.re- Last resolution level index.cs- First component index.ce- Last component index.lys- First layer index for each component and resolution.lye- Index of the last layer.- Throws:
IOException
-
writeCompPosResLy
public void writeCompPosResLy(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) throws IOException Write a piece of bit stream according to the COMP_POS_RES_LY_PROG progression mode and between given bounds- Parameters:
t- Tile index.rs- First resolution level index.re- Last resolution level index.cs- First component index.ce- Last component index.lys- First layer index for each component and resolution.lye- Index of the last layer.- Throws:
IOException
-
writeResPosCompLy
public void writeResPosCompLy(int t, int rs, int re, int cs, int ce, int[][] lys, int lye) throws IOException Write a piece of bit stream according to the RES_POS_COMP_LY_PROG progression mode and between given bounds- Parameters:
t- Tile index.rs- First resolution level index.re- Last resolution level index.cs- First component index.ce- Last component index.lys- First layer index for each component and resolution.lye- Last layer index.- Throws:
IOException
-