diff --git a/vp9/common/blockd.h b/vp9/common/blockd.h
index ec010e9b1a25e833677ac4f56310bc461ac99a32..0b1fd46b4d7a3da0fef3f7b8c88bda92458228d6 100644
--- a/vp9/common/blockd.h
+++ b/vp9/common/blockd.h
@@ -280,7 +280,7 @@ typedef struct macroblockd {
   DECLARE_ALIGNED(16, unsigned char,  predictor[384]);
   DECLARE_ALIGNED(16, short, qcoeff[400]);
   DECLARE_ALIGNED(16, short, dqcoeff[400]);
-  DECLARE_ALIGNED(16, char,  eobs[25]);
+  DECLARE_ALIGNED(16, unsigned short,  eobs[25]);
 
   /* 16 Y blocks, 4 U, 4 V, 1 DC 2nd order block, each with 16 entries. */
   BLOCKD block[25];
diff --git a/vp9/common/rtcd_defs.sh b/vp9/common/rtcd_defs.sh
index a36c32eba80a1a083778e6a0be5100b35dc52650..087d08c5d8596499a3bf4c0726fedb2e328d9214 100644
--- a/vp9/common/rtcd_defs.sh
+++ b/vp9/common/rtcd_defs.sh
@@ -43,13 +43,13 @@ specialize vp9_dequantize_b mmx
 prototype void vp9_dequantize_b_2x2 "struct blockd *x"
 specialize vp9_dequantize_b_2x2
 
-prototype void vp9_dequant_dc_idct_add_y_block_8x8 "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs, short *dc, struct macroblockd *xd"
+prototype void vp9_dequant_dc_idct_add_y_block_8x8 "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, unsigned short *eobs, short *dc, struct macroblockd *xd"
 specialize vp9_dequant_dc_idct_add_y_block_8x8
 
-prototype void vp9_dequant_idct_add_y_block_8x8 "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs, struct macroblockd *xd"
+prototype void vp9_dequant_idct_add_y_block_8x8 "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, unsigned short *eobs, struct macroblockd *xd"
 specialize vp9_dequant_idct_add_y_block_8x8
 
-prototype void vp9_dequant_idct_add_uv_block_8x8 "short *q, short *dq, unsigned char *pre, unsigned char *dstu, unsigned char *dstv, int stride, char *eobs, struct macroblockd *xd"
+prototype void vp9_dequant_idct_add_uv_block_8x8 "short *q, short *dq, unsigned char *pre, unsigned char *dstu, unsigned char *dstv, int stride, unsigned short *eobs, struct macroblockd *xd"
 specialize vp9_dequant_idct_add_uv_block_8x8
 
 prototype void vp9_dequant_idct_add_16x16 "short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride"
@@ -67,13 +67,13 @@ specialize vp9_dequant_idct_add
 prototype void vp9_dequant_dc_idct_add "short *input, short *dq, unsigned char *pred, unsigned char *dest, int pitch, int stride, int Dc"
 specialize vp9_dequant_dc_idct_add
 
-prototype void vp9_dequant_dc_idct_add_y_block "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs, short *dc"
+prototype void vp9_dequant_dc_idct_add_y_block "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, unsigned short *eobs, short *dc"
 specialize vp9_dequant_dc_idct_add_y_block mmx
 
-prototype void vp9_dequant_idct_add_y_block "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, char *eobs"
+prototype void vp9_dequant_idct_add_y_block "short *q, short *dq, unsigned char *pre, unsigned char *dst, int stride, unsigned short *eobs"
 specialize vp9_dequant_idct_add_y_block mmx
 
-prototype void vp9_dequant_idct_add_uv_block "short *q, short *dq, unsigned char *pre, unsigned char *dstu, unsigned char *dstv, int stride, char *eobs"
+prototype void vp9_dequant_idct_add_uv_block "short *q, short *dq, unsigned char *pre, unsigned char *dstu, unsigned char *dstv, int stride, unsigned short *eobs"
 specialize vp9_dequant_idct_add_uv_block mmx
 
 #
diff --git a/vp9/decoder/arm/armv6/idct_blk_v6.c b/vp9/decoder/arm/armv6/idct_blk_v6.c
index fe9b9035efed0216ddcf4a44a85a2999caea7918..e430f2995e7f8bcb1e6b91244c095805a3567544 100644
--- a/vp9/decoder/arm/armv6/idct_blk_v6.c
+++ b/vp9/decoder/arm/armv6/idct_blk_v6.c
@@ -12,9 +12,10 @@
 #include "vp9/common/idct.h"
 #include "vp9/decoder/dequantize.h"
 
-void vp8_dequant_dc_idct_add_y_block_v6
-(short *q, short *dq, unsigned char *pre,
- unsigned char *dst, int stride, char *eobs, short *dc) {
+void vp8_dequant_dc_idct_add_y_block_v6(short *q, short *dq,
+                                        unsigned char *pre,
+                                        unsigned char *dst, int stride,
+                                        unsigned short *eobs, short *dc) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -46,9 +47,9 @@ void vp8_dequant_dc_idct_add_y_block_v6
   }
 }
 
-void vp8_dequant_idct_add_y_block_v6
-(short *q, short *dq, unsigned char *pre,
- unsigned char *dst, int stride, char *eobs) {
+void vp8_dequant_idct_add_y_block_v6(short *q, short *dq, unsigned char *pre,
+                                     unsigned char *dst, int stride,
+                                     unsigned short *eobs) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -87,9 +88,9 @@ void vp8_dequant_idct_add_y_block_v6
   }
 }
 
-void vp8_dequant_idct_add_uv_block_v6
-(short *q, short *dq, unsigned char *pre,
- unsigned char *dstu, unsigned char *dstv, int stride, char *eobs) {
+void vp8_dequant_idct_add_uv_block_v6(short *q, short *dq, unsigned char *pre,
+                                      unsigned char *dstu, unsigned char *dstv,
+                                      int stride, unsigned short *eobs) {
   int i;
 
   for (i = 0; i < 2; i++) {
diff --git a/vp9/decoder/arm/neon/idct_blk_neon.c b/vp9/decoder/arm/neon/idct_blk_neon.c
index fb5d298df0a9d9c8ed644204277135a9fc95fa5d..5711e86e8dcfc7c8638bacc0f097e09add705c50 100644
--- a/vp9/decoder/arm/neon/idct_blk_neon.c
+++ b/vp9/decoder/arm/neon/idct_blk_neon.c
@@ -27,9 +27,10 @@ void idct_dequant_0_2x_neon
 (short *q, short dq, unsigned char *pre, int pitch,
  unsigned char *dst, int stride);
 
-void vp8_dequant_dc_idct_add_y_block_neon
-(short *q, short *dq, unsigned char *pre,
- unsigned char *dst, int stride, char *eobs, short *dc) {
+void vp8_dequant_dc_idct_add_y_block_neon(short *q, short *dq,
+                                          unsigned char *pre,
+                                          unsigned char *dst, int stride,
+                                          unsigned short *eobs, short *dc) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -51,9 +52,9 @@ void vp8_dequant_dc_idct_add_y_block_neon
   }
 }
 
-void vp8_dequant_idct_add_y_block_neon
-(short *q, short *dq, unsigned char *pre,
- unsigned char *dst, int stride, char *eobs) {
+void vp8_dequant_idct_add_y_block_neon(short *q, short *dq, unsigned char *pre,
+                                       unsigned char *dst, int stride,
+                                       unsigned short *eobs) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -74,9 +75,11 @@ void vp8_dequant_idct_add_y_block_neon
   }
 }
 
-void vp8_dequant_idct_add_uv_block_neon
-(short *q, short *dq, unsigned char *pre,
- unsigned char *dstu, unsigned char *dstv, int stride, char *eobs) {
+void vp8_dequant_idct_add_uv_block_neon(short *q, short *dq,
+                                        unsigned char *pre,
+                                        unsigned char *dstu,
+                                        unsigned char *dstv, int stride,
+                                        unsigned short *eobs) {
   if (((short *)eobs)[0] & 0xfefe)
     idct_dequant_full_2x_neon(q, dq, pre, dstu, 8, stride);
   else
diff --git a/vp9/decoder/dequantize.h b/vp9/decoder/dequantize.h
index 912061f289125e7079ecdba78a7fda1d3fdc4fe5..560c4a417b4f34e30617f4187757d510a36e2c18 100644
--- a/vp9/decoder/dequantize.h
+++ b/vp9/decoder/dequantize.h
@@ -25,17 +25,20 @@ extern void vp9_dequant_dc_idct_add_lossless_c(short *input, short *dq,
 extern void vp9_dequant_dc_idct_add_y_block_lossless_c(short *q, short *dq,
                                                        unsigned char *pre,
                                                        unsigned char *dst,
-                                                       int stride, char *eobs,
+                                                       int stride,
+                                                       unsigned short *eobs,
                                                        short *dc);
 extern void vp9_dequant_idct_add_y_block_lossless_c(short *q, short *dq,
                                                     unsigned char *pre,
                                                     unsigned char *dst,
-                                                    int stride, char *eobs);
+                                                    int stride,
+                                                    unsigned short *eobs);
 extern void vp9_dequant_idct_add_uv_block_lossless_c(short *q, short *dq,
                                                      unsigned char *pre,
                                                      unsigned char *dst_u,
                                                      unsigned char *dst_v,
-                                                     int stride, char *eobs);
+                                                     int stride,
+                                                     unsigned short *eobs);
 #endif
 
 typedef void (*vp9_dequant_idct_add_fn_t)(short *input, short *dq,
@@ -44,12 +47,13 @@ typedef void(*vp9_dequant_dc_idct_add_fn_t)(short *input, short *dq,
     unsigned char *pred, unsigned char *output, int pitch, int stride, int dc);
 
 typedef void(*vp9_dequant_dc_idct_add_y_block_fn_t)(short *q, short *dq,
-    unsigned char *pre, unsigned char *dst, int stride, char *eobs, short *dc);
+    unsigned char *pre, unsigned char *dst, int stride, unsigned short *eobs,
+    short *dc);
 typedef void(*vp9_dequant_idct_add_y_block_fn_t)(short *q, short *dq,
-    unsigned char *pre, unsigned char *dst, int stride, char *eobs);
+    unsigned char *pre, unsigned char *dst, int stride, unsigned short *eobs);
 typedef void(*vp9_dequant_idct_add_uv_block_fn_t)(short *q, short *dq,
     unsigned char *pre, unsigned char *dst_u, unsigned char *dst_v, int stride,
-    char *eobs);
+    unsigned short *eobs);
 
 void vp9_ht_dequant_idct_add_c(TX_TYPE tx_type, short *input, short *dq,
                                     unsigned char *pred, unsigned char *dest,
@@ -66,12 +70,14 @@ void vp9_ht_dequant_idct_add_16x16_c(TX_TYPE tx_type, short *input, short *dq,
 #if CONFIG_SUPERBLOCKS
 void vp9_dequant_dc_idct_add_y_block_8x8_inplace_c(short *q, short *dq,
                                                    unsigned char *dst,
-                                                   int stride, char *eobs,
+                                                   int stride,
+                                                   unsigned short *eobs,
                                                    short *dc, MACROBLOCKD *xd);
 void vp9_dequant_idct_add_uv_block_8x8_inplace_c(short *q, short *dq,
                                                  unsigned char *dstu,
                                                  unsigned char *dstv,
-                                                 int stride, char *eobs,
+                                                 int stride,
+                                                 unsigned short *eobs,
                                                  MACROBLOCKD *xd);
 #endif
 
diff --git a/vp9/decoder/detokenize.c b/vp9/decoder/detokenize.c
index 58f5044eada64771f270030c6105aa7f4c3881f9..62511f0b43a7031dde02cde31eb53bea4b9ed832 100644
--- a/vp9/decoder/detokenize.c
+++ b/vp9/decoder/detokenize.c
@@ -419,7 +419,7 @@ int vp9_decode_mb_tokens_16x16(VP9D_COMP *pbi, MACROBLOCKD *xd,
   ENTROPY_CONTEXT* const A = (ENTROPY_CONTEXT *)xd->above_context;
   ENTROPY_CONTEXT* const L = (ENTROPY_CONTEXT *)xd->left_context;
 
-  char* const eobs = xd->eobs;
+  unsigned short* const eobs = xd->eobs;
   PLANE_TYPE type;
   int c, i, eobtotal = 0, seg_eob;
   const int segment_id = xd->mode_info_context->mbmi.segment_id;
@@ -482,7 +482,7 @@ int vp9_decode_mb_tokens_8x8(VP9D_COMP *pbi, MACROBLOCKD *xd,
   ENTROPY_CONTEXT *const A = (ENTROPY_CONTEXT *)xd->above_context;
   ENTROPY_CONTEXT *const L = (ENTROPY_CONTEXT *)xd->left_context;
 
-  char *const eobs = xd->eobs;
+  unsigned short *const eobs = xd->eobs;
   PLANE_TYPE type;
   int c, i, eobtotal = 0, seg_eob;
   const int segment_id = xd->mode_info_context->mbmi.segment_id;
@@ -576,7 +576,7 @@ int vp9_decode_mb_tokens(VP9D_COMP *dx, MACROBLOCKD *xd,
   ENTROPY_CONTEXT *const A = (ENTROPY_CONTEXT *)xd->above_context;
   ENTROPY_CONTEXT *const L = (ENTROPY_CONTEXT *)xd->left_context;
 
-  char *const eobs = xd->eobs;
+  unsigned short *const eobs = xd->eobs;
   const int *scan = vp9_default_zig_zag1d;
   PLANE_TYPE type;
   int c, i, eobtotal = 0, seg_eob = 16;
diff --git a/vp9/decoder/idct_blk.c b/vp9/decoder/idct_blk.c
index 0ca429240bd2b24d73914d3e9e89026d081df9e1..d9fbf97c22361356fac00f3a22f0b10148dda26e 100644
--- a/vp9/decoder/idct_blk.c
+++ b/vp9/decoder/idct_blk.c
@@ -14,7 +14,7 @@
 void vp9_dequant_dc_idct_add_y_block_c(short *q, short *dq,
                                        unsigned char *pre,
                                        unsigned char *dst,
-                                       int stride, char *eobs,
+                                       int stride, unsigned short *eobs,
                                        short *dc) {
   int i, j;
 
@@ -39,7 +39,7 @@ void vp9_dequant_dc_idct_add_y_block_c(short *q, short *dq,
 void vp9_dequant_idct_add_y_block_c(short *q, short *dq,
                                     unsigned char *pre,
                                     unsigned char *dst,
-                                    int stride, char *eobs) {
+                                    int stride, unsigned short *eobs) {
   int i, j;
 
   for (i = 0; i < 4; i++) {
@@ -63,7 +63,7 @@ void vp9_dequant_idct_add_y_block_c(short *q, short *dq,
 
 void vp9_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *pre,
                                      unsigned char *dstu, unsigned char *dstv,
-                                     int stride, char *eobs) {
+                                     int stride, unsigned short *eobs) {
   int i, j;
 
   for (i = 0; i < 2; i++) {
@@ -107,7 +107,8 @@ void vp9_dequant_idct_add_uv_block_c(short *q, short *dq, unsigned char *pre,
 void vp9_dequant_dc_idct_add_y_block_8x8_c(short *q, short *dq,
                                            unsigned char *pre,
                                            unsigned char *dst,
-                                           int stride, char *eobs, short *dc,
+                                           int stride, unsigned short *eobs,
+                                           short *dc,
                                            MACROBLOCKD *xd) {
   vp9_dequant_dc_idct_add_8x8_c(q, dq, pre, dst, 16, stride, dc[0]);
   vp9_dequant_dc_idct_add_8x8_c(&q[64], dq, pre + 8, dst + 8, 16, stride, dc[1]);
@@ -120,7 +121,8 @@ void vp9_dequant_dc_idct_add_y_block_8x8_c(short *q, short *dq,
 #if CONFIG_SUPERBLOCKS
 void vp9_dequant_dc_idct_add_y_block_8x8_inplace_c(short *q, short *dq,
                                                    unsigned char *dst,
-                                                   int stride, char *eobs,
+                                                   int stride,
+                                                   unsigned short *eobs,
                                                    short *dc, MACROBLOCKD *xd) {
   vp9_dequant_dc_idct_add_8x8_c(q, dq, dst, dst, stride, stride, dc[0]);
   vp9_dequant_dc_idct_add_8x8_c(&q[64], dq, dst + 8,
@@ -135,7 +137,7 @@ void vp9_dequant_dc_idct_add_y_block_8x8_inplace_c(short *q, short *dq,
 void vp9_dequant_idct_add_y_block_8x8_c(short *q, short *dq,
                                         unsigned char *pre,
                                         unsigned char *dst,
-                                        int stride, char *eobs,
+                                        int stride, unsigned short *eobs,
                                         MACROBLOCKD *xd) {
   unsigned char *origdest = dst;
   unsigned char *origpred = pre;
@@ -153,7 +155,7 @@ void vp9_dequant_idct_add_uv_block_8x8_c(short *q, short *dq,
                                          unsigned char *pre,
                                          unsigned char *dstu,
                                          unsigned char *dstv,
-                                         int stride, char *eobs,
+                                         int stride, unsigned short *eobs,
                                          MACROBLOCKD *xd) {
   vp9_dequant_idct_add_8x8_c(q, dq, pre, dstu, 8, stride);
 
@@ -167,7 +169,8 @@ void vp9_dequant_idct_add_uv_block_8x8_c(short *q, short *dq,
 void vp9_dequant_idct_add_uv_block_8x8_inplace_c(short *q, short *dq,
                                                  unsigned char *dstu,
                                                  unsigned char *dstv,
-                                                 int stride, char *eobs,
+                                                 int stride,
+                                                 unsigned short *eobs,
                                                  MACROBLOCKD *xd) {
   vp9_dequant_idct_add_8x8_c(q, dq, dstu, dstu, stride, stride);
 
@@ -181,7 +184,8 @@ void vp9_dequant_idct_add_uv_block_8x8_inplace_c(short *q, short *dq,
 void vp9_dequant_dc_idct_add_y_block_lossless_c(short *q, short *dq,
                                                 unsigned char *pre,
                                                 unsigned char *dst,
-                                                int stride, char *eobs,
+                                                int stride,
+                                                unsigned short *eobs,
                                                 short *dc) {
   int i, j;
 
@@ -206,7 +210,7 @@ void vp9_dequant_dc_idct_add_y_block_lossless_c(short *q, short *dq,
 void vp9_dequant_idct_add_y_block_lossless_c(short *q, short *dq,
                                              unsigned char *pre,
                                              unsigned char *dst,
-                                             int stride, char *eobs) {
+                                             int stride, unsigned short *eobs) {
   int i, j;
 
   for (i = 0; i < 4; i++) {
@@ -232,7 +236,8 @@ void vp9_dequant_idct_add_uv_block_lossless_c(short *q, short *dq,
                                               unsigned char *pre,
                                               unsigned char *dstu,
                                               unsigned char *dstv,
-                                              int stride, char *eobs) {
+                                              int stride,
+                                              unsigned short *eobs) {
   int i, j;
 
   for (i = 0; i < 2; i++) {
diff --git a/vp9/decoder/x86/idct_blk_mmx.c b/vp9/decoder/x86/idct_blk_mmx.c
index 189a846deabcd0affc740010bc7458e237141ef7..6e5473106530e8197b858c07f174585689b5e785 100644
--- a/vp9/decoder/x86/idct_blk_mmx.c
+++ b/vp9/decoder/x86/idct_blk_mmx.c
@@ -15,7 +15,8 @@
 void vp9_dequant_dc_idct_add_y_block_mmx(short *q, short *dq,
                                          unsigned char *pre,
                                          unsigned char *dst,
-                                         int stride, char *eobs, short *dc) {
+                                         int stride, unsigned short *eobs,
+                                         short *dc) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -53,7 +54,7 @@ void vp9_dequant_dc_idct_add_y_block_mmx(short *q, short *dq,
 void vp9_dequant_idct_add_y_block_mmx(short *q, short *dq,
                                       unsigned char *pre,
                                       unsigned char *dst,
-                                      int stride, char *eobs) {
+                                      int stride, unsigned short *eobs) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -96,7 +97,7 @@ void vp9_dequant_idct_add_uv_block_mmx(short *q, short *dq,
                                        unsigned char *pre,
                                        unsigned char *dstu,
                                        unsigned char *dstv,
-                                       int stride, char *eobs) {
+                                       int stride, unsigned short *eobs) {
   int i;
 
   for (i = 0; i < 2; i++) {
diff --git a/vp9/decoder/x86/idct_blk_sse2.c b/vp9/decoder/x86/idct_blk_sse2.c
index bc3c5d663367789ad34dad9f597a8aec28a46c12..5914c16bc76d05a47ff46ff7c7f888c24aba0f92 100644
--- a/vp9/decoder/x86/idct_blk_sse2.c
+++ b/vp9/decoder/x86/idct_blk_sse2.c
@@ -31,7 +31,8 @@ void vp9_idct_dequant_full_2x_sse2(short *q, short *dq,
 void vp9_dequant_dc_idct_add_y_block_sse2(short *q, short *dq,
                                           unsigned char *pre,
                                           unsigned char *dst,
-                                          int stride, char *eobs, short *dc) {
+                                          int stride, unsigned short *eobs,
+                                          short *dc) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -57,7 +58,7 @@ void vp9_dequant_dc_idct_add_y_block_sse2(short *q, short *dq,
 
 void vp9_dequant_idct_add_y_block_sse2(short *q, short *dq,
                                        unsigned char *pre, unsigned char *dst,
-                                       int stride, char *eobs) {
+                                       int stride, unsigned short *eobs) {
   int i;
 
   for (i = 0; i < 4; i++) {
@@ -82,7 +83,7 @@ void vp9_dequant_idct_add_uv_block_sse2(short *q, short *dq,
                                         unsigned char *pre,
                                         unsigned char *dstu,
                                         unsigned char *dstv,
-                                        int stride, char *eobs) {
+                                        int stride, unsigned short *eobs) {
   if (((short *)(eobs))[0] & 0xfefe)
     vp9_idct_dequant_full_2x_sse2(q, dq, pre, dstu, stride, 8);
   else