Skip to content

Instantly share code, notes, and snippets.

@rcombs

rcombs/stdin Secret

Created September 20, 2015 17:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rcombs/d5bfe7c8d7afcb7d3756 to your computer and use it in GitHub Desktop.
Save rcombs/d5bfe7c8d7afcb7d3756 to your computer and use it in GitHub Desktop.
diff --git a/tests/checkasm/vp9dsp.c b/tests/checkasm/vp9dsp.c
index 146a71f..968eae5 100644
--- a/tests/checkasm/vp9dsp.c
+++ b/tests/checkasm/vp9dsp.c
@@ -104,58 +104,63 @@ static void check_ipred(void)
} while (0)
#define setdx(a,b,c,d) setpx(a,b,(c)-(d)+(rnd()%((d)*2+1)))
#define setsx(a,b,c,d) setdx(a,b,c,(d) << (bit_depth - 8))
+static inline void randomize_buffers_int(int bidx, int lineoff, int str,
+ int bit_depth, int dir,
+ int* E, int* F, int* H, int* I,
+ uint8_t *buf0, uint8_t *buf1)
+{
+ uint32_t mask = (1 << bit_depth) - 1;
+ int off = dir ? lineoff : lineoff * 16;
+ int istride = dir ? 1 : 16;
+ int jstride = dir ? str : 1;
+ int i, j;
+ for (i = 0; i < 2; i++) /* flat16 */ {
+ int idx = off + i * istride, p0, q0;
+ setpx(idx, 0, q0 = rnd() & mask);
+ setsx(idx, -1, p0 = q0, E[bidx] >> 2);
+ for (j = 1; j < 8; j++) {
+ setsx(idx, -1 - j, p0, F[bidx]);
+ setsx(idx, j, q0, F[bidx]);
+ }
+ }
+ for (i = 2; i < 4; i++) /* flat8 */ {
+ int idx = off + i * istride, p0, q0;
+ setpx(idx, 0, q0 = rnd() & mask);
+ setsx(idx, -1, p0 = q0, E[bidx] >> 2);
+ for (j = 1; j < 4; j++) {
+ setsx(idx, -1 - j, p0, F[bidx]);
+ setsx(idx, j, q0, F[bidx]);
+ }
+ for (j = 4; j < 8; j++) {
+ setpx(idx, -1 - j, rnd() & mask);
+ setpx(idx, j, rnd() & mask);
+ }
+ }
+ for (i = 4; i < 6; i++) /* regular */ {
+ int idx = off + i * istride, p2, p1, p0, q0, q1, q2;
+ setpx(idx, 0, q0 = rnd() & mask);
+ setsx(idx, 1, q1 = q0, I[bidx]);
+ setsx(idx, 2, q2 = q1, I[bidx]);
+ setsx(idx, 3, q2, I[bidx]);
+ setsx(idx, -1, p0 = q0, E[bidx] >> 2);
+ setsx(idx, -2, p1 = p0, I[bidx]);
+ setsx(idx, -3, p2 = p1, I[bidx]);
+ setsx(idx, -4, p2, I[bidx]);
+ for (j = 4; j < 8; j++) {
+ setpx(idx, -1 - j, rnd() & mask);
+ setpx(idx, j, rnd() & mask);
+ }
+ }
+ for (i = 6; i < 8; i++) /* off */ {
+ int idx = off + i * istride;
+ for (j = 0; j < 8; j++) {
+ setpx(idx, -1 - j, rnd() & mask);
+ setpx(idx, j, rnd() & mask);
+ }
+ }
+}
#define randomize_buffers(bidx, lineoff, str) \
- do { \
- uint32_t mask = (1 << bit_depth) - 1; \
- int off = dir ? lineoff : lineoff * 16; \
- int istride = dir ? 1 : 16; \
- int jstride = dir ? str : 1; \
- int i, j; \
- for (i = 0; i < 2; i++) /* flat16 */ { \
- int idx = off + i * istride, p0, q0; \
- setpx(idx, 0, q0 = rnd() & mask); \
- setsx(idx, -1, p0 = q0, E[bidx] >> 2); \
- for (j = 1; j < 8; j++) { \
- setsx(idx, -1 - j, p0, F[bidx]); \
- setsx(idx, j, q0, F[bidx]); \
- } \
- } \
- for (i = 2; i < 4; i++) /* flat8 */ { \
- int idx = off + i * istride, p0, q0; \
- setpx(idx, 0, q0 = rnd() & mask); \
- setsx(idx, -1, p0 = q0, E[bidx] >> 2); \
- for (j = 1; j < 4; j++) { \
- setsx(idx, -1 - j, p0, F[bidx]); \
- setsx(idx, j, q0, F[bidx]); \
- } \
- for (j = 4; j < 8; j++) { \
- setpx(idx, -1 - j, rnd() & mask); \
- setpx(idx, j, rnd() & mask); \
- } \
- } \
- for (i = 4; i < 6; i++) /* regular */ { \
- int idx = off + i * istride, p2, p1, p0, q0, q1, q2; \
- setpx(idx, 0, q0 = rnd() & mask); \
- setsx(idx, 1, q1 = q0, I[bidx]); \
- setsx(idx, 2, q2 = q1, I[bidx]); \
- setsx(idx, 3, q2, I[bidx]); \
- setsx(idx, -1, p0 = q0, E[bidx] >> 2); \
- setsx(idx, -2, p1 = p0, I[bidx]); \
- setsx(idx, -3, p2 = p1, I[bidx]); \
- setsx(idx, -4, p2, I[bidx]); \
- for (j = 4; j < 8; j++) { \
- setpx(idx, -1 - j, rnd() & mask); \
- setpx(idx, j, rnd() & mask); \
- } \
- } \
- for (i = 6; i < 8; i++) /* off */ { \
- int idx = off + i * istride; \
- for (j = 0; j < 8; j++) { \
- setpx(idx, -1 - j, rnd() & mask); \
- setpx(idx, j, rnd() & mask); \
- } \
- } \
- } while (0)
+ randomize_buffers_int(bidx, lineoff, str, bit_depth, dir, E, F, H, I, buf0, buf1)
static void check_loopfilter()
{
@@ -197,6 +202,9 @@ static void check_loopfilter()
midoff = (dir ? 16 * 8 : 8) * SIZEOF_PIXEL;
midoff_aligned = (dir ? 16 * 8 : 16) * SIZEOF_PIXEL;
+ buf0 = base0 + midoff_aligned;
+ buf1 = base1 + midoff_aligned;
+
// 16wd_16px loopfilter
if (check_func(dsp.loop_filter_16[dir],
"vp9_loop_filter_%s_16_16_%dbpp",
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment