int ff_draw_slice(AVFilterLink *link, int y, int h, int slice_dir)

{

    uint8_t *src[4], *dst[4];

    int i, j, vsub, ret;

    int (*draw_slice)(AVFilterLink *, int, int, int);



    FF_TPRINTF_START(NULL, draw_slice); ff_tlog_link(NULL, link, 0); ff_tlog(NULL, " y:%d h:%d dir:%d\n", y, h, slice_dir);



    /* copy the slice if needed for permission reasons */

    if (link->src_buf) {

        vsub = av_pix_fmt_descriptors[link->format].log2_chroma_h;



        for (i = 0; i < 4; i++) {

            if (link->src_buf->data[i]) {

                src[i] = link->src_buf-> data[i] +

                    (y >> (i==1 || i==2 ? vsub : 0)) * link->src_buf-> linesize[i];

                dst[i] = link->cur_buf->data[i] +

                    (y >> (i==1 || i==2 ? vsub : 0)) * link->cur_buf->linesize[i];

            } else

                src[i] = dst[i] = NULL;

        }



        for (i = 0; i < 4; i++) {

            int planew =

                av_image_get_linesize(link->format, link->cur_buf->video->w, i);



            if (!src[i]) continue;



            for (j = 0; j < h >> (i==1 || i==2 ? vsub : 0); j++) {

                memcpy(dst[i], src[i], planew);

                src[i] += link->src_buf->linesize[i];

                dst[i] += link->cur_buf->linesize[i];

            }

        }

    }



    if (!(draw_slice = link->dstpad->draw_slice))

        draw_slice = default_draw_slice;

    ret = draw_slice(link, y, h, slice_dir);

    if (ret < 0)

        clear_link(link);

    return ret;

}

int ff_draw_slice(AVFilterLink *link, int y, int h, int slice_dir)

{

    uint8_t *src[4], *dst[4];

    int i, j, vsub, ret;

    int (*draw_slice)(AVFilterLink *, int, int, int);



    FF_TPRINTF_START(NULL, draw_slice); ff_tlog_link(NULL, link, 0); ff_tlog(NULL, " y:%d h:%d dir:%d\n", y, h, slice_dir);



    

    if (link->src_buf) {

        vsub = av_pix_fmt_descriptors[link->format].log2_chroma_h;



        for (i = 0; i < 4; i++) {

            if (link->src_buf->data[i]) {

                src[i] = link->src_buf-> data[i] +

                    (y >> (i==1 || i==2 ? vsub : 0)) * link->src_buf-> linesize[i];

                dst[i] = link->cur_buf->data[i] +

                    (y >> (i==1 || i==2 ? vsub : 0)) * link->cur_buf->linesize[i];

            } else

                src[i] = dst[i] = NULL;

        }



        for (i = 0; i < 4; i++) {

            int planew =

                av_image_get_linesize(link->format, link->cur_buf->video->w, i);



            if (!src[i]) continue;



            for (j = 0; j < h >> (i==1 || i==2 ? vsub : 0); j++) {

                memcpy(dst[i], src[i], planew);

                src[i] += link->src_buf->linesize[i];

                dst[i] += link->cur_buf->linesize[i];

            }

        }

    }



    if (!(draw_slice = link->dstpad->draw_slice))

        draw_slice = default_draw_slice;

    ret = draw_slice(link, y, h, slice_dir);

    if (ret < 0)

        clear_link(link);

    return ret;

}

VAR_10intVAR_10 VAR_10ff_draw_sliceVAR_10(VAR_10AVFilterLinkVAR_10 *VAR_10VAR_0VAR_10, VAR_10intVAR_10 VAR_10VAR_1VAR_10, VAR_10intVAR_10 VAR_10VAR_2VAR_10, VAR_10intVAR_10 VAR_10VAR_3VAR_10)

{

    VAR_10uint8_tVAR_10 *VAR_10srcVAR_10[VAR_104VAR_10], *VAR_10dstVAR_10[VAR_104VAR_10];

    VAR_10intVAR_10 VAR_10VAR_4VAR_10, VAR_10VAR_5VAR_10, VAR_10VAR_6VAR_10, VAR_10VAR_7VAR_10;

    VAR_10intVAR_10 (*VAR_10VAR_8VAR_10)(VAR_10AVFilterLinkVAR_10 *, VAR_10intVAR_10, VAR_10intVAR_10, VAR_10intVAR_10);



    VAR_10FF_TPRINTF_STARTVAR_10(VAR_10NULLVAR_10, VAR_10VAR_8VAR_10); VAR_10ff_tlog_linkVAR_10(VAR_10NULLVAR_10, VAR_10VAR_0VAR_10, VAR_100VAR_10); VAR_10ff_tlogVAR_10(VAR_10NULLVAR_10, " VAR_10VAR_1VAR_10:%VAR_10dVAR_10 VAR_10VAR_2VAR_10:%VAR_10dVAR_10 VAR_10dirVAR_10:%VAR_10dVAR_10\VAR_10nVAR_10", VAR_10VAR_1VAR_10, VAR_10VAR_2VAR_10, VAR_10VAR_3VAR_10);



    

    VAR_10ifVAR_10 (VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10) {

        VAR_10VAR_6VAR_10 = VAR_10av_pix_fmt_descriptorsVAR_10[VAR_10VAR_0VAR_10->VAR_10formatVAR_10].VAR_10log2_chroma_hVAR_10;



        VAR_10forVAR_10 (VAR_10VAR_4VAR_10 = VAR_100VAR_10; VAR_10VAR_4VAR_10 < VAR_104VAR_10; VAR_10VAR_4VAR_10++) {

            VAR_10ifVAR_10 (VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10->VAR_10dataVAR_10[VAR_10VAR_4VAR_10]) {

                VAR_10srcVAR_10[VAR_10VAR_4VAR_10] = VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10-> VAR_10dataVAR_10[VAR_10VAR_4VAR_10] +

                    (VAR_10VAR_1VAR_10 >> (VAR_10VAR_4VAR_10==VAR_101VAR_10 || VAR_10VAR_4VAR_10==VAR_102VAR_10 ? VAR_10VAR_6VAR_10 : VAR_100VAR_10)) * VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10-> VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10];

                VAR_10dstVAR_10[VAR_10VAR_4VAR_10] = VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10dataVAR_10[VAR_10VAR_4VAR_10] +

                    (VAR_10VAR_1VAR_10 >> (VAR_10VAR_4VAR_10==VAR_101VAR_10 || VAR_10VAR_4VAR_10==VAR_102VAR_10 ? VAR_10VAR_6VAR_10 : VAR_100VAR_10)) * VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10];

            } VAR_10elseVAR_10

                VAR_10srcVAR_10[VAR_10VAR_4VAR_10] = VAR_10dstVAR_10[VAR_10VAR_4VAR_10] = VAR_10NULLVAR_10;

        }



        VAR_10forVAR_10 (VAR_10VAR_4VAR_10 = VAR_100VAR_10; VAR_10VAR_4VAR_10 < VAR_104VAR_10; VAR_10VAR_4VAR_10++) {

            VAR_10intVAR_10 VAR_10planewVAR_10 =

                VAR_10av_image_get_linesizeVAR_10(VAR_10VAR_0VAR_10->VAR_10formatVAR_10, VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10videoVAR_10->VAR_10wVAR_10, VAR_10VAR_4VAR_10);



            VAR_10ifVAR_10 (!VAR_10srcVAR_10[VAR_10VAR_4VAR_10]) VAR_10continueVAR_10;



            VAR_10forVAR_10 (VAR_10VAR_5VAR_10 = VAR_100VAR_10; VAR_10VAR_5VAR_10 < VAR_10VAR_2VAR_10 >> (VAR_10VAR_4VAR_10==VAR_101VAR_10 || VAR_10VAR_4VAR_10==VAR_102VAR_10 ? VAR_10VAR_6VAR_10 : VAR_100VAR_10); VAR_10VAR_5VAR_10++) {

                VAR_10memcpyVAR_10(VAR_10dstVAR_10[VAR_10VAR_4VAR_10], VAR_10srcVAR_10[VAR_10VAR_4VAR_10], VAR_10planewVAR_10);

                VAR_10srcVAR_10[VAR_10VAR_4VAR_10] += VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10->VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10];

                VAR_10dstVAR_10[VAR_10VAR_4VAR_10] += VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10];

            }

        }

    }



    VAR_10ifVAR_10 (!(VAR_10VAR_8VAR_10 = VAR_10VAR_0VAR_10->VAR_10dstpadVAR_10->VAR_10VAR_8VAR_10))

        VAR_10VAR_8VAR_10 = VAR_10default_draw_sliceVAR_10;

    VAR_10VAR_7VAR_10 = VAR_10VAR_8VAR_10(VAR_10VAR_0VAR_10, VAR_10VAR_1VAR_10, VAR_10VAR_2VAR_10, VAR_10VAR_3VAR_10);

    VAR_10ifVAR_10 (VAR_10VAR_7VAR_10 < VAR_100VAR_10)

        VAR_10clear_linkVAR_10(VAR_10VAR_0VAR_10);

    VAR_10returnVAR_10 VAR_10VAR_7VAR_10;

}

VAR_10intVAR_10 VAR_10ff_draw_sliceVAR_10(VAR_10AVFilterLinkVAR_10 *VAR_10VAR_0VAR_10, VAR_10intVAR_10 VAR_10VAR_1VAR_10, VAR_10intVAR_10 VAR_10VAR_2VAR_10, VAR_10intVAR_10 VAR_10VAR_3VAR_10)
{ VAR_10uint8_tVAR_10 *VAR_10srcVAR_10[VAR_104VAR_10], *VAR_10dstVAR_10[VAR_104VAR_10]; VAR_10intVAR_10 VAR_10VAR_4VAR_10, VAR_10VAR_5VAR_10, VAR_10VAR_6VAR_10, VAR_10VAR_7VAR_10; VAR_10intVAR_10 (*VAR_10VAR_8VAR_10)(VAR_10AVFilterLinkVAR_10 *, VAR_10intVAR_10, VAR_10intVAR_10, VAR_10intVAR_10); VAR_10FF_TPRINTF_STARTVAR_10(VAR_10NULLVAR_10, VAR_10VAR_8VAR_10); VAR_10ff_tlog_linkVAR_10(VAR_10NULLVAR_10, VAR_10VAR_0VAR_10, VAR_100VAR_10); VAR_10ff_tlogVAR_10(VAR_10NULLVAR_10, " VAR_10VAR_1VAR_10:%VAR_10dVAR_10 VAR_10VAR_2VAR_10:%VAR_10dVAR_10 VAR_10dirVAR_10:%VAR_10dVAR_10\VAR_10nVAR_10", VAR_10VAR_1VAR_10, VAR_10VAR_2VAR_10, VAR_10VAR_3VAR_10); VAR_10ifVAR_10 (VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10) { VAR_10VAR_6VAR_10 = VAR_10av_pix_fmt_descriptorsVAR_10[VAR_10VAR_0VAR_10->VAR_10formatVAR_10].VAR_10log2_chroma_hVAR_10; VAR_10forVAR_10 (VAR_10VAR_4VAR_10 = VAR_100VAR_10; VAR_10VAR_4VAR_10 < VAR_104VAR_10; VAR_10VAR_4VAR_10++) { VAR_10ifVAR_10 (VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10->VAR_10dataVAR_10[VAR_10VAR_4VAR_10]) { VAR_10srcVAR_10[VAR_10VAR_4VAR_10] = VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10-> VAR_10dataVAR_10[VAR_10VAR_4VAR_10] +
(VAR_10VAR_1VAR_10 >> (VAR_10VAR_4VAR_10==VAR_101VAR_10 || VAR_10VAR_4VAR_10==VAR_102VAR_10 ? VAR_10VAR_6VAR_10 : VAR_100VAR_10)) * VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10-> VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10]; VAR_10dstVAR_10[VAR_10VAR_4VAR_10] = VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10dataVAR_10[VAR_10VAR_4VAR_10] +
(VAR_10VAR_1VAR_10 >> (VAR_10VAR_4VAR_10==VAR_101VAR_10 || VAR_10VAR_4VAR_10==VAR_102VAR_10 ? VAR_10VAR_6VAR_10 : VAR_100VAR_10)) * VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10]; } VAR_10elseVAR_10 VAR_10srcVAR_10[VAR_10VAR_4VAR_10] = VAR_10dstVAR_10[VAR_10VAR_4VAR_10] = VAR_10NULLVAR_10; } VAR_10forVAR_10 (VAR_10VAR_4VAR_10 = VAR_100VAR_10; VAR_10VAR_4VAR_10 < VAR_104VAR_10; VAR_10VAR_4VAR_10++) { VAR_10intVAR_10 VAR_10planewVAR_10 =
VAR_10av_image_get_linesizeVAR_10(VAR_10VAR_0VAR_10->VAR_10formatVAR_10, VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10videoVAR_10->VAR_10wVAR_10, VAR_10VAR_4VAR_10); VAR_10ifVAR_10 (!VAR_10srcVAR_10[VAR_10VAR_4VAR_10]) VAR_10continueVAR_10; VAR_10forVAR_10 (VAR_10VAR_5VAR_10 = VAR_100VAR_10; VAR_10VAR_5VAR_10 < VAR_10VAR_2VAR_10 >> (VAR_10VAR_4VAR_10==VAR_101VAR_10 || VAR_10VAR_4VAR_10==VAR_102VAR_10 ? VAR_10VAR_6VAR_10 : VAR_100VAR_10); VAR_10VAR_5VAR_10++) { VAR_10memcpyVAR_10(VAR_10dstVAR_10[VAR_10VAR_4VAR_10], VAR_10srcVAR_10[VAR_10VAR_4VAR_10], VAR_10planewVAR_10); VAR_10srcVAR_10[VAR_10VAR_4VAR_10] += VAR_10VAR_0VAR_10->VAR_10src_bufVAR_10->VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10]; VAR_10dstVAR_10[VAR_10VAR_4VAR_10] += VAR_10VAR_0VAR_10->VAR_10cur_bufVAR_10->VAR_10linesizeVAR_10[VAR_10VAR_4VAR_10]; } } } VAR_10ifVAR_10 (!(VAR_10VAR_8VAR_10 = VAR_10VAR_0VAR_10->VAR_10dstpadVAR_10->VAR_10VAR_8VAR_10))
VAR_10VAR_8VAR_10 = VAR_10default_draw_sliceVAR_10; VAR_10VAR_7VAR_10 = VAR_10VAR_8VAR_10(VAR_10VAR_0VAR_10, VAR_10VAR_1VAR_10, VAR_10VAR_2VAR_10, VAR_10VAR_3VAR_10); VAR_10ifVAR_10 (VAR_10VAR_7VAR_10 < VAR_100VAR_10)
VAR_10clear_linkVAR_10(VAR_10VAR_0VAR_10); VAR_10returnVAR_10 VAR_10VAR_7VAR_10; }