static void halfpel_interpol(SnowContext *s, uint8_t *halfpel[4][4], AVFrame *frame){

    int p,x,y;



    for(p=0; p<3; p++){

        int is_chroma= !!p;

        int w= is_chroma ? s->avctx->width >>s->chroma_h_shift : s->avctx->width;

        int h= is_chroma ? s->avctx->height>>s->chroma_v_shift : s->avctx->height;

        int ls= frame->linesize[p];

        uint8_t *src= frame->data[p];



        halfpel[1][p] = (uint8_t*) av_malloc(ls * (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        halfpel[2][p] = (uint8_t*) av_malloc(ls * (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        halfpel[3][p] = (uint8_t*) av_malloc(ls * (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);



        halfpel[0][p]= src;

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

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

                int i= y*ls + x;



                halfpel[1][p][i]= (20*(src[i] + src[i+1]) - 5*(src[i-1] + src[i+2]) + (src[i-2] + src[i+3]) + 16 )>>5;

            }

        }

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

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

                int i= y*ls + x;



                halfpel[2][p][i]= (20*(src[i] + src[i+ls]) - 5*(src[i-ls] + src[i+2*ls]) + (src[i-2*ls] + src[i+3*ls]) + 16 )>>5;

            }

        }

        src= halfpel[1][p];

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

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

                int i= y*ls + x;



                halfpel[3][p][i]= (20*(src[i] + src[i+ls]) - 5*(src[i-ls] + src[i+2*ls]) + (src[i-2*ls] + src[i+3*ls]) + 16 )>>5;

            }

        }



//FIXME border!

    }

}

static void halfpel_interpol(SnowContext *s, uint8_t *halfpel[4][4], AVFrame *frame){

    int p,x,y;



    for(p=0; p<3; p++){

        int is_chroma= !!p;

        int w= is_chroma ? s->avctx->width >>s->chroma_h_shift : s->avctx->width;

        int h= is_chroma ? s->avctx->height>>s->chroma_v_shift : s->avctx->height;

        int ls= frame->linesize[p];

        uint8_t *src= frame->data[p];



        halfpel[1][p] = (uint8_t*) av_malloc(ls * (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        halfpel[2][p] = (uint8_t*) av_malloc(ls * (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        halfpel[3][p] = (uint8_t*) av_malloc(ls * (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);



        halfpel[0][p]= src;

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

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

                int i= y*ls + x;



                halfpel[1][p][i]= (20*(src[i] + src[i+1]) - 5*(src[i-1] + src[i+2]) + (src[i-2] + src[i+3]) + 16 )>>5;

            }

        }

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

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

                int i= y*ls + x;



                halfpel[2][p][i]= (20*(src[i] + src[i+ls]) - 5*(src[i-ls] + src[i+2*ls]) + (src[i-2*ls] + src[i+3*ls]) + 16 )>>5;

            }

        }

        src= halfpel[1][p];

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

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

                int i= y*ls + x;



                halfpel[3][p][i]= (20*(src[i] + src[i+ls]) - 5*(src[i-ls] + src[i+2*ls]) + (src[i-2*ls] + src[i+3*ls]) + 16 )>>5;

            }

        }





    }

}

static void halfpel_interpol(SnowContext *s, uint8_t *halfpel[4][4], AVFrame *frame){
static void FUNC_0(SnowContext *VAR_0, uint8_t *VAR_1[4][4], AVFrame *VAR_2){

    int VAR_3,VAR_4,VAR_5;



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

        int VAR_6= !!VAR_3;

        int VAR_7= VAR_6 ? VAR_0->avctx->width >>VAR_0->chroma_h_shift : VAR_0->avctx->width;

        int VAR_8= VAR_6 ? VAR_0->avctx->height>>VAR_0->chroma_v_shift : VAR_0->avctx->height;

        int VAR_9= VAR_2->linesize[VAR_3];

        uint8_t *src= VAR_2->data[VAR_3];



        VAR_1[1][VAR_3] = (uint8_t*) av_malloc(VAR_9 * (VAR_8 + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + VAR_9);

        VAR_1[2][VAR_3] = (uint8_t*) av_malloc(VAR_9 * (VAR_8 + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + VAR_9);

        VAR_1[3][VAR_3] = (uint8_t*) av_malloc(VAR_9 * (VAR_8 + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + VAR_9);



        VAR_1[0][VAR_3]= src;

        for(VAR_5=0; VAR_5<VAR_8; VAR_5++){

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

                int VAR_11= VAR_5*VAR_9 + VAR_4;



                VAR_1[1][VAR_3][VAR_11]= (20*(src[VAR_11] + src[VAR_11+1]) - 5*(src[VAR_11-1] + src[VAR_11+2]) + (src[VAR_11-2] + src[VAR_11+3]) + 16 )>>5;

            }

        }

        for(VAR_5=0; VAR_5<VAR_8; VAR_5++){

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

                int VAR_11= VAR_5*VAR_9 + VAR_4;



                VAR_1[2][VAR_3][VAR_11]= (20*(src[VAR_11] + src[VAR_11+VAR_9]) - 5*(src[VAR_11-VAR_9] + src[VAR_11+2*VAR_9]) + (src[VAR_11-2*VAR_9] + src[VAR_11+3*VAR_9]) + 16 )>>5;

            }

        }

        src= VAR_1[1][VAR_3];

        for(VAR_5=0; VAR_5<VAR_8; VAR_5++){

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

                int VAR_11= VAR_5*VAR_9 + VAR_4;



                VAR_1[3][VAR_3][VAR_11]= (20*(src[VAR_11] + src[VAR_11+VAR_9]) - 5*(src[VAR_11-VAR_9] + src[VAR_11+2*VAR_9]) + (src[VAR_11-2*VAR_9] + src[VAR_11+3*VAR_9]) + 16 )>>5;

            }

        }





    }

}

static void FUNC_0(SnowContext *VAR_0, uint8_t *VAR_1[4][4], AVFrame *VAR_2){ int VAR_3,VAR_4,VAR_5; for(VAR_3=0; VAR_3<3; VAR_3++){ int VAR_6= !!VAR_3; int VAR_7= VAR_6 ? VAR_0->avctx->width >>VAR_0->chroma_h_shift : VAR_0->avctx->width; int VAR_8= VAR_6 ? VAR_0->avctx->height>>VAR_0->chroma_v_shift : VAR_0->avctx->height; int VAR_9= VAR_2->linesize[VAR_3]; uint8_t *src= VAR_2->data[VAR_3]; VAR_1[1][VAR_3] = (uint8_t*) av_malloc(VAR_9 * (VAR_8 + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + VAR_9); VAR_1[2][VAR_3] = (uint8_t*) av_malloc(VAR_9 * (VAR_8 + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + VAR_9); VAR_1[3][VAR_3] = (uint8_t*) av_malloc(VAR_9 * (VAR_8 + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + VAR_9); VAR_1[0][VAR_3]= src; for(VAR_5=0; VAR_5<VAR_8; VAR_5++){ for(VAR_4=0; VAR_4<VAR_7; VAR_4++){ int VAR_11= VAR_5*VAR_9 + VAR_4; VAR_1[1][VAR_3][VAR_11]= (20*(src[VAR_11] + src[VAR_11+1]) - 5*(src[VAR_11-1] + src[VAR_11+2]) + (src[VAR_11-2] + src[VAR_11+3]) + 16 )>>5; } } for(VAR_5=0; VAR_5<VAR_8; VAR_5++){ for(VAR_4=0; VAR_4<VAR_7; VAR_4++){ int VAR_11= VAR_5*VAR_9 + VAR_4; VAR_1[2][VAR_3][VAR_11]= (20*(src[VAR_11] + src[VAR_11+VAR_9]) - 5*(src[VAR_11-VAR_9] + src[VAR_11+2*VAR_9]) + (src[VAR_11-2*VAR_9] + src[VAR_11+3*VAR_9]) + 16 )>>5; } } src= VAR_1[1][VAR_3]; for(VAR_5=0; VAR_5<VAR_8; VAR_5++){ for(VAR_4=0; VAR_4<VAR_7; VAR_4++){ int VAR_11= VAR_5*VAR_9 + VAR_4; VAR_1[3][VAR_3][VAR_11]= (20*(src[VAR_11] + src[VAR_11+VAR_9]) - 5*(src[VAR_11-VAR_9] + src[VAR_11+2*VAR_9]) + (src[VAR_11-2*VAR_9] + src[VAR_11+3*VAR_9]) + 16 )>>5; } } } }