Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Xiph.Org
aom-rav1e
Commits
888d0c82
Commit
888d0c82
authored
Apr 04, 2013
by
Yaowu Xu
Browse files
make lf_deltas dependent on filter_lvl
Change-Id: Idb0d11e3ae9afabe667a9f327bf4d3aa84f63649
parent
0d310de9
Changes
2
Hide whitespace changes
Inline
Side-by-side
vp9/common/vp9_entropymode.c
View file @
888d0c82
...
...
@@ -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
)
{
...
...
vp9/common/vp9_loopfilter.c
View file @
888d0c82
...
...
@@ -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
)
;
}
}
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment