Add util function for conversion of OBU type to string.

New public API function added to aom_codec:
aom_obu_type_to_string()

Also cleans up some duplicate code:
- Removes local definition of OBU types and OBU metadata types
  from obu_parser.
- Removes locally defined OBU type to string function from
  obu_parser.

Change-Id: Ia29563c68b857470a5d8c9e8fb3d6a3be0a9daeb
diff --git a/aom/aom_codec.h b/aom/aom_codec.h
index 9cca2b3..96b29c2 100644
--- a/aom/aom_codec.h
+++ b/aom/aom_codec.h
@@ -480,7 +480,6 @@
 
 #endif
 
-/* Based on R19 High Level Syntax */
 /*!\brief OBU types. */
 typedef enum ATTRIBUTE_PACKED {
   OBU_SEQUENCE_HEADER = 1,
@@ -501,6 +500,12 @@
   OBU_METADATA_TYPE_SCALABILITY = 3,
 } OBU_METADATA_TYPE;
 
+/*!\brief Returns string representation of OBU_TYPE.
+ *
+ * \param[in]     type            The OBU_TYPE to convert to string.
+ */
+const char *aom_obu_type_to_string(OBU_TYPE type);
+
 /*!\brief Config Options
  *
  * This type allows to enumerate and control options defined for control
diff --git a/aom/src/aom_codec.c b/aom/src/aom_codec.c
index 873d758..2872a93 100644
--- a/aom/src/aom_codec.c
+++ b/aom/src/aom_codec.c
@@ -15,6 +15,8 @@
  */
 #include <stdarg.h>
 #include <stdlib.h>
+
+#include "./aom_config.h"
 #include "aom/aom_integer.h"
 #include "aom/internal/aom_codec_internal.h"
 #include "aom_version.h"
@@ -136,3 +138,22 @@
 void aom_merge_corrupted_flag(int *corrupted, int value) {
   *corrupted |= value;
 }
+
+const char *aom_obu_type_to_string(OBU_TYPE type) {
+  switch (type) {
+    case OBU_SEQUENCE_HEADER: return "OBU_SEQUENCE_HEADER";
+    case OBU_TEMPORAL_DELIMITER: return "OBU_TEMPORAL_DELIMITER";
+    case OBU_FRAME_HEADER: return "OBU_FRAME_HEADER";
+#if CONFIG_OBU_REDUNDANT_FRAME_HEADER
+    case OBU_REDUNDANT_FRAME_HEADER: return "OBU_REDUNDANT_FRAME_HEADER";
+#endif  // CONFIG_OBU_REDUNDANT_FRAME_HEADER
+#if CONFIG_OBU_FRAME
+    case OBU_FRAME: return "OBU_FRAME";
+#endif  // CONFIG_OBU_FRAME
+    case OBU_TILE_GROUP: return "OBU_TILE_GROUP";
+    case OBU_METADATA: return "OBU_METADATA";
+    case OBU_PADDING: return "OBU_PADDING";
+    default: break;
+  }
+  return "<Invalid OBU Type>";
+}
diff --git a/tools/obu_parser.cc b/tools/obu_parser.cc
index 7e8c3db..4677912 100644
--- a/tools/obu_parser.cc
+++ b/tools/obu_parser.cc
@@ -17,6 +17,7 @@
 // OBUs.
 #include "./aom_config.h"
 
+#include "aom/aom_codec.h"
 #include "aom/aom_integer.h"
 #include "aom_ports/mem_ops.h"
 #include "tools/obu_parser.h"
@@ -79,9 +80,12 @@
     case OBU_TEMPORAL_DELIMITER:
     case OBU_FRAME_HEADER:
     case OBU_TILE_GROUP:
+#if CONFIG_OBU_REDUNDANT_FRAME_HEADER
+    case OBU_REDUNDANT_FRAME_HEADER:
+#endif  // CONFIG_OBU_REDUNDANT_FRAME_HEADER
 #if CONFIG_OBU_FRAME
     case OBU_FRAME:
-#endif
+#endif  // CONFIG_OBU_FRAME
     case OBU_METADATA:
     case OBU_PADDING: return true;
   }
@@ -132,26 +136,11 @@
   return true;
 }
 
-std::string ObuTypeToString(int obu_type) {
-  switch (obu_type) {
-    case OBU_SEQUENCE_HEADER: return "OBU_SEQUENCE_HEADER";
-    case OBU_TEMPORAL_DELIMITER: return "OBU_TEMPORAL_DELIMITER";
-    case OBU_FRAME_HEADER: return "OBU_FRAME_HEADER";
-    case OBU_TILE_GROUP: return "OBU_TILE_GROUP";
-#if CONFIG_OBU_FRAME
-    case OBU_FRAME: return "OBU_FRAME";
-#endif
-    case OBU_METADATA: return "OBU_METADATA";
-    case OBU_PADDING: return "OBU_PADDING";
-  }
-  return "";
-}
-
 void PrintObuHeader(const ObuHeader *header) {
   printf(
       "  OBU type:        %s\n"
       "      extension:   %s\n",
-      ObuTypeToString(header->type).c_str(),
+      aom_obu_type_to_string(static_cast<OBU_TYPE>(header->type)),
       header->has_extension ? "yes" : "no");
   if (header->has_extension) {
     printf(
diff --git a/tools/obu_parser.h b/tools/obu_parser.h
index dc01835..78088b1 100644
--- a/tools/obu_parser.h
+++ b/tools/obu_parser.h
@@ -16,28 +16,6 @@
 
 namespace aom_tools {
 
-// TODO(tomfinegan): The OBU and OBU metadata types are currently defined in
-// av1/common/enums.h, which is not part of the libaom's public API. They are
-// duped here until that's dealt with.
-
-enum ObuType {
-  OBU_SEQUENCE_HEADER = 1,
-  OBU_TEMPORAL_DELIMITER = 2,
-  OBU_FRAME_HEADER = 3,
-  OBU_TILE_GROUP = 4,
-  OBU_METADATA = 5,
-#if CONFIG_OBU_FRAME
-  OBU_FRAME = 6,
-#endif
-  OBU_PADDING = 15,
-};
-
-enum ObuMetadataType {
-  OBU_METADATA_TYPE_PRIVATE_DATA = 0,
-  OBU_METADATA_TYPE_HDR_CLL = 1,
-  OBU_METADATA_TYPE_HDR_MDCV = 2,
-};
-
 struct ObuExtensionHeader {
   int temporal_id;
   int spatial_id;