libavcodec/vp8.c:1913: error: Uninitialized Value
  The value read from curframe was never initialized.

libavcodec/vp8.c:1913:5: 
1911.     int ret, i, referenced, num_jobs;
1912.     enum AVDiscard skip_thresh;
1913.     VP8Frame *av_uninit(curframe), *prev_frame;
          ^
1914. 
1915.     if ((ret = decode_frame_header(s, avpkt->data, avpkt->size)) < 0)

int ff_vp8_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
                        AVPacket *avpkt)
{
    VP8Context *s = avctx->priv_data;
    int ret, i, referenced, num_jobs;
    enum AVDiscard skip_thresh;
    VP8Frame *av_uninit(curframe), *prev_frame;
    if ((ret = decode_frame_header(s, avpkt->data, avpkt->size)) < 0)
        goto err;
    prev_frame = s->framep[VP56_FRAME_CURRENT];
    referenced = s->update_last || s->update_golden == VP56_FRAME_CURRENT ||
                 s->update_altref == VP56_FRAME_CURRENT;
    skip_thresh = !referenced ? AVDISCARD_NONREF
                              : !s->keyframe ? AVDISCARD_NONKEY
                                             : AVDISCARD_ALL;
    if (avctx->skip_frame >= skip_thresh) {
        s->invisible = 1;
        memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);
        goto skip_decode;
    }
    s->deblock_filter = s->filter.level && avctx->skip_loop_filter < skip_thresh;
    for (i = 0; i < 5; i++)
        if (s->frames[i].tf.f->data[0] &&
            &s->frames[i] != prev_frame &&
            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN]   &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2])
            vp8_release_frame(s, &s->frames[i]);
    for (i = 0; i < 5; i++)
        if (&s->frames[i] != prev_frame &&
            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN]   &&
            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2]) {
            curframe = s->framep[VP56_FRAME_CURRENT] = &s->frames[i];
            break;
        }
    if (i == 5) {
        av_log(avctx, AV_LOG_FATAL, "Ran out of free frames!\n");
        abort();
    }
    if (curframe->tf.f->data[0])
        vp8_release_frame(s, curframe);
    if (!s->keyframe && (!s->framep[VP56_FRAME_PREVIOUS] ||
                         !s->framep[VP56_FRAME_GOLDEN]   ||
                         !s->framep[VP56_FRAME_GOLDEN2])) {
        av_log(avctx, AV_LOG_WARNING,
               "Discarding interframe without a prior keyframe!\n");
        ret = AVERROR_INVALIDDATA;
        goto err;
    }
    curframe->tf.f->key_frame = s->keyframe;
    curframe->tf.f->pict_type = s->keyframe ? AV_PICTURE_TYPE_I
                                            : AV_PICTURE_TYPE_P;
    if ((ret = vp8_alloc_frame(s, curframe, referenced))) {
        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed!\n");
        goto err;
    }
    if (s->update_altref != VP56_FRAME_NONE)
        s->next_framep[VP56_FRAME_GOLDEN2] = s->framep[s->update_altref];
    else
        s->next_framep[VP56_FRAME_GOLDEN2] = s->framep[VP56_FRAME_GOLDEN2];
    if (s->update_golden != VP56_FRAME_NONE)
        s->next_framep[VP56_FRAME_GOLDEN] = s->framep[s->update_golden];
    else
        s->next_framep[VP56_FRAME_GOLDEN] = s->framep[VP56_FRAME_GOLDEN];
    if (s->update_last)
        s->next_framep[VP56_FRAME_PREVIOUS] = curframe;
    else
        s->next_framep[VP56_FRAME_PREVIOUS] = s->framep[VP56_FRAME_PREVIOUS];
    s->next_framep[VP56_FRAME_CURRENT] = curframe;
    ff_thread_finish_setup(avctx);
    s->linesize   = curframe->tf.f->linesize[0];
    s->uvlinesize = curframe->tf.f->linesize[1];
    memset(s->top_nnz, 0, s->mb_width * sizeof(*s->top_nnz));
    if (!s->mb_layout)
        memset(s->macroblocks + s->mb_height * 2 - 1, 0,
               (s->mb_width + 1) * sizeof(*s->macroblocks));
    if (!s->mb_layout && s->keyframe)
        memset(s->intra4x4_pred_mode_top, DC_PRED, s->mb_width * 4);
    memset(s->ref_count, 0, sizeof(s->ref_count));
    if (s->mb_layout == 1) {
        if (prev_frame && s->segmentation.enabled &&
            !s->segmentation.update_map)
            ff_thread_await_progress(&prev_frame->tf, 1, 0);
        vp8_decode_mv_mb_modes(avctx, curframe, prev_frame);
    }
    if (avctx->active_thread_type == FF_THREAD_FRAME)
        num_jobs = 1;
    else
        num_jobs = FFMIN(s->num_coeff_partitions, avctx->thread_count);
    s->num_jobs   = num_jobs;
    s->curframe   = curframe;
    s->prev_frame = prev_frame;
    s->mv_min.y   = -MARGIN;
    s->mv_max.y   = ((s->mb_height - 1) << 6) + MARGIN;
    for (i = 0; i < MAX_THREADS; i++) {
        s->thread_data[i].thread_mb_pos = 0;
        s->thread_data[i].wait_mb_pos   = INT_MAX;
    }
    avctx->execute2(avctx, vp8_decode_mb_row_sliced,
                    s->thread_data, NULL, num_jobs);
    ff_thread_report_progress(&curframe->tf, INT_MAX, 0);
    memcpy(&s->framep[0], &s->next_framep[0], sizeof(s->framep[0]) * 4);
skip_decode:
    if (!s->update_probabilities)
        s->prob[0] = s->prob[1];
    if (!s->invisible) {
        if ((ret = av_frame_ref(data, curframe->tf.f)) < 0)
            return ret;
        *got_frame = 1;
    }
    return avpkt->size;
err:
    memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);
    return ret;
}
['int ff_vp8_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,\n                        AVPacket *avpkt)\n{\n    VP8Context *s = avctx->priv_data;\n    int ret, i, referenced, num_jobs;\n    enum AVDiscard skip_thresh;\n    VP8Frame *av_uninit(curframe), *prev_frame;\n    if ((ret = decode_frame_header(s, avpkt->data, avpkt->size)) < 0)\n        goto err;\n    prev_frame = s->framep[VP56_FRAME_CURRENT];\n    referenced = s->update_last || s->update_golden == VP56_FRAME_CURRENT ||\n                 s->update_altref == VP56_FRAME_CURRENT;\n    skip_thresh = !referenced ? AVDISCARD_NONREF\n                              : !s->keyframe ? AVDISCARD_NONKEY\n                                             : AVDISCARD_ALL;\n    if (avctx->skip_frame >= skip_thresh) {\n        s->invisible = 1;\n        memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);\n        goto skip_decode;\n    }\n    s->deblock_filter = s->filter.level && avctx->skip_loop_filter < skip_thresh;\n    for (i = 0; i < 5; i++)\n        if (s->frames[i].tf.f->data[0] &&\n            &s->frames[i] != prev_frame &&\n            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN]   &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2])\n            vp8_release_frame(s, &s->frames[i]);\n    for (i = 0; i < 5; i++)\n        if (&s->frames[i] != prev_frame &&\n            &s->frames[i] != s->framep[VP56_FRAME_PREVIOUS] &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN]   &&\n            &s->frames[i] != s->framep[VP56_FRAME_GOLDEN2]) {\n            curframe = s->framep[VP56_FRAME_CURRENT] = &s->frames[i];\n            break;\n        }\n    if (i == 5) {\n        av_log(avctx, AV_LOG_FATAL, "Ran out of free frames!\\n");\n        abort();\n    }\n    if (curframe->tf.f->data[0])\n        vp8_release_frame(s, curframe);\n    if (!s->keyframe && (!s->framep[VP56_FRAME_PREVIOUS] ||\n                         !s->framep[VP56_FRAME_GOLDEN]   ||\n                         !s->framep[VP56_FRAME_GOLDEN2])) {\n        av_log(avctx, AV_LOG_WARNING,\n               "Discarding interframe without a prior keyframe!\\n");\n        ret = AVERROR_INVALIDDATA;\n        goto err;\n    }\n    curframe->tf.f->key_frame = s->keyframe;\n    curframe->tf.f->pict_type = s->keyframe ? AV_PICTURE_TYPE_I\n                                            : AV_PICTURE_TYPE_P;\n    if ((ret = vp8_alloc_frame(s, curframe, referenced))) {\n        av_log(avctx, AV_LOG_ERROR, "get_buffer() failed!\\n");\n        goto err;\n    }\n    if (s->update_altref != VP56_FRAME_NONE)\n        s->next_framep[VP56_FRAME_GOLDEN2] = s->framep[s->update_altref];\n    else\n        s->next_framep[VP56_FRAME_GOLDEN2] = s->framep[VP56_FRAME_GOLDEN2];\n    if (s->update_golden != VP56_FRAME_NONE)\n        s->next_framep[VP56_FRAME_GOLDEN] = s->framep[s->update_golden];\n    else\n        s->next_framep[VP56_FRAME_GOLDEN] = s->framep[VP56_FRAME_GOLDEN];\n    if (s->update_last)\n        s->next_framep[VP56_FRAME_PREVIOUS] = curframe;\n    else\n        s->next_framep[VP56_FRAME_PREVIOUS] = s->framep[VP56_FRAME_PREVIOUS];\n    s->next_framep[VP56_FRAME_CURRENT] = curframe;\n    ff_thread_finish_setup(avctx);\n    s->linesize   = curframe->tf.f->linesize[0];\n    s->uvlinesize = curframe->tf.f->linesize[1];\n    memset(s->top_nnz, 0, s->mb_width * sizeof(*s->top_nnz));\n    if (!s->mb_layout)\n        memset(s->macroblocks + s->mb_height * 2 - 1, 0,\n               (s->mb_width + 1) * sizeof(*s->macroblocks));\n    if (!s->mb_layout && s->keyframe)\n        memset(s->intra4x4_pred_mode_top, DC_PRED, s->mb_width * 4);\n    memset(s->ref_count, 0, sizeof(s->ref_count));\n    if (s->mb_layout == 1) {\n        if (prev_frame && s->segmentation.enabled &&\n            !s->segmentation.update_map)\n            ff_thread_await_progress(&prev_frame->tf, 1, 0);\n        vp8_decode_mv_mb_modes(avctx, curframe, prev_frame);\n    }\n    if (avctx->active_thread_type == FF_THREAD_FRAME)\n        num_jobs = 1;\n    else\n        num_jobs = FFMIN(s->num_coeff_partitions, avctx->thread_count);\n    s->num_jobs   = num_jobs;\n    s->curframe   = curframe;\n    s->prev_frame = prev_frame;\n    s->mv_min.y   = -MARGIN;\n    s->mv_max.y   = ((s->mb_height - 1) << 6) + MARGIN;\n    for (i = 0; i < MAX_THREADS; i++) {\n        s->thread_data[i].thread_mb_pos = 0;\n        s->thread_data[i].wait_mb_pos   = INT_MAX;\n    }\n    avctx->execute2(avctx, vp8_decode_mb_row_sliced,\n                    s->thread_data, NULL, num_jobs);\n    ff_thread_report_progress(&curframe->tf, INT_MAX, 0);\n    memcpy(&s->framep[0], &s->next_framep[0], sizeof(s->framep[0]) * 4);\nskip_decode:\n    if (!s->update_probabilities)\n        s->prob[0] = s->prob[1];\n    if (!s->invisible) {\n        if ((ret = av_frame_ref(data, curframe->tf.f)) < 0)\n            return ret;\n        *got_frame = 1;\n    }\n    return avpkt->size;\nerr:\n    memcpy(&s->next_framep[0], &s->framep[0], sizeof(s->framep[0]) * 4);\n    return ret;\n}']