[FFmpeg-cvslog] vp9: fix segmentation map retention if segmentation is turned off.

Ronald S. Bultje git at videolan.org
Fri Sep 4 16:07:46 CEST 2015


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Wed Sep  2 12:21:12 2015 -0400| [eaff36c973af2807606b5277343fc9e237add24f] | committer: Ronald S. Bultje

vp9: fix segmentation map retention if segmentation is turned off.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eaff36c973af2807606b5277343fc9e237add24f
---

 libavcodec/vp9.c |    6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
index c804686..3eff1f1 100644
--- a/libavcodec/vp9.c
+++ b/libavcodec/vp9.c
@@ -3997,8 +3997,9 @@ static int vp9_decode_frame(AVCodecContext *ctx, void *frame,
     int size = pkt->size;
     VP9Context *s = ctx->priv_data;
     int res, tile_row, tile_col, i, ref, row, col;
-    int retain_segmap_ref = s->segmentation.enabled && !s->segmentation.update_map
-                            && s->frames[REF_FRAME_SEGMAP].segmentation_map;
+    int retain_segmap_ref = s->frames[REF_FRAME_SEGMAP].segmentation_map &&
+                            !(s->segmentation.enabled &&
+                              (s->segmentation.update_map || s->keyframe || s->intraonly));
     ptrdiff_t yoff, uvoff, ls_y, ls_uv;
     AVFrame *f;
     int bytesperpixel;
@@ -4330,6 +4331,7 @@ static int vp9_decode_update_thread_context(AVCodecContext *dst, const AVCodecCo
 
     s->invisible = ssrc->invisible;
     s->keyframe = ssrc->keyframe;
+    s->intraonly = ssrc->intraonly;
     s->ss_v = ssrc->ss_v;
     s->ss_h = ssrc->ss_h;
     s->segmentation.enabled = ssrc->segmentation.enabled;



More information about the ffmpeg-cvslog mailing list