Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Guillaume Martres
aom-rav1e
Commits
15ce6bd6
Commit
15ce6bd6
authored
Oct 16, 2012
by
Scott LaVarnway
Browse files
Removed the loopfilter rtcd invoke macro code
Change-Id: I446b2ffcbe732ffb112dbd97a4799272d4c01a84
parent
9a196221
Changes
11
Hide whitespace changes
Inline
Side-by-side
vp8/common/arm/arm_systemdependent.c
View file @
15ce6bd6
...
...
@@ -49,17 +49,6 @@ void vp8_arch_arm_common_init(VP8_COMMON *ctx) {
// rtcd->idct.iwalsh1 = vp8_short_inv_walsh4x4_1_v6;
// rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_v6;
rtcd
->
loopfilter
.
normal_mb_v
=
vp8_loop_filter_mbv_armv6
;
rtcd
->
loopfilter
.
normal_b_v
=
vp8_loop_filter_bv_armv6
;
rtcd
->
loopfilter
.
normal_mb_h
=
vp8_loop_filter_mbh_armv6
;
rtcd
->
loopfilter
.
normal_b_h
=
vp8_loop_filter_bh_armv6
;
rtcd
->
loopfilter
.
simple_mb_v
=
vp8_loop_filter_simple_vertical_edge_armv6
;
rtcd
->
loopfilter
.
simple_b_v
=
vp8_loop_filter_bvs_armv6
;
rtcd
->
loopfilter
.
simple_mb_h
=
vp8_loop_filter_simple_horizontal_edge_armv6
;
rtcd
->
loopfilter
.
simple_b_h
=
vp8_loop_filter_bhs_armv6
;
rtcd
->
recon
.
copy16x16
=
vp8_copy_mem16x16_v6
;
rtcd
->
recon
.
copy8x8
=
vp8_copy_mem8x8_v6
;
rtcd
->
recon
.
copy8x4
=
vp8_copy_mem8x4_v6
;
...
...
@@ -86,15 +75,6 @@ void vp8_arch_arm_common_init(VP8_COMMON *ctx) {
// rtcd->idct.iwalsh1 = vp8_short_inv_walsh4x4_1_neon;
// rtcd->idct.iwalsh16 = vp8_short_inv_walsh4x4_neon;
rtcd
->
loopfilter
.
normal_mb_v
=
vp8_loop_filter_mbv_neon
;
rtcd
->
loopfilter
.
normal_b_v
=
vp8_loop_filter_bv_neon
;
rtcd
->
loopfilter
.
normal_mb_h
=
vp8_loop_filter_mbh_neon
;
rtcd
->
loopfilter
.
normal_b_h
=
vp8_loop_filter_bh_neon
;
rtcd
->
loopfilter
.
simple_mb_v
=
vp8_loop_filter_mbvs_neon
;
rtcd
->
loopfilter
.
simple_b_v
=
vp8_loop_filter_bvs_neon
;
rtcd
->
loopfilter
.
simple_mb_h
=
vp8_loop_filter_mbhs_neon
;
rtcd
->
loopfilter
.
simple_b_h
=
vp8_loop_filter_bhs_neon
;
rtcd
->
recon
.
copy16x16
=
vp8_copy_mem16x16_neon
;
rtcd
->
recon
.
copy8x8
=
vp8_copy_mem8x8_neon
;
rtcd
->
recon
.
copy8x4
=
vp8_copy_mem8x4_neon
;
...
...
vp8/common/arm/loopfilter_arm.h
View file @
15ce6bd6
...
...
@@ -24,32 +24,6 @@ extern prototype_simple_loopfilter(vp8_loop_filter_bhs_armv6);
extern
prototype_simple_loopfilter
(
vp8_loop_filter_simple_horizontal_edge_armv6
);
extern
prototype_simple_loopfilter
(
vp8_loop_filter_simple_vertical_edge_armv6
);
#if !CONFIG_RUNTIME_CPU_DETECT
#undef vp8_lf_normal_mb_v
#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_armv6
#undef vp8_lf_normal_b_v
#define vp8_lf_normal_b_v vp8_loop_filter_bv_armv6
#undef vp8_lf_normal_mb_h
#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_armv6
#undef vp8_lf_normal_b_h
#define vp8_lf_normal_b_h vp8_loop_filter_bh_armv6
#undef vp8_lf_simple_mb_v
#define vp8_lf_simple_mb_v vp8_loop_filter_simple_vertical_edge_armv6
#undef vp8_lf_simple_b_v
#define vp8_lf_simple_b_v vp8_loop_filter_bvs_armv6
#undef vp8_lf_simple_mb_h
#define vp8_lf_simple_mb_h vp8_loop_filter_simple_horizontal_edge_armv6
#undef vp8_lf_simple_b_h
#define vp8_lf_simple_b_h vp8_loop_filter_bhs_armv6
#endif
/* !CONFIG_RUNTIME_CPU_DETECT */
#endif
/* HAVE_ARMV6 */
#if HAVE_ARMV7
...
...
@@ -62,32 +36,6 @@ extern prototype_simple_loopfilter(vp8_loop_filter_bvs_neon);
extern
prototype_simple_loopfilter
(
vp8_loop_filter_mbhs_neon
);
extern
prototype_simple_loopfilter
(
vp8_loop_filter_bhs_neon
);
#if !CONFIG_RUNTIME_CPU_DETECT
#undef vp8_lf_normal_mb_v
#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_neon
#undef vp8_lf_normal_b_v
#define vp8_lf_normal_b_v vp8_loop_filter_bv_neon
#undef vp8_lf_normal_mb_h
#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_neon
#undef vp8_lf_normal_b_h
#define vp8_lf_normal_b_h vp8_loop_filter_bh_neon
#undef vp8_lf_simple_mb_v
#define vp8_lf_simple_mb_v vp8_loop_filter_mbvs_neon
#undef vp8_lf_simple_b_v
#define vp8_lf_simple_b_v vp8_loop_filter_bvs_neon
#undef vp8_lf_simple_mb_h
#define vp8_lf_simple_mb_h vp8_loop_filter_mbhs_neon
#undef vp8_lf_simple_b_h
#define vp8_lf_simple_b_h vp8_loop_filter_bhs_neon
#endif
/* !CONFIG_RUNTIME_CPU_DETECT */
#endif
/* HAVE_ARMV7 */
#endif
/* LOOPFILTER_ARM_H */
vp8/common/generic/systemdependent.c
View file @
15ce6bd6
...
...
@@ -64,15 +64,6 @@ void vp8_machine_specific_config(VP8_COMMON *ctx) {
rtcd
->
subpix
.
bilinear4x4
=
vp8_bilinear_predict4x4_c
;
rtcd
->
subpix
.
bilinear_avg4x4
=
vp8_bilinear_predict_avg4x4_c
;
rtcd
->
loopfilter
.
normal_mb_v
=
vp8_loop_filter_mbv_c
;
rtcd
->
loopfilter
.
normal_b_v
=
vp8_loop_filter_bv_c
;
rtcd
->
loopfilter
.
normal_mb_h
=
vp8_loop_filter_mbh_c
;
rtcd
->
loopfilter
.
normal_b_h
=
vp8_loop_filter_bh_c
;
rtcd
->
loopfilter
.
simple_mb_v
=
vp8_loop_filter_simple_vertical_edge_c
;
rtcd
->
loopfilter
.
simple_b_v
=
vp8_loop_filter_bvs_c
;
rtcd
->
loopfilter
.
simple_mb_h
=
vp8_loop_filter_simple_horizontal_edge_c
;
rtcd
->
loopfilter
.
simple_b_h
=
vp8_loop_filter_bhs_c
;
#if CONFIG_POSTPROC || (CONFIG_VP8_ENCODER && CONFIG_INTERNAL_STATS)
rtcd
->
postproc
.
down
=
vp8_mbpost_proc_down_c
;
rtcd
->
postproc
.
across
=
vp8_mbpost_proc_across_ip_c
;
...
...
vp8/common/loopfilter.c
View file @
15ce6bd6
...
...
@@ -16,102 +16,6 @@
#include
"vp8/common/seg_common.h"
typedef
unsigned
char
uc
;
prototype_loopfilter
(
vp8_loop_filter_horizontal_edge_c
);
prototype_loopfilter
(
vp8_loop_filter_vertical_edge_c
);
prototype_loopfilter
(
vp8_mbloop_filter_horizontal_edge_c
);
prototype_loopfilter
(
vp8_mbloop_filter_vertical_edge_c
);
prototype_simple_loopfilter
(
vp8_loop_filter_simple_horizontal_edge_c
);
prototype_simple_loopfilter
(
vp8_loop_filter_simple_vertical_edge_c
);
/* Horizontal MB filtering */
void
vp8_loop_filter_mbh_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
loop_filter_info
*
lfi
)
{
vp8_mbloop_filter_horizontal_edge_c
(
y_ptr
,
y_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
if
(
u_ptr
)
vp8_mbloop_filter_horizontal_edge_c
(
u_ptr
,
uv_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
if
(
v_ptr
)
vp8_mbloop_filter_horizontal_edge_c
(
v_ptr
,
uv_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
}
/* Vertical MB Filtering */
void
vp8_loop_filter_mbv_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
loop_filter_info
*
lfi
)
{
vp8_mbloop_filter_vertical_edge_c
(
y_ptr
,
y_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
if
(
u_ptr
)
vp8_mbloop_filter_vertical_edge_c
(
u_ptr
,
uv_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
if
(
v_ptr
)
vp8_mbloop_filter_vertical_edge_c
(
v_ptr
,
uv_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
}
/* Horizontal B Filtering */
void
vp8_loop_filter_bh_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
loop_filter_info
*
lfi
)
{
vp8_loop_filter_horizontal_edge_c
(
y_ptr
+
4
*
y_stride
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
vp8_loop_filter_horizontal_edge_c
(
y_ptr
+
8
*
y_stride
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
vp8_loop_filter_horizontal_edge_c
(
y_ptr
+
12
*
y_stride
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
if
(
u_ptr
)
vp8_loop_filter_horizontal_edge_c
(
u_ptr
+
4
*
uv_stride
,
uv_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
if
(
v_ptr
)
vp8_loop_filter_horizontal_edge_c
(
v_ptr
+
4
*
uv_stride
,
uv_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
}
void
vp8_loop_filter_bh8x8_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
loop_filter_info
*
lfi
)
{
vp8_mbloop_filter_horizontal_edge_c
(
y_ptr
+
8
*
y_stride
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
}
void
vp8_loop_filter_bhs_c
(
unsigned
char
*
y_ptr
,
int
y_stride
,
const
unsigned
char
*
blimit
)
{
vp8_loop_filter_simple_horizontal_edge_c
(
y_ptr
+
4
*
y_stride
,
y_stride
,
blimit
);
vp8_loop_filter_simple_horizontal_edge_c
(
y_ptr
+
8
*
y_stride
,
y_stride
,
blimit
);
vp8_loop_filter_simple_horizontal_edge_c
(
y_ptr
+
12
*
y_stride
,
y_stride
,
blimit
);
}
/* Vertical B Filtering */
void
vp8_loop_filter_bv_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
loop_filter_info
*
lfi
)
{
vp8_loop_filter_vertical_edge_c
(
y_ptr
+
4
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
vp8_loop_filter_vertical_edge_c
(
y_ptr
+
8
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
vp8_loop_filter_vertical_edge_c
(
y_ptr
+
12
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
if
(
u_ptr
)
vp8_loop_filter_vertical_edge_c
(
u_ptr
+
4
,
uv_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
if
(
v_ptr
)
vp8_loop_filter_vertical_edge_c
(
v_ptr
+
4
,
uv_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
1
);
}
void
vp8_loop_filter_bv8x8_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
loop_filter_info
*
lfi
)
{
vp8_mbloop_filter_vertical_edge_c
(
y_ptr
+
8
,
y_stride
,
lfi
->
blim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);
}
void
vp8_loop_filter_bvs_c
(
unsigned
char
*
y_ptr
,
int
y_stride
,
const
unsigned
char
*
blimit
)
{
vp8_loop_filter_simple_vertical_edge_c
(
y_ptr
+
4
,
y_stride
,
blimit
);
vp8_loop_filter_simple_vertical_edge_c
(
y_ptr
+
8
,
y_stride
,
blimit
);
vp8_loop_filter_simple_vertical_edge_c
(
y_ptr
+
12
,
y_stride
,
blimit
);
}
static
void
lf_init_lut
(
loop_filter_info_n
*
lfi
)
{
int
filt_lvl
;
...
...
@@ -281,7 +185,7 @@ void vp8_loop_filter_frame
)
{
YV12_BUFFER_CONFIG
*
post
=
cm
->
frame_to_show
;
loop_filter_info_n
*
lfi_n
=
&
cm
->
lf_info
;
loop_filter_info
lfi
;
struct
loop_filter_info
lfi
;
FRAME_TYPE
frame_type
=
cm
->
frame_type
;
...
...
@@ -332,16 +236,16 @@ void vp8_loop_filter_frame
mode_info_context
[
-
1
].
mbmi
.
mb_skip_coeff
)
#endif
)
vp8_loop_filter_mbv
_c
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
vp8_loop_filter_mbv
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
if
(
!
skip_lf
&&
tx_type
!=
TX_16X16
)
{
if
(
tx_type
==
TX_8X8
)
vp8_loop_filter_bv8x8
_c
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
vp8_loop_filter_bv8x8
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
else
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_v
)
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
vp8_
loop
_
filter
_bv
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
}
...
...
@@ -353,16 +257,16 @@ void vp8_loop_filter_frame
mode_info_context
[
-
cm
->
mode_info_stride
].
mbmi
.
mb_skip_coeff
)
#endif
)
vp8_loop_filter_mbh
_c
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
vp8_loop_filter_mbh
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
if
(
!
skip_lf
&&
tx_type
!=
TX_16X16
)
{
if
(
tx_type
==
TX_8X8
)
vp8_loop_filter_bh8x8
_c
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
vp8_loop_filter_bh8x8
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
else
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_h
)
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
vp8_
loop
_
filter
_bh
(
y_ptr
,
u_ptr
,
v_ptr
,
post
->
y_stride
,
post
->
uv_stride
,
&
lfi
);
}
}
else
{
// FIXME: Not 8x8 aware
...
...
@@ -373,12 +277,12 @@ void vp8_loop_filter_frame
mode_info_context
[
-
1
].
mbmi
.
mb_skip_coeff
)
#endif
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb
_v
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_mb
v
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b
_v
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_b
v
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
/* don't apply across umv border */
if
(
mb_row
>
0
...
...
@@ -388,12 +292,12 @@ void vp8_loop_filter_frame
mode_info_context
[
-
cm
->
mode_info_stride
].
mbmi
.
mb_skip_coeff
)
#endif
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb
_h
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_mb
h
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b
_h
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_b
h
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
}
}
...
...
@@ -425,7 +329,7 @@ void vp8_loop_filter_frame_yonly
int
mb_col
;
loop_filter_info_n
*
lfi_n
=
&
cm
->
lf_info
;
loop_filter_info
lfi
;
struct
loop_filter_info
lfi
;
int
filter_level
;
FRAME_TYPE
frame_type
=
cm
->
frame_type
;
...
...
@@ -467,49 +371,43 @@ void vp8_loop_filter_frame_yonly
lfi
.
hev_thr
=
lfi_n
->
hev_thr
[
hev_index
];
if
(
mb_col
>
0
)
vp8_loop_filter_mbv_c
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_mbv
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
if
(
!
skip_lf
&&
tx_type
!=
TX_16X16
)
{
if
(
tx_type
==
TX_8X8
)
vp8_loop_filter_bv8x8_c
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bv8x8
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
else
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_v
)
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bv
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
}
/* don't apply across umv border */
if
(
mb_row
>
0
)
vp8_loop_filter_mbh_c
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_mbh
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
if
(
!
skip_lf
&&
tx_type
!=
TX_16X16
)
{
if
(
tx_type
==
TX_8X8
)
vp8_loop_filter_bh8x8_c
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bh8x8
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
else
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_h
)
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bh
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
}
}
else
{
// FIXME: Not 8x8 aware
if
(
mb_col
>
0
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb
_v
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_mb
v
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b
_v
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_b
v
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
/* don't apply across umv border */
if
(
mb_row
>
0
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb
_h
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_mb
h
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b
_h
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_b
h
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
}
}
...
...
@@ -536,7 +434,7 @@ void vp8_loop_filter_frame_segment(VP8_COMMON *cm, MACROBLOCKD *xd,
int
mb_col
;
loop_filter_info_n
*
lfi_n
=
&
cm
->
lf_info
;
loop_filter_info
lfi
;
struct
loop_filter_info
lfi
;
int
filter_level
;
FRAME_TYPE
frame_type
=
cm
->
frame_type
;
...
...
@@ -589,41 +487,35 @@ void vp8_loop_filter_frame_segment(VP8_COMMON *cm, MACROBLOCKD *xd,
lfi
.
hev_thr
=
lfi_n
->
hev_thr
[
hev_index
];
if
(
mb_col
>
0
)
vp8_loop_filter_mbv
_c
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
vp8_loop_filter_mbv
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_v
)(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bv
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
/* don't apply across umv border */
if
(
mb_row
>
0
)
vp8_loop_filter_mbh
_c
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
vp8_loop_filter_mbh
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_h
)(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bh
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
}
else
{
if
(
mb_col
>
0
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb_v
)(
y_ptr
,
post
->
y_stride
,
vp8_loop_filter_simple_mbv
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b_v
)(
y_ptr
,
post
->
y_stride
,
vp8_loop_filter_simple_bv
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
/* don't apply across umv border */
if
(
mb_row
>
0
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb_h
)(
y_ptr
,
post
->
y_stride
,
vp8_loop_filter_simple_mbh
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b_h
)(
y_ptr
,
post
->
y_stride
,
vp8_loop_filter_simple_bh
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
}
}
...
...
@@ -656,7 +548,7 @@ void vp8_loop_filter_partial_frame
int
linestocopy
,
i
;
loop_filter_info_n
*
lfi_n
=
&
cm
->
lf_info
;
loop_filter_info
lfi
;
struct
loop_filter_info
lfi
;
int
filter_level
;
int
alt_flt_enabled
=
xd
->
segmentation_enabled
;
...
...
@@ -721,34 +613,30 @@ void vp8_loop_filter_partial_frame
lfi
.
hev_thr
=
lfi_n
->
hev_thr
[
hev_index
];
if
(
mb_col
>
0
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_mb_v
)
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_mbv
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_v
)
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bv
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_mb_h
)
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_mbh
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
normal_b_h
)
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
vp8_loop_filter_bh
(
y_ptr
,
0
,
0
,
post
->
y_stride
,
0
,
&
lfi
);
}
else
{
if
(
mb_col
>
0
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb
_v
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_mb
v
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b
_v
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_b
v
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_mb
_h
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_mb
h
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
mblim
[
filter_level
]);
if
(
!
skip_lf
)
LF_INVOKE
(
&
cm
->
rtcd
.
loopfilter
,
simple_b
_h
)
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
vp8_
loop
_
filter
_
simple_b
h
(
y_ptr
,
post
->
y_stride
,
lfi_n
->
blim
[
filter_level
]);
}
}
...
...
vp8/common/loopfilter.h
View file @
15ce6bd6
...
...
@@ -42,12 +42,12 @@ typedef struct {
unsigned
char
mode_lf_lut
[
MB_MODE_COUNT
];
}
loop_filter_info_n
;
typedef
struct
{
struct
loop_filter_info
{
const
unsigned
char
*
mblim
;
const
unsigned
char
*
blim
;
const
unsigned
char
*
lim
;
const
unsigned
char
*
hev_thr
;
}
loop_filter_info
;
};
#define prototype_loopfilter(sym) \
...
...
@@ -56,7 +56,7 @@ typedef struct {
#define prototype_loopfilter_block(sym) \
void sym(unsigned char *y, unsigned char *u, unsigned char *v, \
int ystride, int uv_stride, loop_filter_info *lfi)
int ystride, int uv_stride,
struct
loop_filter_info *lfi)
#define prototype_simple_loopfilter(sym) \
void sym(unsigned char *y, int ystride, const unsigned char *blimit)
...
...
@@ -69,66 +69,6 @@ typedef struct {
#include
"arm/loopfilter_arm.h"
#endif
#ifndef vp8_lf_normal_mb_v
#define vp8_lf_normal_mb_v vp8_loop_filter_mbv_c
#endif
extern
prototype_loopfilter_block
(
vp8_lf_normal_mb_v
);
#ifndef vp8_lf_normal_b_v
#define vp8_lf_normal_b_v vp8_loop_filter_bv_c
#endif
extern
prototype_loopfilter_block
(
vp8_lf_normal_b_v
);
#ifndef vp8_lf_normal_mb_h
#define vp8_lf_normal_mb_h vp8_loop_filter_mbh_c
#endif
extern
prototype_loopfilter_block
(
vp8_lf_normal_mb_h
);
#ifndef vp8_lf_normal_b_h
#define vp8_lf_normal_b_h vp8_loop_filter_bh_c
#endif
extern
prototype_loopfilter_block
(
vp8_lf_normal_b_h
);
#ifndef vp8_lf_simple_mb_v
#define vp8_lf_simple_mb_v vp8_loop_filter_simple_vertical_edge_c
#endif
extern
prototype_simple_loopfilter
(
vp8_lf_simple_mb_v
);
#ifndef vp8_lf_simple_b_v
#define vp8_lf_simple_b_v vp8_loop_filter_bvs_c
#endif
extern
prototype_simple_loopfilter
(
vp8_lf_simple_b_v
);
#ifndef vp8_lf_simple_mb_h
#define vp8_lf_simple_mb_h vp8_loop_filter_simple_horizontal_edge_c
#endif
extern
prototype_simple_loopfilter
(
vp8_lf_simple_mb_h
);
#ifndef vp8_lf_simple_b_h
#define vp8_lf_simple_b_h vp8_loop_filter_bhs_c
#endif
extern
prototype_simple_loopfilter
(
vp8_lf_simple_b_h
);
typedef
prototype_loopfilter_block
((
*
vp8_lf_block_fn_t
));
typedef
prototype_simple_loopfilter
((
*
vp8_slf_block_fn_t
));
typedef
struct
{
vp8_lf_block_fn_t
normal_mb_v
;
vp8_lf_block_fn_t
normal_b_v
;
vp8_lf_block_fn_t
normal_mb_h
;
vp8_lf_block_fn_t
normal_b_h
;
vp8_slf_block_fn_t
simple_mb_v
;
vp8_slf_block_fn_t
simple_b_v
;
vp8_slf_block_fn_t
simple_mb_h
;
vp8_slf_block_fn_t
simple_b_h
;
}
vp8_loopfilter_rtcd_vtable_t
;
#if CONFIG_RUNTIME_CPU_DETECT
#define LF_INVOKE(ctx,fn) (ctx)->fn
#else
#define LF_INVOKE(ctx,fn) vp8_lf_##fn
#endif
typedef
void
loop_filter_uvfunction
(
unsigned
char
*
u
,
/* source pointer */
...
...
vp8/common/loopfilter_filters.c
View file @
15ce6bd6
...
...
@@ -379,3 +379,87 @@ void vp8_loop_filter_simple_vertical_edge_c
}
while
(
++
i
<
16
);
}
/* Vertical MB Filtering */
void
vp8_loop_filter_mbv_c
(
unsigned
char
*
y_ptr
,
unsigned
char
*
u_ptr
,
unsigned
char
*
v_ptr
,
int
y_stride
,
int
uv_stride
,
struct
loop_filter_info
*
lfi
)
{
vp8_mbloop_filter_vertical_edge_c
(
y_ptr
,
y_stride
,
lfi
->
mblim
,
lfi
->
lim
,
lfi
->
hev_thr
,
2
);