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);
-}