void vp9_loop_filter_update_sharpness(loop_filter_info_n *lfi,
int sharpness_lvl);
-extern void vp9_lpf_mbv_w(unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr, int y_stride, int uv_stride,
- struct loop_filter_info *lfi);
-extern void vp9_lpf_mbh_w(unsigned char *y_ptr, unsigned char *u_ptr,
- unsigned char *v_ptr, int y_stride, int uv_stride,
- struct loop_filter_info *lfi);
+void vp9_mb_lpf_horizontal_edge_w(unsigned char *s, int p,
+ const unsigned char *blimit,
+ const unsigned char *limit,
+ const unsigned char *thresh,
+ int count);
+
+void vp9_mb_lpf_vertical_edge_w(unsigned char *s, int p,
+ const unsigned char *blimit,
+ const unsigned char *limit,
+ const unsigned char *thresh,
+ int count);
#endif // VP9_COMMON_VP9_LOOPFILTER_H_
vp9_loop_filter_simple_bh_mmx=vp9_loop_filter_bhs_mmx
vp9_loop_filter_simple_bh_sse2=vp9_loop_filter_bhs_sse2
+if [ "$CONFIG_WIDERLPF" = "yes" ]; then
prototype void vp9_lpf_mbh_w "unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi"
-specialize vp9_lpf_mbh_w
+specialize vp9_lpf_mbh_w sse2
prototype void vp9_lpf_mbv_w "unsigned char *y_ptr, unsigned char *u_ptr, unsigned char *v_ptr, int y_stride, int uv_stride, struct loop_filter_info *lfi"
-specialize vp9_lpf_mbv_w
+specialize vp9_lpf_mbv_w sse2
+fi
+
#
# post proc
#
lfi->lim, lfi->hev_thr, v_ptr);
}
+#if CONFIG_WIDERLPF
+void vp9_lpf_mbh_w_sse2(unsigned char *y_ptr, unsigned char *u_ptr,
+ unsigned char *v_ptr, int y_stride, int uv_stride,
+ struct loop_filter_info *lfi) {
+ vp9_mb_lpf_horizontal_edge_w(y_ptr, y_stride,
+ lfi->mblim, lfi->lim, lfi->hev_thr, 2);
+
+ /* u,v */
+ if (u_ptr)
+ vp9_mbloop_filter_horizontal_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim,
+ lfi->lim, lfi->hev_thr, v_ptr);
+}
+#endif
+
void vp9_loop_filter_bh8x8_sse2(unsigned char *y_ptr, unsigned char *u_ptr,
unsigned char *v_ptr, int y_stride, int uv_stride,
struct loop_filter_info *lfi) {
lfi->lim, lfi->hev_thr, v_ptr);
}
+#if CONFIG_WIDERLPF
+void vp9_lpf_mbv_w_sse2(unsigned char *y_ptr, unsigned char *u_ptr,
+ unsigned char *v_ptr, int y_stride, int uv_stride,
+ struct loop_filter_info *lfi) {
+ vp9_mb_lpf_vertical_edge_w(y_ptr, y_stride,
+ lfi->mblim, lfi->lim, lfi->hev_thr, 2);
+
+ /* u,v */
+ if (u_ptr)
+ vp9_mbloop_filter_vertical_edge_uv_sse2(u_ptr, uv_stride, lfi->mblim,
+ lfi->lim, lfi->hev_thr, v_ptr);
+}
+#endif
+
void vp9_loop_filter_bv8x8_sse2(unsigned char *y_ptr, unsigned char *u_ptr,
unsigned char *v_ptr, int y_stride, int uv_stride,
struct loop_filter_info *lfi) {