Index: third_party/ffmpeg/source/patched-ffmpeg/libavcodec/vp8.c |
=================================================================== |
--- third_party/ffmpeg/source/patched-ffmpeg/libavcodec/vp8.c (revision 109270) |
+++ third_party/ffmpeg/source/patched-ffmpeg/libavcodec/vp8.c (working copy) |
@@ -50,8 +50,7 @@ |
int ret; |
if ((ret = ff_thread_get_buffer(s->avctx, f)) < 0) |
return ret; |
- if (s->num_maps_to_be_freed) { |
- assert(!s->maps_are_invalid); |
+ if (s->num_maps_to_be_freed && !s->maps_are_invalid) { |
f->ref_index[0] = s->segmentation_maps[--s->num_maps_to_be_freed]; |
} else if (!(f->ref_index[0] = av_mallocz(s->mb_width * s->mb_height))) { |
ff_thread_release_buffer(s->avctx, f); |
@@ -1565,13 +1564,15 @@ |
VP8Context *s = avctx->priv_data; |
int ret, mb_x, mb_y, i, y, referenced; |
enum AVDiscard skip_thresh; |
- AVFrame *av_uninit(curframe), *prev_frame = s->framep[VP56_FRAME_CURRENT]; |
+ AVFrame *av_uninit(curframe), *prev_frame; |
release_queued_segmaps(s, 0); |
if ((ret = decode_frame_header(s, avpkt->data, avpkt->size)) < 0) |
return ret; |
+ prev_frame = s->framep[VP56_FRAME_CURRENT]; |
+ |
referenced = s->update_last || s->update_golden == VP56_FRAME_CURRENT |
|| s->update_altref == VP56_FRAME_CURRENT; |