| Index: third_party/ffmpeg/patches/to_upstream/50_vp8_fix_frame_size_changes.patch | 
| =================================================================== | 
| --- third_party/ffmpeg/patches/to_upstream/50_vp8_fix_frame_size_changes.patch	(revision 0) | 
| +++ third_party/ffmpeg/patches/to_upstream/50_vp8_fix_frame_size_changes.patch	(revision 0) | 
| @@ -0,0 +1,50 @@ | 
| +diff -wurp -N orig/libavcodec/pthread.c patched-ffmpeg/libavcodec/pthread.c | 
| +--- orig/libavcodec/pthread.c	2011-11-09 10:48:42.944816193 -0800 | 
| ++++ patched-ffmpeg/libavcodec/pthread.c	2011-11-09 10:48:53.014862587 -0800 | 
| +@@ -485,6 +485,7 @@ static int submit_packet(PerThreadContex | 
| +     } | 
| + | 
| +     fctx->prev_thread = p; | 
| ++    fctx->next_decoding++; | 
| + | 
| +     return 0; | 
| + } | 
| +@@ -507,8 +508,6 @@ int ff_thread_decode_frame(AVCodecContex | 
| +     err = submit_packet(p, avpkt); | 
| +     if (err) return err; | 
| + | 
| +-    fctx->next_decoding++; | 
| +- | 
| +     /* | 
| +      * If we're still receiving the initial packets, don't return a frame. | 
| +      */ | 
| +diff -wurp -N orig/libavcodec/vp8.c patched-ffmpeg/libavcodec/vp8.c | 
| +--- orig/libavcodec/vp8.c	2011-11-09 10:48:43.154817161 -0800 | 
| ++++ patched-ffmpeg/libavcodec/vp8.c	2011-11-09 10:48:53.014862587 -0800 | 
| +@@ -50,8 +50,7 @@ static int vp8_alloc_frame(VP8Context *s | 
| +     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 @@ static int vp8_decode_frame(AVCodecConte | 
| +     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; | 
| + | 
|  |