use leb128 for metadata type and use value 4 for ITU-T T.35
Change-Id: I830f072f4b630a8a89593561f1bc293c998c064f
diff --git a/aom/aom_codec.h b/aom/aom_codec.h
index 097d621..a6c68cd 100644
--- a/aom/aom_codec.h
+++ b/aom/aom_codec.h
@@ -494,11 +494,11 @@
/*!\brief OBU metadata types. */
typedef enum {
- OBU_METADATA_TYPE_PRIVATE_DATA = 0,
+ OBU_METADATA_TYPE_AOM_RESERVED_0 = 0,
OBU_METADATA_TYPE_HDR_CLL = 1,
OBU_METADATA_TYPE_HDR_MDCV = 2,
OBU_METADATA_TYPE_SCALABILITY = 3,
- OBU_METADATA_TYPE_DECODER_MODEL = 4,
+ OBU_METADATA_TYPE_ITUT_T35 = 4,
OBU_METADATA_TYPE_TIMECODE = 5,
} OBU_METADATA_TYPE;
diff --git a/av1/decoder/obu.c b/av1/decoder/obu.c
index 6a6944c..c08d4d5 100644
--- a/av1/decoder/obu.c
+++ b/av1/decoder/obu.c
@@ -318,10 +318,10 @@
return header_size + tg_payload_size;
}
-static void read_metadata_private_data(const uint8_t *data, size_t sz) {
+static void read_metadata_itut_t35(const uint8_t *data, size_t sz) {
+ struct aom_read_bit_buffer rb = { data, data + sz, 0, NULL, NULL };
for (size_t i = 0; i < sz; i++) {
- mem_get_le16(data);
- data += 2;
+ aom_rb_read_literal(&rb, 8);
}
}
@@ -421,19 +421,23 @@
}
static size_t read_metadata(const uint8_t *data, size_t sz) {
- if (sz < 2) return sz; // Invalid data size.
- const OBU_METADATA_TYPE metadata_type = (OBU_METADATA_TYPE)mem_get_le16(data);
-
- if (metadata_type == OBU_METADATA_TYPE_PRIVATE_DATA) {
- read_metadata_private_data(data + 2, sz - 2);
+ size_t type_length;
+ uint64_t type_value;
+ OBU_METADATA_TYPE metadata_type;
+ if (aom_uleb_decode(data, sz, &type_value, &type_length) < 0) {
+ return sz;
+ }
+ metadata_type = (OBU_METADATA_TYPE)type_value;
+ if (metadata_type == OBU_METADATA_TYPE_ITUT_T35) {
+ read_metadata_itut_t35(data + type_length, sz - type_length);
} else if (metadata_type == OBU_METADATA_TYPE_HDR_CLL) {
- read_metadata_hdr_cll(data + 2, sz - 2);
+ read_metadata_hdr_cll(data + type_length, sz - type_length);
} else if (metadata_type == OBU_METADATA_TYPE_HDR_MDCV) {
- read_metadata_hdr_mdcv(data + 2, sz - 2);
+ read_metadata_hdr_mdcv(data + type_length, sz - type_length);
} else if (metadata_type == OBU_METADATA_TYPE_SCALABILITY) {
- read_metadata_scalability(data + 2, sz - 2);
+ read_metadata_scalability(data + type_length, sz - type_length);
} else if (metadata_type == OBU_METADATA_TYPE_TIMECODE) {
- read_metadata_timecode(data + 2, sz - 2);
+ read_metadata_timecode(data + type_length, sz - type_length);
}
return sz;