public override CBlkRateDistStats getNextCodeBlock(int c, CBlkRateDistStats ccb)
{
#if DO_TIMING
long stime = 0L; // Start time for timed sections
#endif
// Use single threaded implementation
// Get code-block data from source
srcblkT[0] = src.getNextInternCodeBlock(c, srcblkT[0]);
#if DO_TIMING
stime = (System.DateTime.Now.Ticks - 621355968000000000) / 10000;
#endif
if (srcblkT[0] == null)
{
// We got all code-blocks
return null;
}
// Initialize thread local variables
if ((opts[tIdx][c] & CSJ2K.j2k.entropy.StdEntropyCoderOptions.OPT_BYPASS) != 0 && boutT[0] == null)
{
boutT[0] = new BitToByteOutput(outT[0]);
}
// Initialize output code-block
if (ccb == null)
{
ccb = new CBlkRateDistStats();
}
// Compress code-block
compressCodeBlock(c, ccb, srcblkT[0], mqT[0], boutT[0], outT[0], stateT[0], distbufT[0], ratebufT[0], istermbufT[0], symbufT[0], ctxtbufT[0], opts[tIdx][c], isReversible(tIdx, c), lenCalc[tIdx][c], tType[tIdx][c]);
#if DO_TIMING
time[c] += (System.DateTime.Now.Ticks - 621355968000000000) / 10000 - stime;
#endif
// Return result
return ccb;
}