int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)

{

    int ret, i;



    av_assert0(!dst->f->buf[0]);

    av_assert0(src->f->buf[0]);

    av_assert0(src->tf.f == src->f);



    dst->tf.f = dst->f;

    ret = ff_thread_ref_frame(&dst->tf, &src->tf);

    if (ret < 0)

        goto fail;



    dst->qscale_table_buf = av_buffer_ref(src->qscale_table_buf);

    dst->mb_type_buf      = av_buffer_ref(src->mb_type_buf);

    if (!dst->qscale_table_buf || !dst->mb_type_buf)

        goto fail;

    dst->qscale_table = src->qscale_table;

    dst->mb_type      = src->mb_type;



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

        dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]);

        dst->ref_index_buf[i]  = av_buffer_ref(src->ref_index_buf[i]);

        if (!dst->motion_val_buf[i] || !dst->ref_index_buf[i])

            goto fail;

        dst->motion_val[i] = src->motion_val[i];

        dst->ref_index[i]  = src->ref_index[i];

    }



    if (src->hwaccel_picture_private) {

        dst->hwaccel_priv_buf = av_buffer_ref(src->hwaccel_priv_buf);

        if (!dst->hwaccel_priv_buf)

            goto fail;

        dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data;

    }



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

        dst->field_poc[i] = src->field_poc[i];



    memcpy(dst->ref_poc,   src->ref_poc,   sizeof(src->ref_poc));

    memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count));



    dst->poc           = src->poc;

    dst->frame_num     = src->frame_num;

    dst->mmco_reset    = src->mmco_reset;

    dst->long_ref      = src->long_ref;

    dst->mbaff         = src->mbaff;

    dst->field_picture = src->field_picture;

    dst->reference     = src->reference;

    dst->recovered     = src->recovered;

    dst->invalid_gap   = src->invalid_gap;

    dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt;



    return 0;

fail:

    ff_h264_unref_picture(h, dst);

    return ret;

}

int ff_h264_ref_picture(H264Context *h, H264Picture *dst, H264Picture *src)

{

    int ret, i;



    av_assert0(!dst->f->buf[0]);

    av_assert0(src->f->buf[0]);

    av_assert0(src->tf.f == src->f);



    dst->tf.f = dst->f;

    ret = ff_thread_ref_frame(&dst->tf, &src->tf);

    if (ret < 0)

        goto fail;



    dst->qscale_table_buf = av_buffer_ref(src->qscale_table_buf);

    dst->mb_type_buf      = av_buffer_ref(src->mb_type_buf);

    if (!dst->qscale_table_buf || !dst->mb_type_buf)

        goto fail;

    dst->qscale_table = src->qscale_table;

    dst->mb_type      = src->mb_type;



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

        dst->motion_val_buf[i] = av_buffer_ref(src->motion_val_buf[i]);

        dst->ref_index_buf[i]  = av_buffer_ref(src->ref_index_buf[i]);

        if (!dst->motion_val_buf[i] || !dst->ref_index_buf[i])

            goto fail;

        dst->motion_val[i] = src->motion_val[i];

        dst->ref_index[i]  = src->ref_index[i];

    }



    if (src->hwaccel_picture_private) {

        dst->hwaccel_priv_buf = av_buffer_ref(src->hwaccel_priv_buf);

        if (!dst->hwaccel_priv_buf)

            goto fail;

        dst->hwaccel_picture_private = dst->hwaccel_priv_buf->data;

    }



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

        dst->field_poc[i] = src->field_poc[i];



    memcpy(dst->ref_poc,   src->ref_poc,   sizeof(src->ref_poc));

    memcpy(dst->ref_count, src->ref_count, sizeof(src->ref_count));



    dst->poc           = src->poc;

    dst->frame_num     = src->frame_num;

    dst->mmco_reset    = src->mmco_reset;

    dst->long_ref      = src->long_ref;

    dst->mbaff         = src->mbaff;

    dst->field_picture = src->field_picture;

    dst->reference     = src->reference;

    dst->recovered     = src->recovered;

    dst->invalid_gap   = src->invalid_gap;

    dst->sei_recovery_frame_cnt = src->sei_recovery_frame_cnt;



    return 0;

fail:

    ff_h264_unref_picture(h, dst);

    return ret;

}

    if (!dst->qscale_table_buf || !dst->mb_type_buf)         if (!dst->motion_val_buf[i] || !dst->ref_index_buf[i])         if (!dst->hwaccel_priv_buf)
int FUNC_0(H264Context *VAR_0, H264Picture *VAR_1, H264Picture *VAR_2)

{

    int VAR_3, VAR_4;



    av_assert0(!VAR_1->f->buf[0]);

    av_assert0(VAR_2->f->buf[0]);

    av_assert0(VAR_2->tf.f == VAR_2->f);



    VAR_1->tf.f = VAR_1->f;

    VAR_3 = ff_thread_ref_frame(&VAR_1->tf, &VAR_2->tf);

    if (VAR_3 < 0)

        goto fail;



    VAR_1->qscale_table_buf = av_buffer_ref(VAR_2->qscale_table_buf);

    VAR_1->mb_type_buf      = av_buffer_ref(VAR_2->mb_type_buf);

    if (!VAR_1->qscale_table_buf || !VAR_1->mb_type_buf)

        goto fail;

    VAR_1->qscale_table = VAR_2->qscale_table;

    VAR_1->mb_type      = VAR_2->mb_type;



    for (VAR_4 = 0; VAR_4 < 2; VAR_4++) {

        VAR_1->motion_val_buf[VAR_4] = av_buffer_ref(VAR_2->motion_val_buf[VAR_4]);

        VAR_1->ref_index_buf[VAR_4]  = av_buffer_ref(VAR_2->ref_index_buf[VAR_4]);

        if (!VAR_1->motion_val_buf[VAR_4] || !VAR_1->ref_index_buf[VAR_4])

            goto fail;

        VAR_1->motion_val[VAR_4] = VAR_2->motion_val[VAR_4];

        VAR_1->ref_index[VAR_4]  = VAR_2->ref_index[VAR_4];

    }



    if (VAR_2->hwaccel_picture_private) {

        VAR_1->hwaccel_priv_buf = av_buffer_ref(VAR_2->hwaccel_priv_buf);

        if (!VAR_1->hwaccel_priv_buf)

            goto fail;

        VAR_1->hwaccel_picture_private = VAR_1->hwaccel_priv_buf->data;

    }



    for (VAR_4 = 0; VAR_4 < 2; VAR_4++)

        VAR_1->field_poc[VAR_4] = VAR_2->field_poc[VAR_4];



    memcpy(VAR_1->ref_poc,   VAR_2->ref_poc,   sizeof(VAR_2->ref_poc));

    memcpy(VAR_1->ref_count, VAR_2->ref_count, sizeof(VAR_2->ref_count));



    VAR_1->poc           = VAR_2->poc;

    VAR_1->frame_num     = VAR_2->frame_num;

    VAR_1->mmco_reset    = VAR_2->mmco_reset;

    VAR_1->long_ref      = VAR_2->long_ref;

    VAR_1->mbaff         = VAR_2->mbaff;

    VAR_1->field_picture = VAR_2->field_picture;

    VAR_1->reference     = VAR_2->reference;

    VAR_1->recovered     = VAR_2->recovered;

    VAR_1->invalid_gap   = VAR_2->invalid_gap;

    VAR_1->sei_recovery_frame_cnt = VAR_2->sei_recovery_frame_cnt;



    return 0;

fail:

    ff_h264_unref_picture(VAR_0, VAR_1);

    return VAR_3;

}

int FUNC_0(H264Context *VAR_0, H264Picture *VAR_1, H264Picture *VAR_2)
{ int VAR_3, VAR_4; av_assert0(!VAR_1->f->buf[0]); av_assert0(VAR_2->f->buf[0]); av_assert0(VAR_2->tf.f == VAR_2->f); VAR_1->tf.f = VAR_1->f; VAR_3 = ff_thread_ref_frame(&VAR_1->tf, &VAR_2->tf); if (VAR_3 < 0)
goto fail; VAR_1->qscale_table_buf = av_buffer_ref(VAR_2->qscale_table_buf); VAR_1->mb_type_buf      = av_buffer_ref(VAR_2->mb_type_buf); if (!VAR_1->qscale_table_buf || !VAR_1->mb_type_buf)
goto fail; VAR_1->qscale_table = VAR_2->qscale_table; VAR_1->mb_type      = VAR_2->mb_type; for (VAR_4 = 0; VAR_4 < 2; VAR_4++) { VAR_1->motion_val_buf[VAR_4] = av_buffer_ref(VAR_2->motion_val_buf[VAR_4]); VAR_1->ref_index_buf[VAR_4]  = av_buffer_ref(VAR_2->ref_index_buf[VAR_4]); if (!VAR_1->motion_val_buf[VAR_4] || !VAR_1->ref_index_buf[VAR_4])
goto fail; VAR_1->motion_val[VAR_4] = VAR_2->motion_val[VAR_4]; VAR_1->ref_index[VAR_4]  = VAR_2->ref_index[VAR_4]; } if (VAR_2->hwaccel_picture_private) { VAR_1->hwaccel_priv_buf = av_buffer_ref(VAR_2->hwaccel_priv_buf); if (!VAR_1->hwaccel_priv_buf)
goto fail; VAR_1->hwaccel_picture_private = VAR_1->hwaccel_priv_buf->data; } for (VAR_4 = 0; VAR_4 < 2; VAR_4++) VAR_1->field_poc[VAR_4] = VAR_2->field_poc[VAR_4]; memcpy(VAR_1->ref_poc,   VAR_2->ref_poc,   sizeof(VAR_2->ref_poc)); memcpy(VAR_1->ref_count, VAR_2->ref_count, sizeof(VAR_2->ref_count)); VAR_1->poc           = VAR_2->poc; VAR_1->frame_num     = VAR_2->frame_num; VAR_1->mmco_reset    = VAR_2->mmco_reset; VAR_1->long_ref      = VAR_2->long_ref; VAR_1->mbaff         = VAR_2->mbaff; VAR_1->field_picture = VAR_2->field_picture; VAR_1->reference     = VAR_2->reference; VAR_1->recovered     = VAR_2->recovered; VAR_1->invalid_gap   = VAR_2->invalid_gap; VAR_1->sei_recovery_frame_cnt = VAR_2->sei_recovery_frame_cnt; return 0; fail:
ff_h264_unref_picture(VAR_0, VAR_1); return VAR_3; }