public void start_pass(J_BUF_MODE pass_mode)
{
switch (pass_mode)
{
case J_BUF_MODE.JBUF_PASS_THRU:
if (m_cinfo.m_upsample.NeedContextRows())
{
m_dataProcessor = DataProcessor.context_main;
make_funny_pointers(); /* Create the xbuffer[] lists */
m_whichFunny = 0; /* Read first iMCU row into xbuffer[0] */
m_context_state = CTX_PREPARE_FOR_IMCU;
m_iMCU_row_ctr = 0;
}
else
{
/* Simple case with no context needed */
m_dataProcessor = DataProcessor.simple_main;
}
m_buffer_full = false; /* Mark buffer empty */
m_rowgroup_ctr = 0;
break;
case J_BUF_MODE.JBUF_CRANK_DEST:
/* For last pass of 2-pass quantization, just crank the postprocessor */
m_dataProcessor = DataProcessor.crank_post;
break;
default:
m_cinfo.ERREXIT(J_MESSAGE_CODE.JERR_BAD_BUFFER_MODE);
break;
}
}