int ff_mpv_frame_size_alloc(MpegEncContext *s, int linesize)

{

    int alloc_size = FFALIGN(FFABS(linesize) + 64, 32);



    // edge emu needs blocksize + filter length - 1

    // (= 17x17 for  halfpel / 21x21 for  h264)

    // VC1 computes luma and chroma simultaneously and needs 19X19 + 9x9

    // at uvlinesize. It supports only YUV420 so 24x24 is enough

    // linesize * interlaced * MBsize

    FF_ALLOCZ_OR_GOTO(s->avctx, s->edge_emu_buffer, alloc_size * 4 * 24,

                      fail);



    FF_ALLOCZ_OR_GOTO(s->avctx, s->me.scratchpad, alloc_size * 2 * 16 * 2,

                      fail)

    s->me.temp         = s->me.scratchpad;

    s->rd_scratchpad   = s->me.scratchpad;

    s->b_scratchpad    = s->me.scratchpad;

    s->obmc_scratchpad = s->me.scratchpad + 16;



    return 0;

fail:

    av_freep(&s->edge_emu_buffer);

    return AVERROR(ENOMEM);

}

int ff_mpv_frame_size_alloc(MpegEncContext *s, int linesize)

{

    int alloc_size = FFALIGN(FFABS(linesize) + 64, 32);



    

    

    

    

    

    FF_ALLOCZ_OR_GOTO(s->avctx, s->edge_emu_buffer, alloc_size * 4 * 24,

                      fail);



    FF_ALLOCZ_OR_GOTO(s->avctx, s->me.scratchpad, alloc_size * 2 * 16 * 2,

                      fail)

    s->me.temp         = s->me.scratchpad;

    s->rd_scratchpad   = s->me.scratchpad;

    s->b_scratchpad    = s->me.scratchpad;

    s->obmc_scratchpad = s->me.scratchpad + 16;



    return 0;

fail:

    av_freep(&s->edge_emu_buffer);

    return AVERROR(ENOMEM);

}

int FUNC_0(MpegEncContext *VAR_0, int VAR_1)

{

    int VAR_2 = FFALIGN(FFABS(VAR_1) + 64, 32);



    

    

    

    

    

    FF_ALLOCZ_OR_GOTO(VAR_0->avctx, VAR_0->edge_emu_buffer, VAR_2 * 4 * 24,

                      fail);



    FF_ALLOCZ_OR_GOTO(VAR_0->avctx, VAR_0->me.scratchpad, VAR_2 * 2 * 16 * 2,

                      fail)

    VAR_0->me.temp         = VAR_0->me.scratchpad;

    VAR_0->rd_scratchpad   = VAR_0->me.scratchpad;

    VAR_0->b_scratchpad    = VAR_0->me.scratchpad;

    VAR_0->obmc_scratchpad = VAR_0->me.scratchpad + 16;



    return 0;

fail:

    av_freep(&VAR_0->edge_emu_buffer);

    return AVERROR(ENOMEM);

}

int FUNC_0(MpegEncContext *VAR_0, int VAR_1)
{ int VAR_2 = FFALIGN(FFABS(VAR_1) + 64, 32); FF_ALLOCZ_OR_GOTO(VAR_0->avctx, VAR_0->edge_emu_buffer, VAR_2 * 4 * 24,
fail); FF_ALLOCZ_OR_GOTO(VAR_0->avctx, VAR_0->me.scratchpad, VAR_2 * 2 * 16 * 2,
fail)
VAR_0->me.temp         = VAR_0->me.scratchpad; VAR_0->rd_scratchpad   = VAR_0->me.scratchpad; VAR_0->b_scratchpad    = VAR_0->me.scratchpad; VAR_0->obmc_scratchpad = VAR_0->me.scratchpad + 16; return 0; fail:
av_freep(&VAR_0->edge_emu_buffer); return AVERROR(ENOMEM); }