Index: source/libvpx/vp9/common/vp9_loopfilter_filters.c |
=================================================================== |
--- source/libvpx/vp9/common/vp9_loopfilter_filters.c (revision 240950) |
+++ source/libvpx/vp9/common/vp9_loopfilter_filters.c (working copy) |
@@ -121,6 +121,17 @@ |
} |
} |
+void vp9_loop_filter_horizontal_edge_16_c(uint8_t *s, int p, |
+ const uint8_t *blimit0, |
+ const uint8_t *limit0, |
+ const uint8_t *thresh0, |
+ const uint8_t *blimit1, |
+ const uint8_t *limit1, |
+ const uint8_t *thresh1) { |
+ vp9_loop_filter_horizontal_edge_c(s, p, blimit0, limit0, thresh0, 1); |
+ vp9_loop_filter_horizontal_edge_c(s + 8, p, blimit1, limit1, thresh1, 1); |
+} |
+ |
void vp9_loop_filter_vertical_edge_c(uint8_t *s, int pitch, |
const uint8_t *blimit, |
const uint8_t *limit, |
@@ -141,6 +152,18 @@ |
} |
} |
+void vp9_loop_filter_vertical_edge_16_c(uint8_t *s, int pitch, |
+ const uint8_t *blimit0, |
+ const uint8_t *limit0, |
+ const uint8_t *thresh0, |
+ const uint8_t *blimit1, |
+ const uint8_t *limit1, |
+ const uint8_t *thresh1) { |
+ vp9_loop_filter_vertical_edge_c(s, pitch, blimit0, limit0, thresh0, 1); |
+ vp9_loop_filter_vertical_edge_c(s + 8 * pitch, pitch, blimit1, limit1, |
+ thresh1, 1); |
+} |
+ |
static INLINE void filter8(int8_t mask, uint8_t hev, uint8_t flat, |
uint8_t *op3, uint8_t *op2, |
uint8_t *op1, uint8_t *op0, |
@@ -185,6 +208,17 @@ |
} |
} |
+void vp9_mbloop_filter_horizontal_edge_16_c(uint8_t *s, int p, |
+ const uint8_t *blimit0, |
+ const uint8_t *limit0, |
+ const uint8_t *thresh0, |
+ const uint8_t *blimit1, |
+ const uint8_t *limit1, |
+ const uint8_t *thresh1) { |
+ vp9_mbloop_filter_horizontal_edge_c(s, p, blimit0, limit0, thresh0, 1); |
+ vp9_mbloop_filter_horizontal_edge_c(s + 8, p, blimit1, limit1, thresh1, 1); |
+} |
+ |
void vp9_mbloop_filter_vertical_edge_c(uint8_t *s, int pitch, |
const uint8_t *blimit, |
const uint8_t *limit, |
@@ -205,6 +239,18 @@ |
} |
} |
+void vp9_mbloop_filter_vertical_edge_16_c(uint8_t *s, int pitch, |
+ const uint8_t *blimit0, |
+ const uint8_t *limit0, |
+ const uint8_t *thresh0, |
+ const uint8_t *blimit1, |
+ const uint8_t *limit1, |
+ const uint8_t *thresh1) { |
+ vp9_mbloop_filter_vertical_edge_c(s, pitch, blimit0, limit0, thresh0, 1); |
+ vp9_mbloop_filter_vertical_edge_c(s + 8 * pitch, pitch, blimit1, limit1, |
+ thresh1, 1); |
+} |
+ |
static INLINE void filter16(int8_t mask, uint8_t hev, |
uint8_t flat, uint8_t flat2, |
uint8_t *op7, uint8_t *op6, |
@@ -285,13 +331,14 @@ |
} |
} |
-void vp9_mb_lpf_vertical_edge_w_c(uint8_t *s, int p, |
- const uint8_t *blimit, |
- const uint8_t *limit, |
- const uint8_t *thresh) { |
+static void mb_lpf_vertical_edge_w(uint8_t *s, int p, |
+ const uint8_t *blimit, |
+ const uint8_t *limit, |
+ const uint8_t *thresh, |
+ int count) { |
int i; |
- for (i = 0; i < 8; ++i) { |
+ for (i = 0; i < count; ++i) { |
const uint8_t p3 = s[-4], p2 = s[-3], p1 = s[-2], p0 = s[-1]; |
const uint8_t q0 = s[0], q1 = s[1], q2 = s[2], q3 = s[3]; |
const int8_t mask = filter_mask(*limit, *blimit, |
@@ -307,3 +354,17 @@ |
s += p; |
} |
} |
+ |
+void vp9_mb_lpf_vertical_edge_w_c(uint8_t *s, int p, |
+ const uint8_t *blimit, |
+ const uint8_t *limit, |
+ const uint8_t *thresh) { |
+ mb_lpf_vertical_edge_w(s, p, blimit, limit, thresh, 8); |
+} |
+ |
+void vp9_mb_lpf_vertical_edge_w_16_c(uint8_t *s, int p, |
+ const uint8_t *blimit, |
+ const uint8_t *limit, |
+ const uint8_t *thresh) { |
+ mb_lpf_vertical_edge_w(s, p, blimit, limit, thresh, 16); |
+} |