summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavcodec/vp9.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libavcodec/vp9.c b/libavcodec/vp9.c
index b986c1e10f..c80468601c 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)