diff options
author | Paul Wilkins <paulwilkins@google.com> | 2011-11-02 13:30:10 +0000 |
---|---|---|
committer | Paul Wilkins <paulwilkins@google.com> | 2011-11-02 13:31:54 +0000 |
commit | 87ff8620b27a70c8411bf0941eb846e358e03ca1 (patch) | |
tree | c80b77f7b2fbbb691ba2b182e8601402301453d7 /vp8/encoder/onyx_if.c | |
parent | 2b450a460fa847c7460f51ab38ecb9ab10f18218 (diff) | |
download | libvpx-87ff8620b27a70c8411bf0941eb846e358e03ca1.tar libvpx-87ff8620b27a70c8411bf0941eb846e358e03ca1.tar.gz libvpx-87ff8620b27a70c8411bf0941eb846e358e03ca1.tar.bz2 libvpx-87ff8620b27a70c8411bf0941eb846e358e03ca1.zip |
Segmentation: Reference frames
Modify reference frame segmentation so that ONE or MORE
reference frames may be marked as a available for a given
segment.
Fixed bugs relating to segment coding of INTRA and some
INTER modes at the segment level.
Modified Q boost for static areas based on ambient average Q.
Strong results now on clips with significant static areas.
(some data points in derf set as high as 9% and some static &
slide show type content in YT set > 20%)
Change-Id: Ia79f912efa84b977f35a23683ae3643251e24f0c
Diffstat (limited to 'vp8/encoder/onyx_if.c')
-rw-r--r-- | vp8/encoder/onyx_if.c | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/vp8/encoder/onyx_if.c b/vp8/encoder/onyx_if.c index 35b45673c..ee3a59eeb 100644 --- a/vp8/encoder/onyx_if.c +++ b/vp8/encoder/onyx_if.c @@ -531,7 +531,8 @@ static void init_seg_features(VP8_COMP *cpi) xd->update_mb_segmentation_map = 1; xd->update_mb_segmentation_data = 1; - xd->segment_feature_data[1][SEG_LVL_ALT_Q] = -3; + xd->segment_feature_data[1][SEG_LVL_ALT_Q] = + -(2+(cpi->ni_av_qi >> 3)); xd->segment_feature_data[1][SEG_LVL_ALT_LF] = -2; enable_segfeature(xd, 1, SEG_LVL_ALT_Q); @@ -563,8 +564,7 @@ static void init_seg_features(VP8_COMP *cpi) if ( high_q ) { - xd->segment_feature_data[1] - [SEG_LVL_REF_FRAME] = ALTREF_FRAME; + set_segref(xd, 1, ALTREF_FRAME); xd->segment_feature_data[1][SEG_LVL_MODE] = ZEROMV; xd->segment_feature_data[1][SEG_LVL_EOB] = 0; @@ -598,10 +598,12 @@ static void init_seg_features(VP8_COMP *cpi) enable_segfeature(xd, 0, SEG_LVL_REF_FRAME); enable_segfeature(xd, 0, SEG_LVL_MODE); - // All mbs should use ALTREF_FRAME, ZEROMV - xd->segment_feature_data[0][SEG_LVL_REF_FRAME] = ALTREF_FRAME; + // All mbs should use ALTREF_FRAME, ZEROMV exclusively + clear_segref(xd, 0); + set_segref(xd, 0, ALTREF_FRAME); + clear_segref(xd, 1); + set_segref(xd, 1, ALTREF_FRAME); xd->segment_feature_data[0][SEG_LVL_MODE] = ZEROMV; - xd->segment_feature_data[1][SEG_LVL_REF_FRAME] = ALTREF_FRAME; xd->segment_feature_data[1][SEG_LVL_MODE] = ZEROMV; // Skip all MBs if high Q |