diff options
-rw-r--r-- | libavcodec/vp9.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c index b986c1e..c804686 100644 --- a/libavcodec/vp9.c +++ b/libavcodec/vp9.c @@ -856,7 +856,7 @@ static int decode_frame_header(AVCodecContext *ctx, } } - if (s->keyframe || s->errorres || s->intraonly) { + if (s->keyframe || s->errorres || (s->intraonly && s->resetctx == 3)) { s->prob_ctx[0].p = s->prob_ctx[1].p = s->prob_ctx[2].p = s->prob_ctx[3].p = vp9_default_probs; memcpy(s->prob_ctx[0].coef, vp9_default_coef_probs, @@ -867,6 +867,10 @@ static int decode_frame_header(AVCodecContext *ctx, sizeof(vp9_default_coef_probs)); memcpy(s->prob_ctx[3].coef, vp9_default_coef_probs, sizeof(vp9_default_coef_probs)); + } else if (s->intraonly && s->resetctx == 2) { + s->prob_ctx[c].p = vp9_default_probs; + memcpy(s->prob_ctx[c].coef, vp9_default_coef_probs, + sizeof(vp9_default_coef_probs)); } // next 16 bits is size of the rest of the header (arith-coded) |