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;