diff options
author | Yaowu Xu <yaowu@google.com> | 2013-04-17 14:51:55 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@gerrit.golo.chromium.org> | 2013-04-17 14:51:55 -0700 |
commit | c8606a241f852f376b2be56b5b38058a09f1e7e5 (patch) | |
tree | 4416c5d92e8bffa4b5fad553e1055b9e9accfc2a /vp9 | |
parent | 3f2b254c38030d86dd6c4bda6a688397aa2b804f (diff) | |
parent | 888d0c82da0fd634aa8a03d6201540f343506d45 (diff) | |
download | libvpx-c8606a241f852f376b2be56b5b38058a09f1e7e5.tar libvpx-c8606a241f852f376b2be56b5b38058a09f1e7e5.tar.gz libvpx-c8606a241f852f376b2be56b5b38058a09f1e7e5.tar.bz2 libvpx-c8606a241f852f376b2be56b5b38058a09f1e7e5.zip |
Merge "make lf_deltas dependent on filter_lvl" into experimental
Diffstat (limited to 'vp9')
-rw-r--r-- | vp9/common/vp9_entropymode.c | 14 | ||||
-rw-r--r-- | vp9/common/vp9_loopfilter.c | 27 |
2 files changed, 22 insertions, 19 deletions
diff --git a/vp9/common/vp9_entropymode.c b/vp9/common/vp9_entropymode.c index f4182443a..865034913 100644 --- a/vp9/common/vp9_entropymode.c +++ b/vp9/common/vp9_entropymode.c @@ -671,15 +671,15 @@ static void set_default_lf_deltas(MACROBLOCKD *xd) { xd->mode_ref_lf_delta_enabled = 1; xd->mode_ref_lf_delta_update = 1; - xd->ref_lf_deltas[INTRA_FRAME] = 2; + xd->ref_lf_deltas[INTRA_FRAME] = 1; xd->ref_lf_deltas[LAST_FRAME] = 0; - xd->ref_lf_deltas[GOLDEN_FRAME] = -2; - xd->ref_lf_deltas[ALTREF_FRAME] = -2; + xd->ref_lf_deltas[GOLDEN_FRAME] = -1; + xd->ref_lf_deltas[ALTREF_FRAME] = -1; - xd->mode_lf_deltas[0] = 4; // I4X4_PRED - xd->mode_lf_deltas[1] = -2; // Zero - xd->mode_lf_deltas[2] = 2; // New mv - xd->mode_lf_deltas[3] = 4; // Split mv + xd->mode_lf_deltas[0] = 2; // I4X4_PRED + xd->mode_lf_deltas[1] = -1; // Zero + xd->mode_lf_deltas[2] = 1; // New mv + xd->mode_lf_deltas[3] = 2; // Split mv } void vp9_setup_past_independence(VP9_COMMON *cm, MACROBLOCKD *xd) { diff --git a/vp9/common/vp9_loopfilter.c b/vp9/common/vp9_loopfilter.c index a57f766db..4943e42af 100644 --- a/vp9/common/vp9_loopfilter.c +++ b/vp9/common/vp9_loopfilter.c @@ -83,9 +83,13 @@ void vp9_loop_filter_init(VP9_COMMON *cm) { void vp9_loop_filter_frame_init(VP9_COMMON *cm, MACROBLOCKD *xd, int default_filt_lvl) { - int seg, /* segment number */ - ref, /* index in ref_lf_deltas */ - mode; /* index in mode_lf_deltas */ + int seg, // segment number + ref, // index in ref_lf_deltas + mode; // index in mode_lf_deltas + // n_shift is the a multiplier for lf_deltas + // the multiplier is 1 for when filter_lvl is between 0 and 31; + // 2 when filter_lvl is between 32 and 63 + int n_shift = default_filt_lvl >> 5; loop_filter_info_n *lfi = &cm->lf_info; @@ -128,30 +132,29 @@ void vp9_loop_filter_frame_init(VP9_COMMON *cm, ref = INTRA_FRAME; /* Apply delta for reference frame */ - lvl_ref += xd->ref_lf_deltas[ref]; + lvl_ref += xd->ref_lf_deltas[ref] << n_shift; /* Apply delta for Intra modes */ mode = 0; /* I4X4_PRED */ /* Only the split mode I4X4_PRED has a further special case */ - lvl_mode = clamp(lvl_ref + xd->mode_lf_deltas[mode], 0, 63); - - lfi->lvl[seg][ref][mode] = lvl_mode; + lvl_mode = lvl_ref + (xd->mode_lf_deltas[mode] << n_shift); + lfi->lvl[seg][ref][mode] = clamp(lvl_mode, 0, 63); mode = 1; /* all the rest of Intra modes */ - lvl_mode = clamp(lvl_ref, 0, 63); - lfi->lvl[seg][ref][mode] = lvl_mode; + lvl_mode = lvl_ref; + lfi->lvl[seg][ref][mode] = clamp(lvl_mode, 0, 63); /* LAST, GOLDEN, ALT */ for (ref = 1; ref < MAX_REF_FRAMES; ref++) { int lvl_ref = lvl_seg; /* Apply delta for reference frame */ - lvl_ref += xd->ref_lf_deltas[ref]; + lvl_ref += xd->ref_lf_deltas[ref] << n_shift; /* Apply delta for Inter modes */ for (mode = 1; mode < 4; mode++) { - lvl_mode = clamp(lvl_ref + xd->mode_lf_deltas[mode], 0, 63); - lfi->lvl[seg][ref][mode] = lvl_mode; + lvl_mode = lvl_ref + (xd->mode_lf_deltas[mode] << n_shift); + lfi->lvl[seg][ref][mode] = clamp(lvl_mode, 0, 63); } } } |