diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-01-04 06:15:01 +0300 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-01-05 03:45:49 +0300 |
commit | 0f931b29f7e969a3c6159cb7173226e806f26f39 (patch) | |
tree | b20f19d7697738fe415025c17afce7c926af07ec /libavcodec/snow_dwt.c | |
parent | 9bff052b51f27f6cce04e8d7d8b405c710d7ad67 (diff) |
Factorize avpriv_mirror() out
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/snow_dwt.c')
-rw-r--r-- | libavcodec/snow_dwt.c | 70 |
1 files changed, 30 insertions, 40 deletions
diff --git a/libavcodec/snow_dwt.c b/libavcodec/snow_dwt.c index 986a6b904c..ecba0ea9da 100644 --- a/libavcodec/snow_dwt.c +++ b/libavcodec/snow_dwt.c @@ -112,16 +112,6 @@ void ff_slice_buffer_destroy(slice_buffer *buf) av_freep(&buf->line); } -static inline int mirror(int v, int m) -{ - while ((unsigned)v > (unsigned)m) { - v = -v; - if (v < 0) - v += 2 * m; - } - return v; -} - static av_always_inline void lift(DWTELEM *dst, DWTELEM *src, DWTELEM *ref, int dst_step, int src_step, int ref_step, int width, int mul, int add, int shift, @@ -223,12 +213,12 @@ static void spatial_decompose53i(DWTELEM *buffer, DWTELEM *temp, int width, int height, int stride) { int y; - DWTELEM *b0 = buffer + mirror(-2 - 1, height - 1) * stride; - DWTELEM *b1 = buffer + mirror(-2, height - 1) * stride; + DWTELEM *b0 = buffer + avpriv_mirror(-2 - 1, height - 1) * stride; + DWTELEM *b1 = buffer + avpriv_mirror(-2, height - 1) * stride; for (y = -2; y < height; y += 2) { - DWTELEM *b2 = buffer + mirror(y + 1, height - 1) * stride; - DWTELEM *b3 = buffer + mirror(y + 2, height - 1) * stride; + DWTELEM *b2 = buffer + avpriv_mirror(y + 1, height - 1) * stride; + DWTELEM *b3 = buffer + avpriv_mirror(y + 2, height - 1) * stride; if (y + 1 < (unsigned)height) horizontal_decompose53i(b2, temp, width); @@ -296,14 +286,14 @@ static void spatial_decompose97i(DWTELEM *buffer, DWTELEM *temp, int width, int height, int stride) { int y; - DWTELEM *b0 = buffer + mirror(-4 - 1, height - 1) * stride; - DWTELEM *b1 = buffer + mirror(-4, height - 1) * stride; - DWTELEM *b2 = buffer + mirror(-4 + 1, height - 1) * stride; - DWTELEM *b3 = buffer + mirror(-4 + 2, height - 1) * stride; + DWTELEM *b0 = buffer + avpriv_mirror(-4 - 1, height - 1) * stride; + DWTELEM *b1 = buffer + avpriv_mirror(-4, height - 1) * stride; + DWTELEM *b2 = buffer + avpriv_mirror(-4 + 1, height - 1) * stride; + DWTELEM *b3 = buffer + avpriv_mirror(-4 + 2, height - 1) * stride; for (y = -4; y < height; y += 2) { - DWTELEM *b4 = buffer + mirror(y + 3, height - 1) * stride; - DWTELEM *b5 = buffer + mirror(y + 4, height - 1) * stride; + DWTELEM *b4 = buffer + avpriv_mirror(y + 3, height - 1) * stride; + DWTELEM *b5 = buffer + avpriv_mirror(y + 4, height - 1) * stride; if (y + 3 < (unsigned)height) horizontal_decompose97i(b4, temp, width); @@ -394,16 +384,16 @@ static void spatial_compose53i_buffered_init(DWTCompose *cs, slice_buffer *sb, int height, int stride_line) { cs->b0 = slice_buffer_get_line(sb, - mirror(-1 - 1, height - 1) * stride_line); - cs->b1 = slice_buffer_get_line(sb, mirror(-1, height - 1) * stride_line); + avpriv_mirror(-1 - 1, height - 1) * stride_line); + cs->b1 = slice_buffer_get_line(sb, avpriv_mirror(-1, height - 1) * stride_line); cs->y = -1; } static void spatial_compose53i_init(DWTCompose *cs, IDWTELEM *buffer, int height, int stride) { - cs->b0 = buffer + mirror(-1 - 1, height - 1) * stride; - cs->b1 = buffer + mirror(-1, height - 1) * stride; + cs->b0 = buffer + avpriv_mirror(-1 - 1, height - 1) * stride; + cs->b1 = buffer + avpriv_mirror(-1, height - 1) * stride; cs->y = -1; } @@ -417,10 +407,10 @@ static void spatial_compose53i_dy_buffered(DWTCompose *cs, slice_buffer *sb, IDWTELEM *b0 = cs->b0; IDWTELEM *b1 = cs->b1; IDWTELEM *b2 = slice_buffer_get_line(sb, - mirror(y + 1, height - 1) * + avpriv_mirror(y + 1, height - 1) * stride_line); IDWTELEM *b3 = slice_buffer_get_line(sb, - mirror(y + 2, height - 1) * + avpriv_mirror(y + 2, height - 1) * stride_line); if (y + 1 < (unsigned)height && y < (unsigned)height) { @@ -454,8 +444,8 @@ static void spatial_compose53i_dy(DWTCompose *cs, IDWTELEM *buffer, int y = cs->y; IDWTELEM *b0 = cs->b0; IDWTELEM *b1 = cs->b1; - IDWTELEM *b2 = buffer + mirror(y + 1, height - 1) * stride; - IDWTELEM *b3 = buffer + mirror(y + 2, height - 1) * stride; + IDWTELEM *b2 = buffer + avpriv_mirror(y + 1, height - 1) * stride; + IDWTELEM *b3 = buffer + avpriv_mirror(y + 2, height - 1) * stride; if (y + 1 < (unsigned)height) vertical_compose53iL0(b1, b2, b3, width); @@ -553,20 +543,20 @@ void ff_snow_vertical_compose97i(IDWTELEM *b0, IDWTELEM *b1, IDWTELEM *b2, static void spatial_compose97i_buffered_init(DWTCompose *cs, slice_buffer *sb, int height, int stride_line) { - cs->b0 = slice_buffer_get_line(sb, mirror(-3 - 1, height - 1) * stride_line); - cs->b1 = slice_buffer_get_line(sb, mirror(-3, height - 1) * stride_line); - cs->b2 = slice_buffer_get_line(sb, mirror(-3 + 1, height - 1) * stride_line); - cs->b3 = slice_buffer_get_line(sb, mirror(-3 + 2, height - 1) * stride_line); + cs->b0 = slice_buffer_get_line(sb, avpriv_mirror(-3 - 1, height - 1) * stride_line); + cs->b1 = slice_buffer_get_line(sb, avpriv_mirror(-3, height - 1) * stride_line); + cs->b2 = slice_buffer_get_line(sb, avpriv_mirror(-3 + 1, height - 1) * stride_line); + cs->b3 = slice_buffer_get_line(sb, avpriv_mirror(-3 + 2, height - 1) * stride_line); cs->y = -3; } static void spatial_compose97i_init(DWTCompose *cs, IDWTELEM *buffer, int height, int stride) { - cs->b0 = buffer + mirror(-3 - 1, height - 1) * stride; - cs->b1 = buffer + mirror(-3, height - 1) * stride; - cs->b2 = buffer + mirror(-3 + 1, height - 1) * stride; - cs->b3 = buffer + mirror(-3 + 2, height - 1) * stride; + cs->b0 = buffer + avpriv_mirror(-3 - 1, height - 1) * stride; + cs->b1 = buffer + avpriv_mirror(-3, height - 1) * stride; + cs->b2 = buffer + avpriv_mirror(-3 + 1, height - 1) * stride; + cs->b3 = buffer + avpriv_mirror(-3 + 2, height - 1) * stride; cs->y = -3; } @@ -582,10 +572,10 @@ static void spatial_compose97i_dy_buffered(SnowDWTContext *dsp, DWTCompose *cs, IDWTELEM *b2 = cs->b2; IDWTELEM *b3 = cs->b3; IDWTELEM *b4 = slice_buffer_get_line(sb, - mirror(y + 3, height - 1) * + avpriv_mirror(y + 3, height - 1) * stride_line); IDWTELEM *b5 = slice_buffer_get_line(sb, - mirror(y + 4, height - 1) * + avpriv_mirror(y + 4, height - 1) * stride_line); if (y > 0 && y + 4 < height) { @@ -622,8 +612,8 @@ static void spatial_compose97i_dy(DWTCompose *cs, IDWTELEM *buffer, IDWTELEM *b1 = cs->b1; IDWTELEM *b2 = cs->b2; IDWTELEM *b3 = cs->b3; - IDWTELEM *b4 = buffer + mirror(y + 3, height - 1) * stride; - IDWTELEM *b5 = buffer + mirror(y + 4, height - 1) * stride; + IDWTELEM *b4 = buffer + avpriv_mirror(y + 3, height - 1) * stride; + IDWTELEM *b5 = buffer + avpriv_mirror(y + 4, height - 1) * stride; if (y + 3 < (unsigned)height) vertical_compose97iL1(b3, b4, b5, width); |