Revert "Obtain aom_image metadata on decode"

This reverts commit 9bca352705baa7f5da83315780e97b6ccb6c20fa.

Reason for revert:

This cl caused decoder conformance test vector failure.

BUG=aomedia:2553

Change-Id: I1f7d0a5df80d6ee4a7fda754167465af42ae1da7
diff --git a/aom/aom_image.h b/aom/aom_image.h
index 0cf2e9e..863277e 100644
--- a/aom/aom_image.h
+++ b/aom/aom_image.h
@@ -30,7 +30,7 @@
  * types, removing or reassigning enums, adding/removing/rearranging
  * fields to structures
  */
-#define AOM_IMAGE_ABI_VERSION (7) /**<\hideinitializer*/
+#define AOM_IMAGE_ABI_VERSION (6) /**<\hideinitializer*/
 
 #define AOM_IMG_FMT_PLANAR 0x100  /**< Image is a planar format. */
 #define AOM_IMG_FMT_UV_FLIP 0x200 /**< V plane precedes U in memory. */
@@ -351,32 +351,6 @@
 int aom_img_add_metadata(aom_image_t *img, uint32_t type, const uint8_t *data,
                          size_t sz);
 
-/*!\brief Return a metadata payload stored within the image metadata array.
- *
- * Gets the metadata (aom_metadata_t) at the indicated index in the image
- * metadata array. Caller of this function owns the memory.
- *
- * \param[in] img          Pointer to image descriptor to get metadata from
- * \param[in] index        Metadata index to get from metadata array
- *
- * \return Returns a pointer to a newly allocated copy of the selected metadata,
- * if img and/or index is invalid, it returns NULL.
- */
-aom_metadata_t *aom_img_get_metadata(aom_image_t *img, size_t index);
-
-/*!\brief Return the number of metadata blocks within the image.
- *
- * Gets the number of metadata blocks contained within the provided image
- * metadata array.
- *
- * \param[in] img          Pointer to image descriptor to get metadata number
- * from.
- *
- * \return Returns the size of the metadata array. If img or metadata is NULL,
- * it returns 0.
- */
-size_t aom_img_num_metadata(aom_image_t *img);
-
 /*!\brief Remove metadata from image.
  *
  * Removes all metadata in image metadata list and sets metadata list pointer
diff --git a/aom/exports_com b/aom/exports_com
index 68dbfe0..a192cf9 100644
--- a/aom/exports_com
+++ b/aom/exports_com
@@ -15,12 +15,10 @@
 text aom_img_alloc_with_border
 text aom_img_flip
 text aom_img_free
-text aom_img_get_metadata
 text aom_img_metadata_array_free
 text aom_img_metadata_array_alloc
 text aom_img_metadata_free
 text aom_img_metadata_alloc
-text aom_img_num_metadata
 text aom_img_plane_height
 text aom_img_plane_width
 text aom_img_remove_metadata
diff --git a/aom/src/aom_image.c b/aom/src/aom_image.c
index 5fd2297..5e2edb4 100644
--- a/aom/src/aom_image.c
+++ b/aom/src/aom_image.c
@@ -379,20 +379,3 @@
     img->metadata = NULL;
   }
 }
-
-aom_metadata_t *aom_img_get_metadata(aom_image_t *img, size_t index) {
-  if (!img) return NULL;
-  aom_metadata_t *metadata = NULL;
-  aom_metadata_array_t *array = img->metadata;
-  if (array && array->sz > 0 && index < array->sz) {
-    metadata = aom_img_metadata_alloc(array->metadata_array[index]->type,
-                                      array->metadata_array[index]->payload,
-                                      array->metadata_array[index]->sz);
-  }
-  return metadata;
-}
-
-size_t aom_img_num_metadata(aom_image_t *img) {
-  if (!img || !img->metadata) return 0;
-  return img->metadata->sz;
-}
diff --git a/av1/av1_dx_iface.c b/av1/av1_dx_iface.c
index 91432d7..6b06ad4 100644
--- a/av1/av1_dx_iface.c
+++ b/av1/av1_dx_iface.c
@@ -802,18 +802,6 @@
           if (ctx->need_resync) return NULL;
           yuvconfig2image(&ctx->img, sd, frame_worker_data->user_priv);
 
-          if (pbi->metadata != NULL) {
-            int array_size = (int)pbi->metadata->sz;
-            for (int i = 0; i < array_size; ++i) {
-              aom_img_add_metadata(&ctx->img,
-                                   pbi->metadata->metadata_array[i]->type,
-                                   pbi->metadata->metadata_array[i]->payload,
-                                   pbi->metadata->metadata_array[i]->sz);
-            }
-            aom_img_metadata_array_free(pbi->metadata);
-            pbi->metadata = NULL;
-          }
-
           if (!pbi->ext_tile_debug && cm->large_scale_tile) {
             *index += 1;  // Advance the iterator to point to the next image
 
diff --git a/av1/decoder/decoder.h b/av1/decoder/decoder.h
index be13918..61206dd 100644
--- a/av1/decoder/decoder.h
+++ b/av1/decoder/decoder.h
@@ -243,7 +243,6 @@
 #endif
 
   AV1DecRowMTInfo frame_row_mt_info;
-  aom_metadata_array_t *metadata;
 } AV1Decoder;
 
 // Returns 0 on success. Sets pbi->common.error.error_code to a nonzero error
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index 2bdedc0..3619264 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -548,33 +548,32 @@
   return tile_list_payload_size;
 }
 
-// On success, returns the number of bytes read from 'data'. On failure, calls
+// Reads the country code as specified in Recommendation ITU-T T.35. On
+// success, returns the number of bytes read from 'data'. On failure, calls
 // aom_internal_error() and does not return.
-static size_t read_metadata_itut_t35(AV1Decoder *const pbi, const uint8_t *data,
+//
+// Note: This function does not read itu_t_t35_payload_bytes because the exact
+// syntax of itu_t_t35_payload_bytes is not defined in the spec.
+static size_t read_metadata_itut_t35(AV1_COMMON *const cm, const uint8_t *data,
                                      size_t sz) {
-  if (sz <= 0) {
-    AV1_COMMON *const cm = &pbi->common;
+  size_t i = 0;
+  // itu_t_t35_country_code f(8)
+  if (i >= sz) {
     aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
                        "itu_t_t35_country_code is missing");
   }
-
-  if (!pbi->metadata) {
-    pbi->metadata = aom_img_metadata_array_alloc(1);
-  } else {
-    aom_metadata_array_t *metadata =
-        aom_img_metadata_array_alloc(pbi->metadata->sz + 1);
-    for (size_t i = 0; i < pbi->metadata->sz; ++i) {
-      metadata->metadata_array[i] =
-          aom_img_metadata_alloc(pbi->metadata->metadata_array[i]->type,
-                                 pbi->metadata->metadata_array[i]->payload,
-                                 pbi->metadata->metadata_array[i]->sz);
+  const int itu_t_t35_country_code = data[i];
+  ++i;
+  if (itu_t_t35_country_code == 0xFF) {
+    // itu_t_t35_country_code_extension_byte f(8)
+    if (i >= sz) {
+      aom_internal_error(&cm->error, AOM_CODEC_CORRUPT_FRAME,
+                         "itu_t_t35_country_code_extension_byte is missing");
     }
-    aom_img_metadata_array_free(pbi->metadata);
-    pbi->metadata = metadata;
+    ++i;
   }
-  pbi->metadata->metadata_array[pbi->metadata->sz - 1] =
-      aom_img_metadata_alloc(OBU_METADATA_TYPE_ITUT_T35, data, sz - 1);
-  return sz - 1;
+  // itu_t_t35_payload_bytes
+  return i;
 }
 
 static void read_metadata_hdr_cll(struct aom_read_bit_buffer *rb) {
@@ -710,7 +709,7 @@
   if (metadata_type == OBU_METADATA_TYPE_ITUT_T35) {
     size_t bytes_read =
         type_length +
-        read_metadata_itut_t35(pbi, data + type_length, sz - type_length);
+        read_metadata_itut_t35(cm, data + type_length, sz - type_length);
     // Ignore itu_t_t35_payload_bytes and check trailing bits. Section 6.7.2
     // of the spec says:
     //   itu_t_t35_payload_bytes shall be bytes containing data registered as
diff --git a/test/metadata_test.cc b/test/metadata_test.cc
index 0c55cbc..bd8a1dd 100644
--- a/test/metadata_test.cc
+++ b/test/metadata_test.cc
@@ -48,9 +48,6 @@
       ASSERT_EQ(aom_img_add_metadata(current_frame, OBU_METADATA_TYPE_ITUT_T35,
                                      kExampleData, kExampleDataSize),
                 0);
-      ASSERT_EQ(aom_img_add_metadata(current_frame, OBU_METADATA_TYPE_ITUT_T35,
-                                     kExampleData, kExampleDataSize),
-                0);
     }
   }
 
@@ -74,16 +71,6 @@
       EXPECT_TRUE(found_metadata);
     }
   }
-
-  virtual void DecompressedFrameHook(const aom_image_t &img,
-                                     aom_codec_pts_t /*pts*/) {
-    ASSERT_TRUE(img.metadata != nullptr);
-    EXPECT_EQ(img.metadata->sz, 2u);
-    EXPECT_EQ(memcmp(kExampleData, img.metadata->metadata_array[0]->payload,
-                     kExampleDataSize),
-              0);
-    aom_img_metadata_array_free(img.metadata);
-  }
 };
 
 TEST_P(MetadataEncodeTest, TestMetadataEncoding) {
@@ -194,45 +181,3 @@
   aom_remove_metadata_from_frame_buffer(&yvBuf);
   aom_remove_metadata_from_frame_buffer(NULL);
 }
-
-TEST(MetadataTest, GetMetadataFromImage) {
-  aom_image_t image;
-  image.metadata = NULL;
-
-  ASSERT_EQ(aom_img_add_metadata(&image, OBU_METADATA_TYPE_ITUT_T35,
-                                 kExampleData, kExampleDataSize),
-            0);
-
-  EXPECT_TRUE(aom_img_get_metadata(NULL, 0) == NULL);
-  EXPECT_TRUE(aom_img_get_metadata(&image, 10u) == NULL);
-
-  aom_metadata_t *metadata = aom_img_get_metadata(&image, 0);
-  EXPECT_TRUE(metadata != NULL);
-  aom_img_metadata_free(metadata);
-  aom_img_metadata_array_free(image.metadata);
-}
-
-TEST(MetadataTest, ReadMetadatasFromImage) {
-  aom_image_t image;
-  image.metadata = NULL;
-
-  ASSERT_EQ(aom_img_add_metadata(&image, OBU_METADATA_TYPE_ITUT_T35,
-                                 kExampleData, kExampleDataSize),
-            0);
-  ASSERT_EQ(aom_img_add_metadata(&image, OBU_METADATA_TYPE_HDR_CLL,
-                                 kExampleData, kExampleDataSize),
-            0);
-  ASSERT_EQ(aom_img_add_metadata(&image, OBU_METADATA_TYPE_HDR_MDCV,
-                                 kExampleData, kExampleDataSize),
-            0);
-
-  size_t number_metadata = aom_img_num_metadata(&image);
-  EXPECT_EQ(number_metadata, 3u);
-  for (size_t i = 0; i < number_metadata; ++i) {
-    aom_metadata_t *metadata = aom_img_get_metadata(&image, i);
-    ASSERT_TRUE(metadata != NULL);
-    EXPECT_EQ(memcmp(kExampleData, metadata->payload, kExampleDataSize), 0);
-    aom_img_metadata_free(metadata);
-  }
-  aom_img_metadata_array_free(image.metadata);
-}