diff options
author | Yunqing Wang <yunqingwang@google.com> | 2019-07-11 15:07:35 +0000 |
---|---|---|
committer | Gerrit Code Review <noreply-gerritcodereview@google.com> | 2019-07-11 15:07:35 +0000 |
commit | 5372f1e41e8f32b34e34bf2ef012a1d37542abad (patch) | |
tree | bec3275ffae1c60bcc9e05037b0cb10132fee57b /vp9/encoder | |
parent | 1c875f11f2efacf13ba4a00cdb98642379feaac8 (diff) | |
parent | affd9921e405063ed7815f412b15e634c8c9cfca (diff) | |
download | libvpx-5372f1e41e8f32b34e34bf2ef012a1d37542abad.tar libvpx-5372f1e41e8f32b34e34bf2ef012a1d37542abad.tar.gz libvpx-5372f1e41e8f32b34e34bf2ef012a1d37542abad.tar.bz2 libvpx-5372f1e41e8f32b34e34bf2ef012a1d37542abad.zip |
Merge "Set up frame contexts based on frame type"
Diffstat (limited to 'vp9/encoder')
-rw-r--r-- | vp9/encoder/vp9_encoder.c | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/vp9/encoder/vp9_encoder.c b/vp9/encoder/vp9_encoder.c index ec7baf0a7..34d3d8725 100644 --- a/vp9/encoder/vp9_encoder.c +++ b/vp9/encoder/vp9_encoder.c @@ -814,7 +814,17 @@ static void setup_frame(VP9_COMP *cpi) { if (frame_is_intra_only(cm) || cm->error_resilient_mode) { vp9_setup_past_independence(cm); } else { - if (!cpi->use_svc) cm->frame_context_idx = cpi->refresh_alt_ref_frame; + if (!cpi->use_svc) { + const int boost_frame = + !cpi->rc.is_src_frame_alt_ref && + (cpi->refresh_golden_frame || cpi->refresh_alt_ref_frame); + if (boost_frame) + cm->frame_context_idx = 1; + else if (cpi->rc.is_src_frame_alt_ref) + cm->frame_context_idx = 2; + else + cm->frame_context_idx = 3; + } } // TODO(jingning): Overwrite the frame_context_idx index in multi-layer ARF |