Add dual filter support to inspector etc.

Change-Id: Id3124c0a4724e1c9e94960702445055da1e99277
diff --git a/av1/common/enums.h b/av1/common/enums.h
index 2ccd9e2..4c3d908 100644
--- a/av1/common/enums.h
+++ b/av1/common/enums.h
@@ -327,6 +327,20 @@
   TX_TYPES,
 } TX_TYPE;
 
+#if CONFIG_DUAL_FILTER
+typedef enum {
+  REG_REG,
+  REG_SMOOTH,
+  REG_SHARP,
+  SMOOTH_REG,
+  SMOOTH_SMOOTH,
+  SMOOTH_SHARP,
+  SHARP_REG,
+  SHARP_SMOOTH,
+  SHARP_SHARP,
+} DUAL_FILTER_TYPE;
+#endif
+
 #if CONFIG_EXT_TX
 typedef enum ATTRIBUTE_PACKED {
   // DCT only
diff --git a/av1/decoder/inspection.c b/av1/decoder/inspection.c
index 98c51d4..96a9321 100644
--- a/av1/decoder/inspection.c
+++ b/av1/decoder/inspection.c
@@ -93,6 +93,7 @@
 #if CONFIG_DUAL_FILTER
       mi->filter[0] = av1_extract_interp_filter(mbmi->interp_filters, 0);
       mi->filter[1] = av1_extract_interp_filter(mbmi->interp_filters, 1);
+      mi->dual_filter_type = mi->filter[0] * 3 + mi->filter[1];
 #else
       mi->filter = av1_extract_interp_filter(mbmi->interp_filters, 0);
 #endif
diff --git a/av1/decoder/inspection.h b/av1/decoder/inspection.h
index 06a94b7..c2ffe90 100644
--- a/av1/decoder/inspection.h
+++ b/av1/decoder/inspection.h
@@ -40,6 +40,7 @@
   int8_t skip;
   int8_t segment_id;
 #if CONFIG_DUAL_FILTER
+  int8_t dual_filter_type;
   int8_t filter[2];
 #else
   int8_t filter;
diff --git a/examples/inspect.c b/examples/inspect.c
index 3387baa..087b943 100644
--- a/examples/inspect.c
+++ b/examples/inspect.c
@@ -57,7 +57,8 @@
   MOTION_VECTORS_LAYER = 1 << 9,
   UV_MODE_LAYER = 1 << 10,
   CFL_LAYER = 1 << 11,
-  ALL_LAYERS = (1 << 12) - 1
+  DUAL_FILTER_LAYER = 1 << 12,
+  ALL_LAYERS = (1 << 13) - 1
 } LayerType;
 
 static LayerType layers = 0;
@@ -91,6 +92,10 @@
 static const arg_def_t dump_cfl_arg =
     ARG_DEF("cfl", "chroma_from_luma", 0, "Dump Chroma from Luma Alphas");
 #endif
+#if CONFIG_DUAL_FILTER
+static const arg_def_t dump_dual_filter_type_arg =
+    ARG_DEF("df", "dualFilterType", 0, "Dump Dual Filter Type");
+#endif
 static const arg_def_t dump_reference_frame_arg =
     ARG_DEF("r", "referenceFrame", 0, "Dump Reference Frame");
 static const arg_def_t usage_arg = ARG_DEF("h", "help", 0, "Help");
@@ -111,6 +116,9 @@
 #if CONFIG_CDEF
                                         &dump_cdef_arg,
 #endif
+#if CONFIG_DUAL_FILTER
+                                        &dump_dual_filter_type_arg,
+#endif
 #if CONFIG_CFL
                                         &dump_cfl_arg,
 #endif
@@ -185,6 +193,13 @@
                                   ENUM(H_FLIPADST),
 #endif
                                   LAST_ENUM };
+#if CONFIG_DUAL_FILTER
+const map_entry dual_filter_map[] = { ENUM(REG_REG),       ENUM(REG_SMOOTH),
+                                      ENUM(REG_SHARP),     ENUM(SMOOTH_REG),
+                                      ENUM(SMOOTH_SMOOTH), ENUM(SMOOTH_SHARP),
+                                      ENUM(SHARP_REG),     ENUM(SHARP_SMOOTH),
+                                      ENUM(SHARP_SHARP),   LAST_ENUM };
+#endif
 
 const map_entry prediction_mode_map[] = {
   ENUM(DC_PRED),       ENUM(V_PRED),        ENUM(H_PRED),
@@ -501,6 +516,12 @@
     buf += put_block_info(buf, tx_type_map, "transformType",
                           offsetof(insp_mi_data, tx_type));
   }
+#if CONFIG_DUAL_FILTER
+  if (layers & DUAL_FILTER_LAYER) {
+    buf += put_block_info(buf, dual_filter_map, "dualFilterType",
+                          offsetof(insp_mi_data, dual_filter_type));
+  }
+#endif
   if (layers & MODE_LAYER) {
     buf += put_block_info(buf, prediction_mode_map, "mode",
                           offsetof(insp_mi_data, mode));
@@ -678,6 +699,10 @@
       layers |= REFERENCE_FRAME_LAYER;
     else if (arg_match(&arg, &dump_motion_vectors_arg, argi))
       layers |= MOTION_VECTORS_LAYER;
+#if CONFIG_DUAL_FILTER
+    else if (arg_match(&arg, &dump_dual_filter_type_arg, argi))
+      layers |= DUAL_FILTER_LAYER;
+#endif
     else if (arg_match(&arg, &dump_all_arg, argi))
       layers |= ALL_LAYERS;
     else if (arg_match(&arg, &compress_arg, argi))