[]
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.
<p>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.</p>
public class EBCOTRateAllocator : PostCompRateAllocator, ImgData
Name | Description |
---|---|
EBCOTRateAllocator(CodedCBlkDataSrcEnc, LayersInfo, CodestreamWriter, EncoderSpecs, ParameterList) | Initializes the EBCOT rate allocator of entropy coded data. The layout of layers, and their bitrate constraints, is specified by the 'lyrs' parameter. |
Name | Description |
---|---|
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. |
runAndWrite() | Runs the rate allocation algorithm and writes the data to the bit stream writer object provided to the constructor. |
writeCompPosResLy(int, int, int, int, int, int[][], int) | Write a piece of bit stream according to the COMP_POS_RES_LY_PROG progression mode and between given bounds |
writeLyResCompPos(int, int, int, int, int, int[][], int) | Write a piece of bit stream according to the LY_RES_COMP_POS_PROG progression mode and between given bounds |
writePosCompResLy(int, int, int, int, int, int[][], int) | Write a piece of bit stream according to the COMP_POS_RES_LY_PROG progression mode and between given bounds |
writeResLyCompPos(int, int, int, int, int, int[][], int) | Write a piece of bit stream according to the RES_LY_COMP_POS_PROG progression mode and between given bounds |
writeResPosCompLy(int, int, int, int, int, int[][], int) | Write a piece of bit stream according to the RES_POS_COMP_LY_PROG progression mode and between given bounds |