static int mpeg_decode_frame(AVCodecContext *avctx,

                             void *data, int *data_size,

                             AVPacket *avpkt)

{

    const uint8_t *buf = avpkt->data;

    int buf_size = avpkt->size;

    Mpeg1Context *s = avctx->priv_data;

    AVFrame *picture = data;

    MpegEncContext *s2 = &s->mpeg_enc_ctx;

    av_dlog(avctx, "fill_buffer\n");



    if (buf_size == 0 || (buf_size == 4 && AV_RB32(buf) == SEQ_END_CODE)) {

        /* special case for last picture */

        if (s2->low_delay == 0 && s2->next_picture_ptr) {

            *picture = s2->next_picture_ptr->f;

            s2->next_picture_ptr = NULL;



            *data_size = sizeof(AVFrame);

        }

        return buf_size;

    }



    if (s2->flags & CODEC_FLAG_TRUNCATED) {

        int next = ff_mpeg1_find_frame_end(&s2->parse_context, buf, buf_size, NULL);



        if (ff_combine_frame(&s2->parse_context, next, (const uint8_t **)&buf, &buf_size) < 0)

            return buf_size;

    }



    s2->codec_tag = avpriv_toupper4(avctx->codec_tag);

    if (s->mpeg_enc_ctx_allocated == 0 && (   s2->codec_tag == AV_RL32("VCR2")

                                           || s2->codec_tag == AV_RL32("BW10")

                                          ))

        vcr2_init_sequence(avctx);



    s->slice_count = 0;



    if (avctx->extradata && !avctx->frame_number) {

        int ret = decode_chunks(avctx, picture, data_size, avctx->extradata, avctx->extradata_size);

        if(*data_size) {

            av_log(avctx, AV_LOG_ERROR, "picture in extradata\n");

            *data_size = 0;

        }

        if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))

            return ret;

    }



    return decode_chunks(avctx, picture, data_size, buf, buf_size);

}

static int mpeg_decode_frame(AVCodecContext *avctx,

                             void *data, int *data_size,

                             AVPacket *avpkt)

{

    const uint8_t *buf = avpkt->data;

    int buf_size = avpkt->size;

    Mpeg1Context *s = avctx->priv_data;

    AVFrame *picture = data;

    MpegEncContext *s2 = &s->mpeg_enc_ctx;

    av_dlog(avctx, "fill_buffer\n");



    if (buf_size == 0 || (buf_size == 4 && AV_RB32(buf) == SEQ_END_CODE)) {

        

        if (s2->low_delay == 0 && s2->next_picture_ptr) {

            *picture = s2->next_picture_ptr->f;

            s2->next_picture_ptr = NULL;



            *data_size = sizeof(AVFrame);

        }

        return buf_size;

    }



    if (s2->flags & CODEC_FLAG_TRUNCATED) {

        int next = ff_mpeg1_find_frame_end(&s2->parse_context, buf, buf_size, NULL);



        if (ff_combine_frame(&s2->parse_context, next, (const uint8_t **)&buf, &buf_size) < 0)

            return buf_size;

    }



    s2->codec_tag = avpriv_toupper4(avctx->codec_tag);

    if (s->mpeg_enc_ctx_allocated == 0 && (   s2->codec_tag == AV_RL32("VCR2")

                                           || s2->codec_tag == AV_RL32("BW10")

                                          ))

        vcr2_init_sequence(avctx);



    s->slice_count = 0;



    if (avctx->extradata && !avctx->frame_number) {

        int ret = decode_chunks(avctx, picture, data_size, avctx->extradata, avctx->extradata_size);

        if(*data_size) {

            av_log(avctx, AV_LOG_ERROR, "picture in extradata\n");

            *data_size = 0;

        }

        if (ret < 0 && (avctx->err_recognition & AV_EF_EXPLODE))

            return ret;

    }



    return decode_chunks(avctx, picture, data_size, buf, buf_size);

}

static int FUNC_0(AVCodecContext *VAR_0,

                             void *VAR_1, int *VAR_2,

                             AVPacket *VAR_3)

{

    const uint8_t *VAR_4 = VAR_3->VAR_1;

    int VAR_5 = VAR_3->size;

    Mpeg1Context *s = VAR_0->priv_data;

    AVFrame *picture = VAR_1;

    MpegEncContext *s2 = &s->mpeg_enc_ctx;

    av_dlog(VAR_0, "fill_buffer\n");



    if (VAR_5 == 0 || (VAR_5 == 4 && AV_RB32(VAR_4) == SEQ_END_CODE)) {

        

        if (s2->low_delay == 0 && s2->next_picture_ptr) {

            *picture = s2->next_picture_ptr->f;

            s2->next_picture_ptr = NULL;



            *VAR_2 = sizeof(AVFrame);

        }

        return VAR_5;

    }



    if (s2->flags & CODEC_FLAG_TRUNCATED) {

        int VAR_6 = ff_mpeg1_find_frame_end(&s2->parse_context, VAR_4, VAR_5, NULL);



        if (ff_combine_frame(&s2->parse_context, VAR_6, (const uint8_t **)&VAR_4, &VAR_5) < 0)

            return VAR_5;

    }



    s2->codec_tag = avpriv_toupper4(VAR_0->codec_tag);

    if (s->mpeg_enc_ctx_allocated == 0 && (   s2->codec_tag == AV_RL32("VCR2")

                                           || s2->codec_tag == AV_RL32("BW10")

                                          ))

        vcr2_init_sequence(VAR_0);



    s->slice_count = 0;



    if (VAR_0->extradata && !VAR_0->frame_number) {

        int VAR_7 = decode_chunks(VAR_0, picture, VAR_2, VAR_0->extradata, VAR_0->extradata_size);

        if(*VAR_2) {

            av_log(VAR_0, AV_LOG_ERROR, "picture in extradata\n");

            *VAR_2 = 0;

        }

        if (VAR_7 < 0 && (VAR_0->err_recognition & AV_EF_EXPLODE))

            return VAR_7;

    }



    return decode_chunks(VAR_0, picture, VAR_2, VAR_4, VAR_5);

}

static int FUNC_0(AVCodecContext *VAR_0,
void *VAR_1, int *VAR_2,
AVPacket *VAR_3)
{ const uint8_t *VAR_4 = VAR_3->VAR_1; int VAR_5 = VAR_3->size; Mpeg1Context *s = VAR_0->priv_data; AVFrame *picture = VAR_1; MpegEncContext *s2 = &s->mpeg_enc_ctx; av_dlog(VAR_0, "fill_buffer\n"); if (VAR_5 == 0 || (VAR_5 == 4 && AV_RB32(VAR_4) == SEQ_END_CODE)) { if (s2->low_delay == 0 && s2->next_picture_ptr) { *picture = s2->next_picture_ptr->f; s2->next_picture_ptr = NULL; *VAR_2 = sizeof(AVFrame); } return VAR_5; } if (s2->flags & CODEC_FLAG_TRUNCATED) { int VAR_6 = ff_mpeg1_find_frame_end(&s2->parse_context, VAR_4, VAR_5, NULL); if (ff_combine_frame(&s2->parse_context, VAR_6, (const uint8_t **)&VAR_4, &VAR_5) < 0)
return VAR_5; } s2->codec_tag = avpriv_toupper4(VAR_0->codec_tag); if (s->mpeg_enc_ctx_allocated == 0 && (   s2->codec_tag == AV_RL32("VCR2")
|| s2->codec_tag == AV_RL32("BW10")
))
vcr2_init_sequence(VAR_0); s->slice_count = 0; if (VAR_0->extradata && !VAR_0->frame_number) { int VAR_7 = decode_chunks(VAR_0, picture, VAR_2, VAR_0->extradata, VAR_0->extradata_size); if(*VAR_2) { av_log(VAR_0, AV_LOG_ERROR, "picture in extradata\n"); *VAR_2 = 0; } if (VAR_7 < 0 && (VAR_0->err_recognition & AV_EF_EXPLODE))
return VAR_7; } return decode_chunks(VAR_0, picture, VAR_2, VAR_4, VAR_5); }