Added HighBD support for mismatch debugging

Enabling CONFIG_MISMATCH_DEBUG with highbd streams was producing undefined
behaviour. This patch adds support for highbd frames.

BUG=aomedia:1246

Change-Id: I36ff4ddbb9b2e884e4a5b76485247a20b1f5db3c
diff --git a/aom_util/debug_util.c b/aom_util/debug_util.c
index cf3fb24..27032fd 100644
--- a/aom_util/debug_util.c
+++ b/aom_util/debug_util.c
@@ -83,9 +83,9 @@
 static int max_frame_buf_num = 5;
 #define MAX_FRAME_STRIDE 1280
 #define MAX_FRAME_HEIGHT 720
-static uint8_t
+static uint16_t
     frame_pre[5][3][MAX_FRAME_STRIDE * MAX_FRAME_HEIGHT];  // prediction only
-static uint8_t
+static uint16_t
     frame_tx[5][3][MAX_FRAME_STRIDE * MAX_FRAME_HEIGHT];  // prediction + txfm
 static int frame_stride = MAX_FRAME_STRIDE;
 static int frame_height = MAX_FRAME_HEIGHT;
@@ -116,15 +116,19 @@
 }
 
 void mismatch_record_block_pre(const uint8_t *src, int src_stride, int plane,
-                               int pixel_c, int pixel_r, int blk_w, int blk_h) {
+                               int pixel_c, int pixel_r, int blk_w, int blk_h,
+                               int highbd) {
   if (pixel_c + blk_w >= frame_stride || pixel_r + blk_h >= frame_height) {
     printf("frame_buf undersized\n");
     assert(0);
   }
+
+  const uint16_t *src16 = highbd ? CONVERT_TO_SHORTPTR(src) : NULL;
   for (int r = 0; r < blk_h; ++r) {
     for (int c = 0; c < blk_w; ++c) {
-      frame_pre[frame_buf_idx_w][plane][(r + pixel_r) * frame_stride + c +
-                                        pixel_c] = src[r * src_stride + c];
+      frame_pre[frame_buf_idx_w][plane]
+               [(r + pixel_r) * frame_stride + c + pixel_c] =
+                   src16 ? src16[r * src_stride + c] : src[r * src_stride + c];
     }
   }
 #if 0
@@ -143,15 +147,19 @@
 #endif
 }
 void mismatch_record_block_tx(const uint8_t *src, int src_stride, int plane,
-                              int pixel_c, int pixel_r, int blk_w, int blk_h) {
+                              int pixel_c, int pixel_r, int blk_w, int blk_h,
+                              int highbd) {
   if (pixel_c + blk_w >= frame_stride || pixel_r + blk_h >= frame_height) {
     printf("frame_buf undersized\n");
     assert(0);
   }
+
+  const uint16_t *src16 = highbd ? CONVERT_TO_SHORTPTR(src) : NULL;
   for (int r = 0; r < blk_h; ++r) {
     for (int c = 0; c < blk_w; ++c) {
-      frame_tx[frame_buf_idx_w][plane][(r + pixel_r) * frame_stride + c +
-                                       pixel_c] = src[r * src_stride + c];
+      frame_tx[frame_buf_idx_w][plane]
+              [(r + pixel_r) * frame_stride + c + pixel_c] =
+                  src16 ? src16[r * src_stride + c] : src[r * src_stride + c];
     }
   }
 #if 0
@@ -170,17 +178,21 @@
 #endif
 }
 void mismatch_check_block_pre(const uint8_t *src, int src_stride, int plane,
-                              int pixel_c, int pixel_r, int blk_w, int blk_h) {
+                              int pixel_c, int pixel_r, int blk_w, int blk_h,
+                              int highbd) {
   if (pixel_c + blk_w >= frame_stride || pixel_r + blk_h >= frame_height) {
     printf("frame_buf undersized\n");
     assert(0);
   }
+
+  const uint16_t *src16 = highbd ? CONVERT_TO_SHORTPTR(src) : NULL;
   int mismatch = 0;
   for (int r = 0; r < blk_h; ++r) {
     for (int c = 0; c < blk_w; ++c) {
       if (frame_pre[frame_buf_idx_r][plane]
                    [(r + pixel_r) * frame_stride + c + pixel_c] !=
-          src[r * src_stride + c]) {
+          (uint16_t)(src16 ? src16[r * src_stride + c]
+                           : src[r * src_stride + c])) {
         mismatch = 1;
       }
     }
@@ -202,7 +214,8 @@
     printf("dec\n");
     for (int rr = 0; rr < blk_h; ++rr) {
       for (int cc = 0; cc < blk_w; ++cc) {
-        printf("%d ", src[rr * src_stride + cc]);
+        printf("%d ",
+               src16 ? src16[rr * src_stride + cc] : src[rr * src_stride + cc]);
       }
       printf("\n");
     }
@@ -210,17 +223,21 @@
   }
 }
 void mismatch_check_block_tx(const uint8_t *src, int src_stride, int plane,
-                             int pixel_c, int pixel_r, int blk_w, int blk_h) {
+                             int pixel_c, int pixel_r, int blk_w, int blk_h,
+                             int highbd) {
   if (pixel_c + blk_w >= frame_stride || pixel_r + blk_h >= frame_height) {
     printf("frame_buf undersized\n");
     assert(0);
   }
+
+  const uint16_t *src16 = highbd ? CONVERT_TO_SHORTPTR(src) : NULL;
   int mismatch = 0;
   for (int r = 0; r < blk_h; ++r) {
     for (int c = 0; c < blk_w; ++c) {
       if (frame_tx[frame_buf_idx_r][plane]
                   [(r + pixel_r) * frame_stride + c + pixel_c] !=
-          src[r * src_stride + c]) {
+          (uint16_t)(src16 ? src16[r * src_stride + c]
+                           : src[r * src_stride + c])) {
         mismatch = 1;
       }
     }
@@ -242,7 +259,8 @@
     printf("dec\n");
     for (int rr = 0; rr < blk_h; ++rr) {
       for (int cc = 0; cc < blk_w; ++cc) {
-        printf("%d ", src[rr * src_stride + cc]);
+        printf("%d ",
+               src16 ? src16[rr * src_stride + cc] : src[rr * src_stride + cc]);
       }
       printf("\n");
     }