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

    int p,x,y;



    for(p=0; p < s->nb_planes; 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_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

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

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

        if (!halfpel[1][p] || !halfpel[2][p] || !halfpel[3][p])

            return AVERROR(ENOMEM);



        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!

    }

    return 0;

}

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

    int p,x,y;



    for(p=0; p < s->nb_planes; 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_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

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

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

        if (!halfpel[1][p] || !halfpel[2][p] || !halfpel[3][p])

            return AVERROR(ENOMEM);



        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;

            }

        }





    }

    return 0;

}

        halfpel[1][p] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);         halfpel[2][p] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);         halfpel[3][p] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);         if (!halfpel[1][p] || !halfpel[2][p] || !halfpel[3][p])
static int 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 < VAR_0->nb_planes; VAR_3++){

        int is_chroma= !!VAR_3;

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

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

        int ls= VAR_2->linesize[VAR_3];

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



        VAR_1[1][VAR_3] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        VAR_1[2][VAR_3] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        VAR_1[3][VAR_3] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls);

        if (!VAR_1[1][VAR_3] || !VAR_1[2][VAR_3] || !VAR_1[3][VAR_3])

            return AVERROR(ENOMEM);



        VAR_1[0][VAR_3]= src;

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

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

                int i= VAR_5*ls + VAR_4;



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

            }

        }

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

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

                int i= VAR_5*ls + VAR_4;



                VAR_1[2][VAR_3][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= VAR_1[1][VAR_3];

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

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

                int i= VAR_5*ls + VAR_4;



                VAR_1[3][VAR_3][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;

            }

        }





    }

    return 0;

}

static int 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 < VAR_0->nb_planes; VAR_3++){ int is_chroma= !!VAR_3; int w= is_chroma ? VAR_0->avctx->width >>VAR_0->chroma_h_shift : VAR_0->avctx->width; int h= is_chroma ? VAR_0->avctx->height>>VAR_0->chroma_v_shift : VAR_0->avctx->height; int ls= VAR_2->linesize[VAR_3]; uint8_t *src= VAR_2->data[VAR_3]; VAR_1[1][VAR_3] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls); VAR_1[2][VAR_3] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls); VAR_1[3][VAR_3] = (uint8_t*) av_malloc_array(ls, (h + 2 * EDGE_WIDTH)) + EDGE_WIDTH * (1 + ls); if (!VAR_1[1][VAR_3] || !VAR_1[2][VAR_3] || !VAR_1[3][VAR_3])
return AVERROR(ENOMEM); VAR_1[0][VAR_3]= src; for(VAR_5=0; VAR_5<h; VAR_5++){ for(VAR_4=0; VAR_4<w; VAR_4++){ int i= VAR_5*ls + VAR_4; VAR_1[1][VAR_3][i]= (20*(src[i] + src[i+1]) - 5*(src[i-1] + src[i+2]) + (src[i-2] + src[i+3]) + 16 )>>5; } } for(VAR_5=0; VAR_5<h; VAR_5++){ for(VAR_4=0; VAR_4<w; VAR_4++){ int i= VAR_5*ls + VAR_4; VAR_1[2][VAR_3][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= VAR_1[1][VAR_3]; for(VAR_5=0; VAR_5<h; VAR_5++){ for(VAR_4=0; VAR_4<w; VAR_4++){ int i= VAR_5*ls + VAR_4; VAR_1[3][VAR_3][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; } } } return 0; }