int img_convert(AVPicture *dst, int dst_pix_fmt,

                const AVPicture *src, int src_pix_fmt,

                int src_width, int src_height)

{

    static int inited;

    int i, ret, dst_width, dst_height, int_pix_fmt;

    const PixFmtInfo *src_pix, *dst_pix;

    const ConvertEntry *ce;

    AVPicture tmp1, *tmp = &tmp1;



    if (src_pix_fmt < 0 || src_pix_fmt >= PIX_FMT_NB ||

        dst_pix_fmt < 0 || dst_pix_fmt >= PIX_FMT_NB)

        return -1;

    if (src_width <= 0 || src_height <= 0)

        return 0;



    if (!inited) {

        inited = 1;

        img_convert_init();

    }



    dst_width = src_width;

    dst_height = src_height;



    dst_pix = &pix_fmt_info[dst_pix_fmt];

    src_pix = &pix_fmt_info[src_pix_fmt];

    if (src_pix_fmt == dst_pix_fmt) {

        /* no conversion needed: just copy */

        av_picture_copy(dst, src, dst_pix_fmt, dst_width, dst_height);

        return 0;

    }



    ce = &convert_table[src_pix_fmt][dst_pix_fmt];

    if (ce->convert) {

        /* specific conversion routine */

        ce->convert(dst, src, dst_width, dst_height);

        return 0;

    }



    /* gray to YUV */

    if (is_yuv_planar(dst_pix) &&

        src_pix_fmt == PIX_FMT_GRAY8) {

        int w, h, y;

        uint8_t *d;



        if (dst_pix->color_type == FF_COLOR_YUV_JPEG) {

            ff_img_copy_plane(dst->data[0], dst->linesize[0],

                     src->data[0], src->linesize[0],

                     dst_width, dst_height);

        } else {

            img_apply_table(dst->data[0], dst->linesize[0],

                            src->data[0], src->linesize[0],

                            dst_width, dst_height,

                            y_jpeg_to_ccir);

        }

        /* fill U and V with 128 */

        w = dst_width;

        h = dst_height;

        w >>= dst_pix->x_chroma_shift;

        h >>= dst_pix->y_chroma_shift;

        for(i = 1; i <= 2; i++) {

            d = dst->data[i];

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

                memset(d, 128, w);

                d += dst->linesize[i];

            }

        }

        return 0;

    }



    /* YUV to gray */

    if (is_yuv_planar(src_pix) &&

        dst_pix_fmt == PIX_FMT_GRAY8) {

        if (src_pix->color_type == FF_COLOR_YUV_JPEG) {

            ff_img_copy_plane(dst->data[0], dst->linesize[0],

                     src->data[0], src->linesize[0],

                     dst_width, dst_height);

        } else {

            img_apply_table(dst->data[0], dst->linesize[0],

                            src->data[0], src->linesize[0],

                            dst_width, dst_height,

                            y_ccir_to_jpeg);

        }

        return 0;

    }



    /* YUV to YUV planar */

    if (is_yuv_planar(dst_pix) && is_yuv_planar(src_pix)) {

        int x_shift, y_shift, w, h, xy_shift;

        void (*resize_func)(uint8_t *dst, int dst_wrap,

                            const uint8_t *src, int src_wrap,

                            int width, int height);



        /* compute chroma size of the smallest dimensions */

        w = dst_width;

        h = dst_height;

        if (dst_pix->x_chroma_shift >= src_pix->x_chroma_shift)

            w >>= dst_pix->x_chroma_shift;

        else

            w >>= src_pix->x_chroma_shift;

        if (dst_pix->y_chroma_shift >= src_pix->y_chroma_shift)

            h >>= dst_pix->y_chroma_shift;

        else

            h >>= src_pix->y_chroma_shift;



        x_shift = (dst_pix->x_chroma_shift - src_pix->x_chroma_shift);

        y_shift = (dst_pix->y_chroma_shift - src_pix->y_chroma_shift);

        xy_shift = ((x_shift & 0xf) << 4) | (y_shift & 0xf);

        /* there must be filters for conversion at least from and to

           YUV444 format */

        switch(xy_shift) {

        case 0x00:

            resize_func = ff_img_copy_plane;

            break;

        case 0x10:

            resize_func = shrink21;

            break;

        case 0x20:

            resize_func = shrink41;

            break;

        case 0x01:

            resize_func = shrink12;

            break;

        case 0x11:

            resize_func = ff_shrink22;

            break;

        case 0x22:

            resize_func = ff_shrink44;

            break;

        case 0xf0:

            resize_func = grow21;

            break;

        case 0x0f:

            resize_func = grow12;

            break;

        case 0xe0:

            resize_func = grow41;

            break;

        case 0xff:

            resize_func = grow22;

            break;

        case 0xee:

            resize_func = grow44;

            break;

        case 0xf1:

            resize_func = conv411;

            break;

        default:

            /* currently not handled */

            goto no_chroma_filter;

        }



        ff_img_copy_plane(dst->data[0], dst->linesize[0],

                       src->data[0], src->linesize[0],

                       dst_width, dst_height);



        for(i = 1;i <= 2; i++)

            resize_func(dst->data[i], dst->linesize[i],

                        src->data[i], src->linesize[i],

                        dst_width>>dst_pix->x_chroma_shift, dst_height>>dst_pix->y_chroma_shift);

        /* if yuv color space conversion is needed, we do it here on

           the destination image */

        if (dst_pix->color_type != src_pix->color_type) {

            const uint8_t *y_table, *c_table;

            if (dst_pix->color_type == FF_COLOR_YUV) {

                y_table = y_jpeg_to_ccir;

                c_table = c_jpeg_to_ccir;

            } else {

                y_table = y_ccir_to_jpeg;

                c_table = c_ccir_to_jpeg;

            }

            img_apply_table(dst->data[0], dst->linesize[0],

                            dst->data[0], dst->linesize[0],

                            dst_width, dst_height,

                            y_table);



            for(i = 1;i <= 2; i++)

                img_apply_table(dst->data[i], dst->linesize[i],

                                dst->data[i], dst->linesize[i],

                                dst_width>>dst_pix->x_chroma_shift,

                                dst_height>>dst_pix->y_chroma_shift,

                                c_table);

        }

        return 0;

    }

 no_chroma_filter:



    /* try to use an intermediate format */

    if (src_pix_fmt == PIX_FMT_YUYV422 ||

        dst_pix_fmt == PIX_FMT_YUYV422) {

        /* specific case: convert to YUV422P first */

        int_pix_fmt = PIX_FMT_YUV422P;

    } else if (src_pix_fmt == PIX_FMT_UYVY422 ||

        dst_pix_fmt == PIX_FMT_UYVY422) {

        /* specific case: convert to YUV422P first */

        int_pix_fmt = PIX_FMT_YUV422P;

    } else if (src_pix_fmt == PIX_FMT_UYYVYY411 ||

        dst_pix_fmt == PIX_FMT_UYYVYY411) {

        /* specific case: convert to YUV411P first */

        int_pix_fmt = PIX_FMT_YUV411P;

    } else if ((src_pix->color_type == FF_COLOR_GRAY &&

                src_pix_fmt != PIX_FMT_GRAY8) ||

               (dst_pix->color_type == FF_COLOR_GRAY &&

                dst_pix_fmt != PIX_FMT_GRAY8)) {

        /* gray8 is the normalized format */

        int_pix_fmt = PIX_FMT_GRAY8;

    } else if ((is_yuv_planar(src_pix) &&

                src_pix_fmt != PIX_FMT_YUV444P &&

                src_pix_fmt != PIX_FMT_YUVJ444P)) {

        /* yuv444 is the normalized format */

        if (src_pix->color_type == FF_COLOR_YUV_JPEG)

            int_pix_fmt = PIX_FMT_YUVJ444P;

        else

            int_pix_fmt = PIX_FMT_YUV444P;

    } else if ((is_yuv_planar(dst_pix) &&

                dst_pix_fmt != PIX_FMT_YUV444P &&

                dst_pix_fmt != PIX_FMT_YUVJ444P)) {

        /* yuv444 is the normalized format */

        if (dst_pix->color_type == FF_COLOR_YUV_JPEG)

            int_pix_fmt = PIX_FMT_YUVJ444P;

        else

            int_pix_fmt = PIX_FMT_YUV444P;

    } else {

        /* the two formats are rgb or gray8 or yuv[j]444p */

        if (src_pix->is_alpha && dst_pix->is_alpha)

            int_pix_fmt = PIX_FMT_RGB32;

        else

            int_pix_fmt = PIX_FMT_RGB24;

    }

    if (src_pix_fmt == int_pix_fmt)

        return -1;

    if (avpicture_alloc(tmp, int_pix_fmt, dst_width, dst_height) < 0)

        return -1;

    ret = -1;

    if (img_convert(tmp, int_pix_fmt,

                    src, src_pix_fmt, src_width, src_height) < 0)

        goto fail1;

    if (img_convert(dst, dst_pix_fmt,

                    tmp, int_pix_fmt, dst_width, dst_height) < 0)

        goto fail1;

    ret = 0;

 fail1:

    avpicture_free(tmp);

    return ret;

}

int img_convert(AVPicture *dst, int dst_pix_fmt,

                const AVPicture *src, int src_pix_fmt,

                int src_width, int src_height)

{

    static int inited;

    int i, ret, dst_width, dst_height, int_pix_fmt;

    const PixFmtInfo *src_pix, *dst_pix;

    const ConvertEntry *ce;

    AVPicture tmp1, *tmp = &tmp1;



    if (src_pix_fmt < 0 || src_pix_fmt >= PIX_FMT_NB ||

        dst_pix_fmt < 0 || dst_pix_fmt >= PIX_FMT_NB)

        return -1;

    if (src_width <= 0 || src_height <= 0)

        return 0;



    if (!inited) {

        inited = 1;

        img_convert_init();

    }



    dst_width = src_width;

    dst_height = src_height;



    dst_pix = &pix_fmt_info[dst_pix_fmt];

    src_pix = &pix_fmt_info[src_pix_fmt];

    if (src_pix_fmt == dst_pix_fmt) {

        

        av_picture_copy(dst, src, dst_pix_fmt, dst_width, dst_height);

        return 0;

    }



    ce = &convert_table[src_pix_fmt][dst_pix_fmt];

    if (ce->convert) {

        

        ce->convert(dst, src, dst_width, dst_height);

        return 0;

    }



    

    if (is_yuv_planar(dst_pix) &&

        src_pix_fmt == PIX_FMT_GRAY8) {

        int w, h, y;

        uint8_t *d;



        if (dst_pix->color_type == FF_COLOR_YUV_JPEG) {

            ff_img_copy_plane(dst->data[0], dst->linesize[0],

                     src->data[0], src->linesize[0],

                     dst_width, dst_height);

        } else {

            img_apply_table(dst->data[0], dst->linesize[0],

                            src->data[0], src->linesize[0],

                            dst_width, dst_height,

                            y_jpeg_to_ccir);

        }

        

        w = dst_width;

        h = dst_height;

        w >>= dst_pix->x_chroma_shift;

        h >>= dst_pix->y_chroma_shift;

        for(i = 1; i <= 2; i++) {

            d = dst->data[i];

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

                memset(d, 128, w);

                d += dst->linesize[i];

            }

        }

        return 0;

    }



    

    if (is_yuv_planar(src_pix) &&

        dst_pix_fmt == PIX_FMT_GRAY8) {

        if (src_pix->color_type == FF_COLOR_YUV_JPEG) {

            ff_img_copy_plane(dst->data[0], dst->linesize[0],

                     src->data[0], src->linesize[0],

                     dst_width, dst_height);

        } else {

            img_apply_table(dst->data[0], dst->linesize[0],

                            src->data[0], src->linesize[0],

                            dst_width, dst_height,

                            y_ccir_to_jpeg);

        }

        return 0;

    }



    

    if (is_yuv_planar(dst_pix) && is_yuv_planar(src_pix)) {

        int x_shift, y_shift, w, h, xy_shift;

        void (*resize_func)(uint8_t *dst, int dst_wrap,

                            const uint8_t *src, int src_wrap,

                            int width, int height);



        

        w = dst_width;

        h = dst_height;

        if (dst_pix->x_chroma_shift >= src_pix->x_chroma_shift)

            w >>= dst_pix->x_chroma_shift;

        else

            w >>= src_pix->x_chroma_shift;

        if (dst_pix->y_chroma_shift >= src_pix->y_chroma_shift)

            h >>= dst_pix->y_chroma_shift;

        else

            h >>= src_pix->y_chroma_shift;



        x_shift = (dst_pix->x_chroma_shift - src_pix->x_chroma_shift);

        y_shift = (dst_pix->y_chroma_shift - src_pix->y_chroma_shift);

        xy_shift = ((x_shift & 0xf) << 4) | (y_shift & 0xf);

        



        switch(xy_shift) {

        case 0x00:

            resize_func = ff_img_copy_plane;

            break;

        case 0x10:

            resize_func = shrink21;

            break;

        case 0x20:

            resize_func = shrink41;

            break;

        case 0x01:

            resize_func = shrink12;

            break;

        case 0x11:

            resize_func = ff_shrink22;

            break;

        case 0x22:

            resize_func = ff_shrink44;

            break;

        case 0xf0:

            resize_func = grow21;

            break;

        case 0x0f:

            resize_func = grow12;

            break;

        case 0xe0:

            resize_func = grow41;

            break;

        case 0xff:

            resize_func = grow22;

            break;

        case 0xee:

            resize_func = grow44;

            break;

        case 0xf1:

            resize_func = conv411;

            break;

        default:

            

            goto no_chroma_filter;

        }



        ff_img_copy_plane(dst->data[0], dst->linesize[0],

                       src->data[0], src->linesize[0],

                       dst_width, dst_height);



        for(i = 1;i <= 2; i++)

            resize_func(dst->data[i], dst->linesize[i],

                        src->data[i], src->linesize[i],

                        dst_width>>dst_pix->x_chroma_shift, dst_height>>dst_pix->y_chroma_shift);

        



        if (dst_pix->color_type != src_pix->color_type) {

            const uint8_t *y_table, *c_table;

            if (dst_pix->color_type == FF_COLOR_YUV) {

                y_table = y_jpeg_to_ccir;

                c_table = c_jpeg_to_ccir;

            } else {

                y_table = y_ccir_to_jpeg;

                c_table = c_ccir_to_jpeg;

            }

            img_apply_table(dst->data[0], dst->linesize[0],

                            dst->data[0], dst->linesize[0],

                            dst_width, dst_height,

                            y_table);



            for(i = 1;i <= 2; i++)

                img_apply_table(dst->data[i], dst->linesize[i],

                                dst->data[i], dst->linesize[i],

                                dst_width>>dst_pix->x_chroma_shift,

                                dst_height>>dst_pix->y_chroma_shift,

                                c_table);

        }

        return 0;

    }

 no_chroma_filter:



    

    if (src_pix_fmt == PIX_FMT_YUYV422 ||

        dst_pix_fmt == PIX_FMT_YUYV422) {

        

        int_pix_fmt = PIX_FMT_YUV422P;

    } else if (src_pix_fmt == PIX_FMT_UYVY422 ||

        dst_pix_fmt == PIX_FMT_UYVY422) {

        

        int_pix_fmt = PIX_FMT_YUV422P;

    } else if (src_pix_fmt == PIX_FMT_UYYVYY411 ||

        dst_pix_fmt == PIX_FMT_UYYVYY411) {

        

        int_pix_fmt = PIX_FMT_YUV411P;

    } else if ((src_pix->color_type == FF_COLOR_GRAY &&

                src_pix_fmt != PIX_FMT_GRAY8) ||

               (dst_pix->color_type == FF_COLOR_GRAY &&

                dst_pix_fmt != PIX_FMT_GRAY8)) {

        

        int_pix_fmt = PIX_FMT_GRAY8;

    } else if ((is_yuv_planar(src_pix) &&

                src_pix_fmt != PIX_FMT_YUV444P &&

                src_pix_fmt != PIX_FMT_YUVJ444P)) {

        

        if (src_pix->color_type == FF_COLOR_YUV_JPEG)

            int_pix_fmt = PIX_FMT_YUVJ444P;

        else

            int_pix_fmt = PIX_FMT_YUV444P;

    } else if ((is_yuv_planar(dst_pix) &&

                dst_pix_fmt != PIX_FMT_YUV444P &&

                dst_pix_fmt != PIX_FMT_YUVJ444P)) {

        

        if (dst_pix->color_type == FF_COLOR_YUV_JPEG)

            int_pix_fmt = PIX_FMT_YUVJ444P;

        else

            int_pix_fmt = PIX_FMT_YUV444P;

    } else {

        

        if (src_pix->is_alpha && dst_pix->is_alpha)

            int_pix_fmt = PIX_FMT_RGB32;

        else

            int_pix_fmt = PIX_FMT_RGB24;

    }

    if (src_pix_fmt == int_pix_fmt)

        return -1;

    if (avpicture_alloc(tmp, int_pix_fmt, dst_width, dst_height) < 0)

        return -1;

    ret = -1;

    if (img_convert(tmp, int_pix_fmt,

                    src, src_pix_fmt, src_width, src_height) < 0)

        goto fail1;

    if (img_convert(dst, dst_pix_fmt,

                    tmp, int_pix_fmt, dst_width, dst_height) < 0)

        goto fail1;

    ret = 0;

 fail1:

    avpicture_free(tmp);

    return ret;

}

int FUNC_0(AVPicture *VAR_21, int VAR_1,

                const AVPicture *VAR_22, int VAR_3,

                int VAR_4, int VAR_5)

{

    static int VAR_6;

    int VAR_7, VAR_8, VAR_9, VAR_10, VAR_11;

    const PixFmtInfo *VAR_12, *dst_pix;

    const ConvertEntry *VAR_13;

    AVPicture tmp1, *tmp = &tmp1;



    if (VAR_3 < 0 || VAR_3 >= PIX_FMT_NB ||

        VAR_1 < 0 || VAR_1 >= PIX_FMT_NB)

        return -1;

    if (VAR_4 <= 0 || VAR_5 <= 0)

        return 0;



    if (!VAR_6) {

        VAR_6 = 1;

        img_convert_init();

    }



    VAR_9 = VAR_4;

    VAR_10 = VAR_5;



    dst_pix = &pix_fmt_info[VAR_1];

    VAR_12 = &pix_fmt_info[VAR_3];

    if (VAR_3 == VAR_1) {

        

        av_picture_copy(VAR_21, VAR_22, VAR_1, VAR_9, VAR_10);

        return 0;

    }



    VAR_13 = &convert_table[VAR_3][VAR_1];

    if (VAR_13->convert) {

        

        VAR_13->convert(VAR_21, VAR_22, VAR_9, VAR_10);

        return 0;

    }



    

    if (is_yuv_planar(dst_pix) &&

        VAR_3 == PIX_FMT_GRAY8) {

        int VAR_19, VAR_19, VAR_16;

        uint8_t *d;



        if (dst_pix->color_type == FF_COLOR_YUV_JPEG) {

            ff_img_copy_plane(VAR_21->data[0], VAR_21->linesize[0],

                     VAR_22->data[0], VAR_22->linesize[0],

                     VAR_9, VAR_10);

        } else {

            img_apply_table(VAR_21->data[0], VAR_21->linesize[0],

                            VAR_22->data[0], VAR_22->linesize[0],

                            VAR_9, VAR_10,

                            y_jpeg_to_ccir);

        }

        

        VAR_19 = VAR_9;

        VAR_19 = VAR_10;

        VAR_19 >>= dst_pix->x_chroma_shift;

        VAR_19 >>= dst_pix->y_chroma_shift;

        for(VAR_7 = 1; VAR_7 <= 2; VAR_7++) {

            d = VAR_21->data[VAR_7];

            for(VAR_16 = 0; VAR_16< VAR_19; VAR_16++) {

                memset(d, 128, VAR_19);

                d += VAR_21->linesize[VAR_7];

            }

        }

        return 0;

    }



    

    if (is_yuv_planar(VAR_12) &&

        VAR_1 == PIX_FMT_GRAY8) {

        if (VAR_12->color_type == FF_COLOR_YUV_JPEG) {

            ff_img_copy_plane(VAR_21->data[0], VAR_21->linesize[0],

                     VAR_22->data[0], VAR_22->linesize[0],

                     VAR_9, VAR_10);

        } else {

            img_apply_table(VAR_21->data[0], VAR_21->linesize[0],

                            VAR_22->data[0], VAR_22->linesize[0],

                            VAR_9, VAR_10,

                            y_ccir_to_jpeg);

        }

        return 0;

    }



    

    if (is_yuv_planar(dst_pix) && is_yuv_planar(VAR_12)) {

        int VAR_17, VAR_18, VAR_19, VAR_19, VAR_19;

        void (*VAR_20)(uint8_t *VAR_21, int VAR_21,

                            const uint8_t *VAR_22, int VAR_22,

                            int VAR_23, int VAR_24);



        

        VAR_19 = VAR_9;

        VAR_19 = VAR_10;

        if (dst_pix->x_chroma_shift >= VAR_12->x_chroma_shift)

            VAR_19 >>= dst_pix->x_chroma_shift;

        else

            VAR_19 >>= VAR_12->x_chroma_shift;

        if (dst_pix->y_chroma_shift >= VAR_12->y_chroma_shift)

            VAR_19 >>= dst_pix->y_chroma_shift;

        else

            VAR_19 >>= VAR_12->y_chroma_shift;



        VAR_17 = (dst_pix->x_chroma_shift - VAR_12->x_chroma_shift);

        VAR_18 = (dst_pix->y_chroma_shift - VAR_12->y_chroma_shift);

        VAR_19 = ((VAR_17 & 0xf) << 4) | (VAR_18 & 0xf);

        



        switch(VAR_19) {

        case 0x00:

            VAR_20 = ff_img_copy_plane;

            break;

        case 0x10:

            VAR_20 = shrink21;

            break;

        case 0x20:

            VAR_20 = shrink41;

            break;

        case 0x01:

            VAR_20 = shrink12;

            break;

        case 0x11:

            VAR_20 = ff_shrink22;

            break;

        case 0x22:

            VAR_20 = ff_shrink44;

            break;

        case 0xf0:

            VAR_20 = grow21;

            break;

        case 0x0f:

            VAR_20 = grow12;

            break;

        case 0xe0:

            VAR_20 = grow41;

            break;

        case 0xff:

            VAR_20 = grow22;

            break;

        case 0xee:

            VAR_20 = grow44;

            break;

        case 0xf1:

            VAR_20 = conv411;

            break;

        default:

            

            goto no_chroma_filter;

        }



        ff_img_copy_plane(VAR_21->data[0], VAR_21->linesize[0],

                       VAR_22->data[0], VAR_22->linesize[0],

                       VAR_9, VAR_10);



        for(VAR_7 = 1;VAR_7 <= 2; VAR_7++)

            VAR_20(VAR_21->data[VAR_7], VAR_21->linesize[VAR_7],

                        VAR_22->data[VAR_7], VAR_22->linesize[VAR_7],

                        VAR_9>>dst_pix->x_chroma_shift, VAR_10>>dst_pix->y_chroma_shift);

        



        if (dst_pix->color_type != VAR_12->color_type) {

            const uint8_t *VAR_25, *c_table;

            if (dst_pix->color_type == FF_COLOR_YUV) {

                VAR_25 = y_jpeg_to_ccir;

                c_table = c_jpeg_to_ccir;

            } else {

                VAR_25 = y_ccir_to_jpeg;

                c_table = c_ccir_to_jpeg;

            }

            img_apply_table(VAR_21->data[0], VAR_21->linesize[0],

                            VAR_21->data[0], VAR_21->linesize[0],

                            VAR_9, VAR_10,

                            VAR_25);



            for(VAR_7 = 1;VAR_7 <= 2; VAR_7++)

                img_apply_table(VAR_21->data[VAR_7], VAR_21->linesize[VAR_7],

                                VAR_21->data[VAR_7], VAR_21->linesize[VAR_7],

                                VAR_9>>dst_pix->x_chroma_shift,

                                VAR_10>>dst_pix->y_chroma_shift,

                                c_table);

        }

        return 0;

    }

 no_chroma_filter:



    

    if (VAR_3 == PIX_FMT_YUYV422 ||

        VAR_1 == PIX_FMT_YUYV422) {

        

        VAR_11 = PIX_FMT_YUV422P;

    } else if (VAR_3 == PIX_FMT_UYVY422 ||

        VAR_1 == PIX_FMT_UYVY422) {

        

        VAR_11 = PIX_FMT_YUV422P;

    } else if (VAR_3 == PIX_FMT_UYYVYY411 ||

        VAR_1 == PIX_FMT_UYYVYY411) {

        

        VAR_11 = PIX_FMT_YUV411P;

    } else if ((VAR_12->color_type == FF_COLOR_GRAY &&

                VAR_3 != PIX_FMT_GRAY8) ||

               (dst_pix->color_type == FF_COLOR_GRAY &&

                VAR_1 != PIX_FMT_GRAY8)) {

        

        VAR_11 = PIX_FMT_GRAY8;

    } else if ((is_yuv_planar(VAR_12) &&

                VAR_3 != PIX_FMT_YUV444P &&

                VAR_3 != PIX_FMT_YUVJ444P)) {

        

        if (VAR_12->color_type == FF_COLOR_YUV_JPEG)

            VAR_11 = PIX_FMT_YUVJ444P;

        else

            VAR_11 = PIX_FMT_YUV444P;

    } else if ((is_yuv_planar(dst_pix) &&

                VAR_1 != PIX_FMT_YUV444P &&

                VAR_1 != PIX_FMT_YUVJ444P)) {

        

        if (dst_pix->color_type == FF_COLOR_YUV_JPEG)

            VAR_11 = PIX_FMT_YUVJ444P;

        else

            VAR_11 = PIX_FMT_YUV444P;

    } else {

        

        if (VAR_12->is_alpha && dst_pix->is_alpha)

            VAR_11 = PIX_FMT_RGB32;

        else

            VAR_11 = PIX_FMT_RGB24;

    }

    if (VAR_3 == VAR_11)

        return -1;

    if (avpicture_alloc(tmp, VAR_11, VAR_9, VAR_10) < 0)

        return -1;

    VAR_8 = -1;

    if (FUNC_0(tmp, VAR_11,

                    VAR_22, VAR_3, VAR_4, VAR_5) < 0)

        goto fail1;

    if (FUNC_0(VAR_21, VAR_1,

                    tmp, VAR_11, VAR_9, VAR_10) < 0)

        goto fail1;

    VAR_8 = 0;

 fail1:

    avpicture_free(tmp);

    return VAR_8;

}

int FUNC_0(AVPicture *VAR_21, int VAR_1,
const AVPicture *VAR_22, int VAR_3,
int VAR_4, int VAR_5)
{ static int VAR_6; int VAR_7, VAR_8, VAR_9, VAR_10, VAR_11; const PixFmtInfo *VAR_12, *dst_pix; const ConvertEntry *VAR_13; AVPicture tmp1, *tmp = &tmp1; if (VAR_3 < 0 || VAR_3 >= PIX_FMT_NB ||
VAR_1 < 0 || VAR_1 >= PIX_FMT_NB)
return -1; if (VAR_4 <= 0 || VAR_5 <= 0)
return 0; if (!VAR_6) { VAR_6 = 1; img_convert_init(); } VAR_9 = VAR_4; VAR_10 = VAR_5; dst_pix = &pix_fmt_info[VAR_1]; VAR_12 = &pix_fmt_info[VAR_3]; if (VAR_3 == VAR_1) { av_picture_copy(VAR_21, VAR_22, VAR_1, VAR_9, VAR_10); return 0; } VAR_13 = &convert_table[VAR_3][VAR_1]; if (VAR_13->convert) { VAR_13->convert(VAR_21, VAR_22, VAR_9, VAR_10); return 0; } if (is_yuv_planar(dst_pix) &&
VAR_3 == PIX_FMT_GRAY8) { int VAR_19, VAR_19, VAR_16; uint8_t *d; if (dst_pix->color_type == FF_COLOR_YUV_JPEG) { ff_img_copy_plane(VAR_21->data[0], VAR_21->linesize[0],
VAR_22->data[0], VAR_22->linesize[0],
VAR_9, VAR_10); } else { img_apply_table(VAR_21->data[0], VAR_21->linesize[0],
VAR_22->data[0], VAR_22->linesize[0],
VAR_9, VAR_10,
y_jpeg_to_ccir); } VAR_19 = VAR_9; VAR_19 = VAR_10; VAR_19 >>= dst_pix->x_chroma_shift; VAR_19 >>= dst_pix->y_chroma_shift; for(VAR_7 = 1; VAR_7 <= 2; VAR_7++) { d = VAR_21->data[VAR_7]; for(VAR_16 = 0; VAR_16< VAR_19; VAR_16++) { memset(d, 128, VAR_19); d += VAR_21->linesize[VAR_7]; } } return 0; } if (is_yuv_planar(VAR_12) &&
VAR_1 == PIX_FMT_GRAY8) { if (VAR_12->color_type == FF_COLOR_YUV_JPEG) { ff_img_copy_plane(VAR_21->data[0], VAR_21->linesize[0],
VAR_22->data[0], VAR_22->linesize[0],
VAR_9, VAR_10); } else { img_apply_table(VAR_21->data[0], VAR_21->linesize[0],
VAR_22->data[0], VAR_22->linesize[0],
VAR_9, VAR_10,
y_ccir_to_jpeg); } return 0; } if (is_yuv_planar(dst_pix) && is_yuv_planar(VAR_12)) { int VAR_17, VAR_18, VAR_19, VAR_19, VAR_19; void (*VAR_20)(uint8_t *VAR_21, int VAR_21,
const uint8_t *VAR_22, int VAR_22,
int VAR_23, int VAR_24); VAR_19 = VAR_9; VAR_19 = VAR_10; if (dst_pix->x_chroma_shift >= VAR_12->x_chroma_shift)
VAR_19 >>= dst_pix->x_chroma_shift; else
VAR_19 >>= VAR_12->x_chroma_shift; if (dst_pix->y_chroma_shift >= VAR_12->y_chroma_shift)
VAR_19 >>= dst_pix->y_chroma_shift; else
VAR_19 >>= VAR_12->y_chroma_shift; VAR_17 = (dst_pix->x_chroma_shift - VAR_12->x_chroma_shift); VAR_18 = (dst_pix->y_chroma_shift - VAR_12->y_chroma_shift); VAR_19 = ((VAR_17 & 0xf) << 4) | (VAR_18 & 0xf); switch(VAR_19) { case 0x00:
VAR_20 = ff_img_copy_plane; break; case 0x10:
VAR_20 = shrink21; break; case 0x20:
VAR_20 = shrink41; break; case 0x01:
VAR_20 = shrink12; break; case 0x11:
VAR_20 = ff_shrink22; break; case 0x22:
VAR_20 = ff_shrink44; break; case 0xf0:
VAR_20 = grow21; break; case 0x0f:
VAR_20 = grow12; break; case 0xe0:
VAR_20 = grow41; break; case 0xff:
VAR_20 = grow22; break; case 0xee:
VAR_20 = grow44; break; case 0xf1:
VAR_20 = conv411; break; default:
goto no_chroma_filter; } ff_img_copy_plane(VAR_21->data[0], VAR_21->linesize[0],
VAR_22->data[0], VAR_22->linesize[0],
VAR_9, VAR_10); for(VAR_7 = 1;VAR_7 <= 2; VAR_7++) VAR_20(VAR_21->data[VAR_7], VAR_21->linesize[VAR_7],
VAR_22->data[VAR_7], VAR_22->linesize[VAR_7],
VAR_9>>dst_pix->x_chroma_shift, VAR_10>>dst_pix->y_chroma_shift); if (dst_pix->color_type != VAR_12->color_type) { const uint8_t *VAR_25, *c_table; if (dst_pix->color_type == FF_COLOR_YUV) { VAR_25 = y_jpeg_to_ccir; c_table = c_jpeg_to_ccir; } else { VAR_25 = y_ccir_to_jpeg; c_table = c_ccir_to_jpeg; } img_apply_table(VAR_21->data[0], VAR_21->linesize[0],
VAR_21->data[0], VAR_21->linesize[0],
VAR_9, VAR_10,
VAR_25); for(VAR_7 = 1;VAR_7 <= 2; VAR_7++) img_apply_table(VAR_21->data[VAR_7], VAR_21->linesize[VAR_7],
VAR_21->data[VAR_7], VAR_21->linesize[VAR_7],
VAR_9>>dst_pix->x_chroma_shift,
VAR_10>>dst_pix->y_chroma_shift,
c_table); } return 0; } no_chroma_filter:
if (VAR_3 == PIX_FMT_YUYV422 ||
VAR_1 == PIX_FMT_YUYV422) { VAR_11 = PIX_FMT_YUV422P; } else if (VAR_3 == PIX_FMT_UYVY422 || VAR_1 == PIX_FMT_UYVY422) { VAR_11 = PIX_FMT_YUV422P; } else if (VAR_3 == PIX_FMT_UYYVYY411 || VAR_1 == PIX_FMT_UYYVYY411) { VAR_11 = PIX_FMT_YUV411P; } else if ((VAR_12->color_type == FF_COLOR_GRAY && VAR_3 != PIX_FMT_GRAY8) ||
(dst_pix->color_type == FF_COLOR_GRAY &&
VAR_1 != PIX_FMT_GRAY8)) { VAR_11 = PIX_FMT_GRAY8; } else if ((is_yuv_planar(VAR_12) && VAR_3 != PIX_FMT_YUV444P &&
VAR_3 != PIX_FMT_YUVJ444P)) { if (VAR_12->color_type == FF_COLOR_YUV_JPEG)
VAR_11 = PIX_FMT_YUVJ444P; else
VAR_11 = PIX_FMT_YUV444P; } else if ((is_yuv_planar(dst_pix) && VAR_1 != PIX_FMT_YUV444P &&
VAR_1 != PIX_FMT_YUVJ444P)) { if (dst_pix->color_type == FF_COLOR_YUV_JPEG)
VAR_11 = PIX_FMT_YUVJ444P; else
VAR_11 = PIX_FMT_YUV444P; } else { if (VAR_12->is_alpha && dst_pix->is_alpha)
VAR_11 = PIX_FMT_RGB32; else
VAR_11 = PIX_FMT_RGB24; } if (VAR_3 == VAR_11)
return -1; if (avpicture_alloc(tmp, VAR_11, VAR_9, VAR_10) < 0)
return -1; VAR_8 = -1; if (FUNC_0(tmp, VAR_11,
VAR_22, VAR_3, VAR_4, VAR_5) < 0)
goto fail1; if (FUNC_0(VAR_21, VAR_1,
tmp, VAR_11, VAR_9, VAR_10) < 0)
goto fail1; VAR_8 = 0; fail1:
avpicture_free(tmp); return VAR_8; }