static void write_picture(AVFormatContext *s, int index, AVPicture *picture, 

                          int pix_fmt, int w, int h)

{

    UINT8 *buf, *src, *dest;

    int size, j, i;



    size = avpicture_get_size(pix_fmt, w, h);

    buf = malloc(size);

    if (!buf)

        return;



    /* XXX: not efficient, should add test if we can take

       directly the AVPicture */

    switch(pix_fmt) {

    case PIX_FMT_YUV420P:

        dest = buf;

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

            if (i == 1) {

                w >>= 1;

                h >>= 1;

            }

            src = picture->data[i];

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

                memcpy(dest, src, w);

                dest += w;

                src += picture->linesize[i];

            }

        }

        break;

    case PIX_FMT_YUV422P:

        size = (w * h) * 2; 

        buf = malloc(size);

        dest = buf;

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

            if (i == 1) {

                w >>= 1;

            }

            src = picture->data[i];

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

                memcpy(dest, src, w);

                dest += w;

                src += picture->linesize[i];

            }

        }

        break;

    case PIX_FMT_YUV444P:

        size = (w * h) * 3; 

        buf = malloc(size);

        dest = buf;

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

            src = picture->data[i];

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

                memcpy(dest, src, w);

                dest += w;

                src += picture->linesize[i];

            }

        }

        break;

    case PIX_FMT_YUV422:

        size = (w * h) * 2; 

        buf = malloc(size);

        dest = buf;

        src = picture->data[0];

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

            memcpy(dest, src, w * 2);

            dest += w * 2;

            src += picture->linesize[0];

        }

        break;

    case PIX_FMT_RGB24:

    case PIX_FMT_BGR24:

        size = (w * h) * 3; 

        buf = malloc(size);

        dest = buf;

        src = picture->data[0];

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

            memcpy(dest, src, w * 3);

            dest += w * 3;

            src += picture->linesize[0];

        }

        break;

    default:

        return;

    }

    s->format->write_packet(s, index, buf, size);

    free(buf);

}

static void write_picture(AVFormatContext *s, int index, AVPicture *picture, 

                          int pix_fmt, int w, int h)

{

    UINT8 *buf, *src, *dest;

    int size, j, i;



    size = avpicture_get_size(pix_fmt, w, h);

    buf = malloc(size);

    if (!buf)

        return;



    



    switch(pix_fmt) {

    case PIX_FMT_YUV420P:

        dest = buf;

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

            if (i == 1) {

                w >>= 1;

                h >>= 1;

            }

            src = picture->data[i];

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

                memcpy(dest, src, w);

                dest += w;

                src += picture->linesize[i];

            }

        }

        break;

    case PIX_FMT_YUV422P:

        size = (w * h) * 2; 

        buf = malloc(size);

        dest = buf;

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

            if (i == 1) {

                w >>= 1;

            }

            src = picture->data[i];

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

                memcpy(dest, src, w);

                dest += w;

                src += picture->linesize[i];

            }

        }

        break;

    case PIX_FMT_YUV444P:

        size = (w * h) * 3; 

        buf = malloc(size);

        dest = buf;

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

            src = picture->data[i];

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

                memcpy(dest, src, w);

                dest += w;

                src += picture->linesize[i];

            }

        }

        break;

    case PIX_FMT_YUV422:

        size = (w * h) * 2; 

        buf = malloc(size);

        dest = buf;

        src = picture->data[0];

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

            memcpy(dest, src, w * 2);

            dest += w * 2;

            src += picture->linesize[0];

        }

        break;

    case PIX_FMT_RGB24:

    case PIX_FMT_BGR24:

        size = (w * h) * 3; 

        buf = malloc(size);

        dest = buf;

        src = picture->data[0];

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

            memcpy(dest, src, w * 3);

            dest += w * 3;

            src += picture->linesize[0];

        }

        break;

    default:

        return;

    }

    s->format->write_packet(s, index, buf, size);

    free(buf);

}

    size = avpicture_get_size(pix_fmt, w, h);     buf = malloc(size);     if (!buf)
static void FUNC_0(AVFormatContext *VAR_0, int VAR_1, AVPicture *VAR_2, 

                          int VAR_3, int VAR_4, int VAR_5)

{

    UINT8 *buf, *src, *dest;

    int VAR_6, VAR_7, VAR_8;



    VAR_6 = avpicture_get_size(VAR_3, VAR_4, VAR_5);

    buf = malloc(VAR_6);

    if (!buf)

        return;



    



    switch(VAR_3) {

    case PIX_FMT_YUV420P:

        dest = buf;

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

            if (VAR_8 == 1) {

                VAR_4 >>= 1;

                VAR_5 >>= 1;

            }

            src = VAR_2->data[VAR_8];

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

                memcpy(dest, src, VAR_4);

                dest += VAR_4;

                src += VAR_2->linesize[VAR_8];

            }

        }

        break;

    case PIX_FMT_YUV422P:

        VAR_6 = (VAR_4 * VAR_5) * 2; 

        buf = malloc(VAR_6);

        dest = buf;

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

            if (VAR_8 == 1) {

                VAR_4 >>= 1;

            }

            src = VAR_2->data[VAR_8];

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

                memcpy(dest, src, VAR_4);

                dest += VAR_4;

                src += VAR_2->linesize[VAR_8];

            }

        }

        break;

    case PIX_FMT_YUV444P:

        VAR_6 = (VAR_4 * VAR_5) * 3; 

        buf = malloc(VAR_6);

        dest = buf;

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

            src = VAR_2->data[VAR_8];

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

                memcpy(dest, src, VAR_4);

                dest += VAR_4;

                src += VAR_2->linesize[VAR_8];

            }

        }

        break;

    case PIX_FMT_YUV422:

        VAR_6 = (VAR_4 * VAR_5) * 2; 

        buf = malloc(VAR_6);

        dest = buf;

        src = VAR_2->data[0];

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

            memcpy(dest, src, VAR_4 * 2);

            dest += VAR_4 * 2;

            src += VAR_2->linesize[0];

        }

        break;

    case PIX_FMT_RGB24:

    case PIX_FMT_BGR24:

        VAR_6 = (VAR_4 * VAR_5) * 3; 

        buf = malloc(VAR_6);

        dest = buf;

        src = VAR_2->data[0];

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

            memcpy(dest, src, VAR_4 * 3);

            dest += VAR_4 * 3;

            src += VAR_2->linesize[0];

        }

        break;

    default:

        return;

    }

    VAR_0->format->write_packet(VAR_0, VAR_1, buf, VAR_6);

    free(buf);

}

static void FUNC_0(AVFormatContext *VAR_0, int VAR_1, AVPicture *VAR_2,
int VAR_3, int VAR_4, int VAR_5)
{ UINT8 *buf, *src, *dest; int VAR_6, VAR_7, VAR_8; VAR_6 = avpicture_get_size(VAR_3, VAR_4, VAR_5); buf = malloc(VAR_6); if (!buf)
return; switch(VAR_3) { case PIX_FMT_YUV420P:
dest = buf; for(VAR_8=0;VAR_8<3;VAR_8++) { if (VAR_8 == 1) { VAR_4 >>= 1; VAR_5 >>= 1; } src = VAR_2->data[VAR_8]; for(VAR_7=0;VAR_7<VAR_5;VAR_7++) { memcpy(dest, src, VAR_4); dest += VAR_4; src += VAR_2->linesize[VAR_8]; } } break; case PIX_FMT_YUV422P:
VAR_6 = (VAR_4 * VAR_5) * 2; buf = malloc(VAR_6); dest = buf; for(VAR_8=0;VAR_8<3;VAR_8++) { if (VAR_8 == 1) { VAR_4 >>= 1; } src = VAR_2->data[VAR_8]; for(VAR_7=0;VAR_7<VAR_5;VAR_7++) { memcpy(dest, src, VAR_4); dest += VAR_4; src += VAR_2->linesize[VAR_8]; } } break; case PIX_FMT_YUV444P:
VAR_6 = (VAR_4 * VAR_5) * 3; buf = malloc(VAR_6); dest = buf; for(VAR_8=0;VAR_8<3;VAR_8++) { src = VAR_2->data[VAR_8]; for(VAR_7=0;VAR_7<VAR_5;VAR_7++) { memcpy(dest, src, VAR_4); dest += VAR_4; src += VAR_2->linesize[VAR_8]; } } break; case PIX_FMT_YUV422:
VAR_6 = (VAR_4 * VAR_5) * 2; buf = malloc(VAR_6); dest = buf; src = VAR_2->data[0]; for(VAR_7=0;VAR_7<VAR_5;VAR_7++) { memcpy(dest, src, VAR_4 * 2); dest += VAR_4 * 2; src += VAR_2->linesize[0]; } break; case PIX_FMT_RGB24:
case PIX_FMT_BGR24:
VAR_6 = (VAR_4 * VAR_5) * 3; buf = malloc(VAR_6); dest = buf; src = VAR_2->data[0]; for(VAR_7=0;VAR_7<VAR_5;VAR_7++) { memcpy(dest, src, VAR_4 * 3); dest += VAR_4 * 3; src += VAR_2->linesize[0]; } break; default:
return; } VAR_0->format->write_packet(VAR_0, VAR_1, buf, VAR_6); free(buf); }