| 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);
|
| +}
|
|
|