Пример #1
0
        // Initialize for a processing pass.
        public virtual void StartPass(JBufMode pass_mode)
        {
            m_iMCU_row_num = 0;
            StartIMcuRow();

            switch (pass_mode)
            {
            case JBufMode.PassThrough:
                if (m_whole_image[0] is object)
                {
                    m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                }

                break;

            case JBufMode.SaveAndPass:
            case JBufMode.CrankDest:
                if (m_whole_image[0] is null)
                {
                    m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                }

                break;

            default:
                m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                break;
            }

            m_passModeSetByLastStartPass = pass_mode;
        }
Пример #2
0
        /// <summary>
        /// Initialize for a processing pass.
        /// </summary>
        public void StartPass(JBufMode pass_mode)
        {
            switch (pass_mode)
            {
            case JBufMode.PassThrough:
                if (m_cinfo.m_upsample.NeedContextRows())
                {
                    m_dataProcessor = DataProcessor.context_main;
                    MakeFunnyPointers(); /* 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 JBufMode.CrankDest:
                /* For last pass of 2-pass quantization, just crank the postprocessor */
                m_dataProcessor = DataProcessor.crank_post;
                break;

            default:
                m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                break;
            }
        }
Пример #3
0
        /// <summary>
        /// Initialize for a processing pass.
        /// </summary>
        public virtual void StartPass(JBufMode pass_mode)
        {
            if (pass_mode != JBufMode.CrankDest)
            {
                m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
            }

            m_iMCU_row_num = 0;
            StartIMcuRow();
        }
Пример #4
0
        /// <summary>
        /// Initialize for a processing pass.
        /// </summary>
        public void StartPass(JBufMode pass_mode)
        {
            switch (pass_mode)
            {
            case JBufMode.PassThrough:
                if (m_cinfo.quantizeColors)
                {
                    /* Single-pass processing with color quantization. */
                    m_processor = ProcessorType.OnePass;

                    /* We could be doing buffered-image output before starting a 2-pass
                     * color quantization; in that case, jinit_d_post_controller did not
                     * allocate a strip buffer.  Use the virtual-array buffer as workspace.
                     */
                    if (m_buffer is null)
                    {
                        m_buffer = m_whole_image.Access(0, m_strip_height);
                    }
                }
                else
                {
                    /* For single-pass processing without color quantization,
                     * I have no work to do; just call the upsampler directly.
                     */
                    m_processor = ProcessorType.Upsample;
                }
                break;

            case JBufMode.SaveAndPass:
                /* First pass of 2-pass quantization */
                if (m_whole_image is null)
                {
                    m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                }

                m_processor = ProcessorType.PrePass;
                break;

            case JBufMode.CrankDest:
                /* Second pass of 2-pass quantization */
                if (m_whole_image is null)
                {
                    m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                }

                m_processor = ProcessorType.SecondPass;
                break;

            default:
                m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
                break;
            }

            m_starting_row = m_next_row = 0;
        }
Пример #5
0
        // Initialize for a processing pass.
        public void start_pass(JBufMode pass_mode)
        {
            /* Do nothing in raw-data mode. */
            if (m_cinfo.m_raw_data_in)
            {
                return;
            }

            m_cur_iMCU_row = 0; /* initialize counters */
            m_rowgroup_ctr = 0;
            m_suspended    = false;

            if (pass_mode != JBufMode.PassThrough)
            {
                m_cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
            }
        }
Пример #6
0
        /// <summary>
        /// Initialize for a processing pass.
        /// </summary>
        public void StartPass(JBufMode pass_mode)
        {
            if (pass_mode != JBufMode.PassThrough)
            {
                cinfo.ErrExit(JMessageCode.JERR_BAD_BUFFER_MODE);
            }

            /* Initialize total-height counter for detecting bottom of image */
            rowsToGo = cinfo.m_image_height;

            /* Mark the conversion buffer empty */
            nextBufRow = 0;

            /* Preset additional state variables for context mode.
             * These aren't used in non-context mode, so we needn't test which mode.
             */
            thisRowGroup = 0;

            /* Set next_buf_stop to stop after two row groups have been read in. */
            nextBufStop = 2 * cinfo.m_max_v_samp_factor;
        }