static void encode_plane(FFV1Context *s, uint8_t *src, int w, int h,

                         int stride, int plane_index)

{

    int x, y, i;

    const int ring_size = s->avctx->context_model ? 3 : 2;

    int16_t *sample[3];

    s->run_index = 0;



    memset(s->sample_buffer, 0, ring_size * (w + 6) * sizeof(*s->sample_buffer));



    for (y = 0; y < h; y++) {

        for (i = 0; i < ring_size; i++)

            sample[i] = s->sample_buffer + (w + 6) * ((h + i - y) % ring_size) + 3;



        sample[0][-1]= sample[1][0  ];

        sample[1][ w]= sample[1][w-1];

// { START_TIMER

        if (s->bits_per_raw_sample <= 8) {

            for (x = 0; x < w; x++)

                sample[0][x] = src[x + stride * y];

            encode_line(s, w, sample, plane_index, 8);

        } else {

            if (s->packed_at_lsb) {

                for (x = 0; x < w; x++) {

                    sample[0][x] = ((uint16_t*)(src + stride*y))[x];

                }

            } else {

                for (x = 0; x < w; x++) {

                    sample[0][x] = ((uint16_t*)(src + stride*y))[x] >> (16 - s->bits_per_raw_sample);

                }

            }

            encode_line(s, w, sample, plane_index, s->bits_per_raw_sample);

        }

// STOP_TIMER("encode line") }

    }

}

static void encode_plane(FFV1Context *s, uint8_t *src, int w, int h,

                         int stride, int plane_index)

{

    int x, y, i;

    const int ring_size = s->avctx->context_model ? 3 : 2;

    int16_t *sample[3];

    s->run_index = 0;



    memset(s->sample_buffer, 0, ring_size * (w + 6) * sizeof(*s->sample_buffer));



    for (y = 0; y < h; y++) {

        for (i = 0; i < ring_size; i++)

            sample[i] = s->sample_buffer + (w + 6) * ((h + i - y) % ring_size) + 3;



        sample[0][-1]= sample[1][0  ];

        sample[1][ w]= sample[1][w-1];



        if (s->bits_per_raw_sample <= 8) {

            for (x = 0; x < w; x++)

                sample[0][x] = src[x + stride * y];

            encode_line(s, w, sample, plane_index, 8);

        } else {

            if (s->packed_at_lsb) {

                for (x = 0; x < w; x++) {

                    sample[0][x] = ((uint16_t*)(src + stride*y))[x];

                }

            } else {

                for (x = 0; x < w; x++) {

                    sample[0][x] = ((uint16_t*)(src + stride*y))[x] >> (16 - s->bits_per_raw_sample);

                }

            }

            encode_line(s, w, sample, plane_index, s->bits_per_raw_sample);

        }



    }

}

static void FUNC_0(FFV1Context *VAR_0, uint8_t *VAR_1, int VAR_2, int VAR_3,

                         int VAR_4, int VAR_5)

{

    int VAR_6, VAR_7, VAR_8;

    const int VAR_9 = VAR_0->avctx->context_model ? 3 : 2;

    int16_t *sample[3];

    VAR_0->run_index = 0;



    memset(VAR_0->sample_buffer, 0, VAR_9 * (VAR_2 + 6) * sizeof(*VAR_0->sample_buffer));



    for (VAR_7 = 0; VAR_7 < VAR_3; VAR_7++) {

        for (VAR_8 = 0; VAR_8 < VAR_9; VAR_8++)

            sample[VAR_8] = VAR_0->sample_buffer + (VAR_2 + 6) * ((VAR_3 + VAR_8 - VAR_7) % VAR_9) + 3;



        sample[0][-1]= sample[1][0  ];

        sample[1][ VAR_2]= sample[1][VAR_2-1];



        if (VAR_0->bits_per_raw_sample <= 8) {

            for (VAR_6 = 0; VAR_6 < VAR_2; VAR_6++)

                sample[0][VAR_6] = VAR_1[VAR_6 + VAR_4 * VAR_7];

            encode_line(VAR_0, VAR_2, sample, VAR_5, 8);

        } else {

            if (VAR_0->packed_at_lsb) {

                for (VAR_6 = 0; VAR_6 < VAR_2; VAR_6++) {

                    sample[0][VAR_6] = ((uint16_t*)(VAR_1 + VAR_4*VAR_7))[VAR_6];

                }

            } else {

                for (VAR_6 = 0; VAR_6 < VAR_2; VAR_6++) {

                    sample[0][VAR_6] = ((uint16_t*)(VAR_1 + VAR_4*VAR_7))[VAR_6] >> (16 - VAR_0->bits_per_raw_sample);

                }

            }

            encode_line(VAR_0, VAR_2, sample, VAR_5, VAR_0->bits_per_raw_sample);

        }



    }

}

static void FUNC_0(FFV1Context *VAR_0, uint8_t *VAR_1, int VAR_2, int VAR_3,
int VAR_4, int VAR_5)
{ int VAR_6, VAR_7, VAR_8; const int VAR_9 = VAR_0->avctx->context_model ? 3 : 2; int16_t *sample[3]; VAR_0->run_index = 0; memset(VAR_0->sample_buffer, 0, VAR_9 * (VAR_2 + 6) * sizeof(*VAR_0->sample_buffer)); for (VAR_7 = 0; VAR_7 < VAR_3; VAR_7++) { for (VAR_8 = 0; VAR_8 < VAR_9; VAR_8++) sample[VAR_8] = VAR_0->sample_buffer + (VAR_2 + 6) * ((VAR_3 + VAR_8 - VAR_7) % VAR_9) + 3; sample[0][-1]= sample[1][0  ]; sample[1][ VAR_2]= sample[1][VAR_2-1]; if (VAR_0->bits_per_raw_sample <= 8) { for (VAR_6 = 0; VAR_6 < VAR_2; VAR_6++) sample[0][VAR_6] = VAR_1[VAR_6 + VAR_4 * VAR_7]; encode_line(VAR_0, VAR_2, sample, VAR_5, 8); } else { if (VAR_0->packed_at_lsb) { for (VAR_6 = 0; VAR_6 < VAR_2; VAR_6++) { sample[0][VAR_6] = ((uint16_t*)(VAR_1 + VAR_4*VAR_7))[VAR_6]; } } else { for (VAR_6 = 0; VAR_6 < VAR_2; VAR_6++) { sample[0][VAR_6] = ((uint16_t*)(VAR_1 + VAR_4*VAR_7))[VAR_6] >> (16 - VAR_0->bits_per_raw_sample); } } encode_line(VAR_0, VAR_2, sample, VAR_5, VAR_0->bits_per_raw_sample); } } }