Use UL database for all metadata ULs
authorSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 7 Apr 2009 13:19:29 +0000 (15:19 +0200)
committerSebastian Dröge <sebastian.droege@collabora.co.uk>
Tue, 7 Apr 2009 13:20:10 +0000 (15:20 +0200)
gst/mxf/mxfmetadata.c
gst/mxf/mxful.c
gst/mxf/mxful.h

index b42dfc0..81a89e0 100644 (file)
@@ -397,30 +397,18 @@ mxf_metadata_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   GList *ret = NULL;
   MXFLocalTag *t;
   MXFMetadataClass *klass;
-  static const guint8 metadata_key[] = {
-    0x06, 0x0e, 0x2b, 0x34, 0x02, 0x53, 0x01, 0x01,
-    0x0d, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 instance_uid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 generation_uid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
 
   g_return_val_if_fail (MXF_IS_METADATA (self), NULL);
   klass = MXF_METADATA_GET_CLASS (self);
 
   /* Last element contains the metadata key */
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, metadata_key, 16);
+  memcpy (&t->ul, MXF_UL (METADATA), 16);
   GST_WRITE_UINT16_BE (&t->ul.u[13], klass->type);
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &instance_uid_ul, 16);
+  memcpy (&t->ul, MXF_UL (INSTANCE_UID), 16);
   t->size = 16;
   t->data = g_slice_alloc (16);
   t->g_slice = TRUE;
@@ -430,7 +418,7 @@ mxf_metadata_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (!mxf_uuid_is_zero (&self->parent.generation_uid)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &generation_uid_ul, 16);
+    memcpy (&t->ul, MXF_UL (GENERATION_UID), 16);
     t->size = 16;
     t->data = g_slice_alloc (16);
     t->g_slice = TRUE;
@@ -883,45 +871,9 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
       (m, primer);
   MXFLocalTag *t;
   guint i;
-  static const guint8 last_modified_date_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x10, 0x02, 0x04, 0x00, 0x00
-  };
-  static const guint8 version_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x03, 0x01, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00
-  };
-  static const guint8 object_model_version_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x03, 0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 primary_package_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x06, 0x01, 0x01, 0x04, 0x01, 0x08, 0x00, 0x00
-  };
-  static const guint8 identifications_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x06, 0x04, 0x00, 0x00
-  };
-  static const guint8 content_storage_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x02, 0x01, 0x00, 0x00
-  };
-  static const guint8 operational_pattern_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 essence_containers_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00
-  };
-  static const guint8 dm_schemes_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x02, 0x02, 0x10, 0x02, 0x02, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &last_modified_date_ul, 16);
+  memcpy (&t->ul, MXF_UL (LAST_MODIFIED_DATE), 16);
   t->size = 8;
   t->data = g_slice_alloc (8);
   t->g_slice = TRUE;
@@ -930,7 +882,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &version_ul, 16);
+  memcpy (&t->ul, MXF_UL (VERSION), 16);
   t->size = 2;
   t->data = g_slice_alloc (2);
   t->g_slice = TRUE;
@@ -940,7 +892,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (self->object_model_version) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &object_model_version_ul, 16);
+    memcpy (&t->ul, MXF_UL (OBJECT_MODEL_VERSION), 16);
     t->size = 4;
     t->data = g_slice_alloc (4);
     t->g_slice = TRUE;
@@ -951,7 +903,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (!mxf_uuid_is_zero (&self->primary_package_uid)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &primary_package_ul, 16);
+    memcpy (&t->ul, MXF_UL (PRIMARY_PACKAGE), 16);
     t->size = 16;
     t->data = g_slice_alloc (16);
     t->g_slice = TRUE;
@@ -961,7 +913,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   }
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &identifications_ul, 16);
+  memcpy (&t->ul, MXF_UL (IDENTIFICATIONS), 16);
   t->size = 8 + 16 * self->n_identifications;
   t->data = g_slice_alloc0 (t->size);
   t->g_slice = TRUE;
@@ -978,7 +930,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &content_storage_ul, 16);
+  memcpy (&t->ul, MXF_UL (CONTENT_STORAGE), 16);
   t->size = 16;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -988,7 +940,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &operational_pattern_ul, 16);
+  memcpy (&t->ul, MXF_UL (OPERATIONAL_PATTERN), 16);
   t->size = 16;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -997,7 +949,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &essence_containers_ul, 16);
+  memcpy (&t->ul, MXF_UL (ESSENCE_CONTAINERS), 16);
   t->size = 8 + 16 * self->n_essence_containers;
   t->data = g_slice_alloc0 (t->size);
   t->g_slice = TRUE;
@@ -1011,7 +963,7 @@ mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (self->dm_schemes) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &dm_schemes_ul, 16);
+    memcpy (&t->ul, MXF_UL (DM_SCHEMES), 16);
     t->size = 8 + 16 * self->n_dm_schemes;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -1237,42 +1189,10 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_identification_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 company_name_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00
-  };
-  static const guint8 product_name_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x03, 0x01, 0x00, 0x00
-  };
-  static const guint8 product_version_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 version_string_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x05, 0x01, 0x00, 0x00
-  };
-  static const guint8 product_uid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x07, 0x00, 0x00, 0x00
-  };
-  static const guint8 modification_date_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x10, 0x02, 0x03, 0x00, 0x00
-  };
-  static const guint8 toolkit_version_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x0A, 0x00, 0x00, 0x00
-  };
-  static const guint8 platform_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x07, 0x01, 0x06, 0x01, 0x00, 0x00
-  };
 
   if (self->company_name) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &company_name_ul, 16);
+    memcpy (&t->ul, MXF_UL (COMPANY_NAME), 16);
     t->data = mxf_utf8_to_utf16 (self->company_name, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x3c01, &t->ul);
     ret = g_list_prepend (ret, t);
@@ -1280,7 +1200,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (self->product_name) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &product_name_ul, 16);
+    memcpy (&t->ul, MXF_UL (PRODUCT_NAME), 16);
     t->data = mxf_utf8_to_utf16 (self->product_name, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x3c02, &t->ul);
     ret = g_list_prepend (ret, t);
@@ -1288,7 +1208,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (!mxf_product_version_is_valid (&self->product_version)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &product_version_ul, 16);
+    memcpy (&t->ul, MXF_UL (PRODUCT_VERSION), 16);
     t->size = 10;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -1299,7 +1219,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (self->version_string) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &version_string_ul, 16);
+    memcpy (&t->ul, MXF_UL (VERSION_STRING), 16);
     t->data = mxf_utf8_to_utf16 (self->version_string, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x3c04, &t->ul);
     ret = g_list_prepend (ret, t);
@@ -1307,7 +1227,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (!mxf_uuid_is_zero (&self->product_uid)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &product_uid_ul, 16);
+    memcpy (&t->ul, MXF_UL (PRODUCT_UID), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -1318,7 +1238,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (!mxf_timestamp_is_unknown (&self->modification_date)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &modification_date_ul, 16);
+    memcpy (&t->ul, MXF_UL (MODIFICATION_DATE), 16);
     t->size = 8;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -1329,7 +1249,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (!mxf_product_version_is_valid (&self->toolkit_version)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &toolkit_version_ul, 16);
+    memcpy (&t->ul, MXF_UL (TOOLKIT_VERSION), 16);
     t->size = 10;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -1340,7 +1260,7 @@ mxf_metadata_identification_write_tags (MXFMetadataBase * m,
 
   if (self->platform) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &platform_ul, 16);
+    memcpy (&t->ul, MXF_UL (PLATFORM), 16);
     t->data = mxf_utf8_to_utf16 (self->platform, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x3c08, &t->ul);
     ret = g_list_prepend (ret, t);
@@ -1599,18 +1519,10 @@ mxf_metadata_content_storage_write_tags (MXFMetadataBase * m,
       (mxf_metadata_content_storage_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
   guint i;
-  static const guint8 packages_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x05, 0x01, 0x00, 0x00
-  };
-  static const guint8 essence_container_data_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x05, 0x02, 0x00, 0x00
-  };
 
   if (self->packages) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &packages_ul, 16);
+    memcpy (&t->ul, MXF_UL (PACKAGES), 16);
     t->size = 8 + 16 * self->n_packages;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -1630,7 +1542,7 @@ mxf_metadata_content_storage_write_tags (MXFMetadataBase * m,
 
   if (self->essence_container_data) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &essence_container_data_ul, 16);
+    memcpy (&t->ul, MXF_UL (ESSENCE_CONTAINER_DATA), 16);
     t->size = 8 + 16 * self->n_essence_container_data;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -1811,21 +1723,9 @@ mxf_metadata_essence_container_data_write_tags (MXFMetadataBase * m,
       (mxf_metadata_essence_container_data_parent_class)->write_tags (m,
       primer);
   MXFLocalTag *t;
-  static const guint8 linked_package_uid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 body_sid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 index_sid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &linked_package_uid_ul, 16);
+  memcpy (&t->ul, MXF_UL (LINKED_PACKAGE_UID), 16);
   t->size = 32;
   t->data = g_slice_alloc0 (32);
   t->g_slice = TRUE;
@@ -1835,7 +1735,7 @@ mxf_metadata_essence_container_data_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &body_sid_ul, 16);
+  memcpy (&t->ul, MXF_UL (BODY_SID), 16);
   t->size = 4;
   t->data = g_slice_alloc (4);
   t->g_slice = TRUE;
@@ -1845,7 +1745,7 @@ mxf_metadata_essence_container_data_write_tags (MXFMetadataBase * m,
 
   if (self->index_sid) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &index_sid_ul, 16);
+    memcpy (&t->ul, MXF_UL (INDEX_SID), 16);
     t->size = 4;
     t->data = g_slice_alloc (4);
     t->g_slice = TRUE;
@@ -2088,29 +1988,9 @@ mxf_metadata_generic_package_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_generic_package_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 package_uid_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x01, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 name_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 package_creation_date_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x10, 0x01, 0x03, 0x00, 0x00
-  };
-  static const guint8 package_modified_date_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x10, 0x02, 0x05, 0x00, 0x00
-  };
-  static const guint8 tracks_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x06, 0x05, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &package_uid_ul, 16);
+  memcpy (&t->ul, MXF_UL (PACKAGE_UID), 16);
   t->size = 32;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2120,14 +2000,14 @@ mxf_metadata_generic_package_write_tags (MXFMetadataBase * m,
 
   if (self->name) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &name_ul, 16);
+    memcpy (&t->ul, MXF_UL (PACKAGE_NAME), 16);
     t->data = mxf_utf8_to_utf16 (self->name, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x4402, &t->ul);
     ret = g_list_prepend (ret, t);
   }
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &package_creation_date_ul, 16);
+  memcpy (&t->ul, MXF_UL (PACKAGE_CREATION_DATE), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2136,7 +2016,7 @@ mxf_metadata_generic_package_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &package_modified_date_ul, 16);
+  memcpy (&t->ul, MXF_UL (PACKAGE_MODIFIED_DATE), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2148,7 +2028,7 @@ mxf_metadata_generic_package_write_tags (MXFMetadataBase * m,
     guint i;
 
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &tracks_ul, 16);
+    memcpy (&t->ul, MXF_UL (TRACKS), 16);
     t->size = 8 + 16 * self->n_tracks;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -2462,14 +2342,10 @@ mxf_metadata_source_package_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_source_package_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 descriptor_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x02, 0x03, 0x00, 0x00
-  };
 
   if (self->descriptor) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &descriptor_ul, 16);
+    memcpy (&t->ul, MXF_UL (DESCRIPTOR), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -2647,25 +2523,9 @@ mxf_metadata_track_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
       MXF_METADATA_BASE_CLASS (mxf_metadata_track_parent_class)->write_tags (m,
       primer);
   MXFLocalTag *t;
-  static const guint8 track_id_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x01, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 track_number_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x01, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 track_name_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x01, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 sequence_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x02, 0x04, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &track_id_ul, 16);
+  memcpy (&t->ul, MXF_UL (TRACK_ID), 16);
   t->size = 4;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2674,7 +2534,7 @@ mxf_metadata_track_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &track_number_ul, 16);
+  memcpy (&t->ul, MXF_UL (TRACK_NUMBER), 16);
   t->size = 4;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2684,14 +2544,14 @@ mxf_metadata_track_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (self->track_name) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &track_name_ul, 16);
+    memcpy (&t->ul, MXF_UL (TRACK_NAME), 16);
     t->data = mxf_utf8_to_utf16 (self->track_name, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x4802, &t->ul);
     ret = g_list_prepend (ret, t);
   }
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &sequence_ul, 16);
+  memcpy (&t->ul, MXF_UL (SEQUENCE), 16);
   t->size = 16;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2724,33 +2584,23 @@ mxf_metadata_track_class_init (MXFMetadataTrackClass * klass)
 /* SMPTE RP224 */
 static const struct
 {
-  guint8 ul[16];
-  MXFMetadataTrackType type;
+  const MXFUL *ul;
+  const MXFMetadataTrackType type;
 } mxf_metadata_track_identifier[] = {
-  { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
-          0x01, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00},
-      MXF_METADATA_TRACK_TIMECODE_12M_INACTIVE}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01,
-          0x02, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_TIMECODE_12M_ACTIVE}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01,
-          0x03, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_TIMECODE_309M}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01,
-          0x10, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_METADATA}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02,
-          0x01, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_PICTURE_ESSENCE}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02,
-          0x02, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_SOUND_ESSENCE}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02,
-          0x03, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_DATA_ESSENCE}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x03,
-          0x01, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_AUXILIARY_DATA}, { {
-  0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x03,
-          0x02, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_PARSED_TEXT},
+  {
+  MXF_UL (TRACK_TIMECODE_12M_INACTIVE),
+        MXF_METADATA_TRACK_TIMECODE_12M_INACTIVE}, {
+  MXF_UL (TRACK_TIMECODE_12M_ACTIVE), MXF_METADATA_TRACK_TIMECODE_12M_ACTIVE}, {
+  MXF_UL (TRACK_TIMECODE_309M), MXF_METADATA_TRACK_TIMECODE_309M}, {
+  MXF_UL (TRACK_METADATA), MXF_METADATA_TRACK_METADATA}, {
+  MXF_UL (TRACK_PICTURE_ESSENCE), MXF_METADATA_TRACK_PICTURE_ESSENCE}, {
+  MXF_UL (TRACK_SOUND_ESSENCE), MXF_METADATA_TRACK_SOUND_ESSENCE}, {
+  MXF_UL (TRACK_DATA_ESSENCE), MXF_METADATA_TRACK_DATA_ESSENCE}, {
+  MXF_UL (TRACK_AUXILIARY_DATA), MXF_METADATA_TRACK_AUXILIARY_DATA}, {
+  MXF_UL (TRACK_PARSED_TEXT), MXF_METADATA_TRACK_PARSED_TEXT},
       /* Avid video? */
-  { {
-  0x80, 0x7d, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f, 0x6f, 0x3c, 0x8c, 0xe1,
-          0x6c, 0xef, 0x11, 0xd2}, MXF_METADATA_TRACK_PICTURE_ESSENCE}
+  {
+  MXF_UL (TRACK_AVID_PICTURE_ESSENCE), MXF_METADATA_TRACK_PICTURE_ESSENCE}
 };
 
 MXFMetadataTrackType
@@ -2759,8 +2609,8 @@ mxf_metadata_track_identifier_parse (const MXFUL * track_identifier)
   guint i;
 
   for (i = 0; i < G_N_ELEMENTS (mxf_metadata_track_identifier); i++)
-    if (memcmp (&mxf_metadata_track_identifier[i].ul, &track_identifier->u,
-            16) == 0)
+    if (mxf_ul_is_equal (mxf_metadata_track_identifier[i].ul,
+            track_identifier) == 0)
       return mxf_metadata_track_identifier[i].type;
 
   return MXF_METADATA_TRACK_UNKNOWN;
@@ -2773,7 +2623,7 @@ mxf_metadata_track_identifier_get (MXFMetadataTrackType type)
 
   for (i = 0; i < G_N_ELEMENTS (mxf_metadata_track_identifier); i++)
     if (mxf_metadata_track_identifier[i].type == type)
-      return (const MXFUL *) &mxf_metadata_track_identifier[i].ul;
+      return mxf_metadata_track_identifier[i].ul;
 
   return NULL;
 }
@@ -2843,17 +2693,9 @@ mxf_metadata_timeline_track_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_timeline_track_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 edit_rate_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x30, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 origin_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &edit_rate_ul, 16);
+  memcpy (&t->ul, MXF_UL (EDIT_RATE), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2863,7 +2705,7 @@ mxf_metadata_timeline_track_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &origin_ul, 16);
+  memcpy (&t->ul, MXF_UL (ORIGIN), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2958,17 +2800,9 @@ mxf_metadata_event_track_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_event_track_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 event_edit_rate_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x30, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 event_origin_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x07, 0x02, 0x01, 0x03, 0x01, 0x0B, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &event_edit_rate_ul, 16);
+  memcpy (&t->ul, MXF_UL (EVENT_EDIT_RATE), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -2978,7 +2812,7 @@ mxf_metadata_event_track_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &event_origin_ul, 16);
+  memcpy (&t->ul, MXF_UL (EVENT_ORIGIN), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3191,21 +3025,9 @@ mxf_metadata_sequence_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
       MXF_METADATA_BASE_CLASS (mxf_metadata_sequence_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 data_definition_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 duration_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00
-  };
-  static const guint8 structural_components_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x06, 0x09, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &data_definition_ul, 16);
+  memcpy (&t->ul, MXF_UL (DATA_DEFINITION), 16);
   t->size = 16;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3214,7 +3036,7 @@ mxf_metadata_sequence_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &duration_ul, 16);
+  memcpy (&t->ul, MXF_UL (DURATION), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3225,7 +3047,7 @@ mxf_metadata_sequence_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
   if (self->structural_components) {
     guint i;
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &structural_components_ul, 16);
+    memcpy (&t->ul, MXF_UL (STRUCTURAL_COMPONENTS), 16);
     t->size = 8 + 16 * self->n_structural_components;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -3342,17 +3164,9 @@ mxf_metadata_structural_component_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_structural_component_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 data_definition_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 duration_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &data_definition_ul, 16);
+  memcpy (&t->ul, MXF_UL (DATA_DEFINITION), 16);
   t->size = 16;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3361,7 +3175,7 @@ mxf_metadata_structural_component_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &duration_ul, 16);
+  memcpy (&t->ul, MXF_UL (DURATION), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3466,21 +3280,9 @@ mxf_metadata_timecode_component_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_timecode_component_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 rounded_timecode_base_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x04, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00
-  };
-  static const guint8 start_timecode_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x03, 0x01, 0x05, 0x00, 0x00
-  };
-  static const guint8 drop_frame_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x04, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &rounded_timecode_base_ul, 16);
+  memcpy (&t->ul, MXF_UL (ROUNDED_TIMECODE_BASE), 16);
   t->size = 2;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3489,7 +3291,7 @@ mxf_metadata_timecode_component_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &start_timecode_ul, 16);
+  memcpy (&t->ul, MXF_UL (START_TIMECODE), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3498,7 +3300,7 @@ mxf_metadata_timecode_component_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &drop_frame_ul, 16);
+  memcpy (&t->ul, MXF_UL (DROP_FRAME), 16);
   t->size = 1;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3650,21 +3452,9 @@ mxf_metadata_source_clip_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_source_clip_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 start_position_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00
-  };
-  static const guint8 source_package_id_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 source_track_id_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x03, 0x02, 0x00, 0x00, 0x00
-  };
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &start_position_ul, 16);
+  memcpy (&t->ul, MXF_UL (START_POSITION), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3673,7 +3463,7 @@ mxf_metadata_source_clip_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &source_package_id_ul, 16);
+  memcpy (&t->ul, MXF_UL (SOURCE_PACKAGE_ID), 16);
   t->size = 32;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3682,7 +3472,7 @@ mxf_metadata_source_clip_write_tags (MXFMetadataBase * m,
   ret = g_list_prepend (ret, t);
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &source_track_id_ul, 16);
+  memcpy (&t->ul, MXF_UL (SOURCE_TRACK_ID), 16);
   t->size = 4;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -3830,16 +3620,12 @@ mxf_metadata_dm_source_clip_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_dm_source_clip_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 track_ids_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x01, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00
-  };
 
   if (self->track_ids) {
     guint i;
 
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &track_ids_ul, 16);
+    memcpy (&t->ul, MXF_UL (DM_SOURCECLIP_TRACK_IDS), 16);
     t->size = 8 + 4 * self->n_track_ids;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4057,26 +3843,10 @@ mxf_metadata_dm_segment_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
       MXF_METADATA_BASE_CLASS (mxf_metadata_dm_segment_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 event_start_position_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x07, 0x02, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00
-  };
-  static const guint8 event_comment_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x30, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 track_ids_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 dm_framework_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x06, 0x01, 0x01, 0x04, 0x02, 0x0C, 0x00, 0x00
-  };
 
   if (self->event_start_position != -1) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &event_start_position_ul, 16);
+    memcpy (&t->ul, MXF_UL (EVENT_START_POSITION), 16);
     t->size = 8;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4087,7 +3857,7 @@ mxf_metadata_dm_segment_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (self->event_comment) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &event_comment_ul, 16);
+    memcpy (&t->ul, MXF_UL (EVENT_COMMENT), 16);
     t->data = mxf_utf8_to_utf16 (self->event_comment, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x0602, &t->ul);
     ret = g_list_prepend (ret, t);
@@ -4097,7 +3867,7 @@ mxf_metadata_dm_segment_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
     guint i;
 
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &track_ids_ul, 16);
+    memcpy (&t->ul, MXF_UL (DM_SEGMENT_TRACK_IDS), 16);
     t->size = 8 + 4 * self->n_track_ids;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4111,7 +3881,7 @@ mxf_metadata_dm_segment_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
 
   if (self->dm_framework) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &dm_framework_ul, 16);
+    memcpy (&t->ul, MXF_UL (DM_FRAMEWORK), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4297,16 +4067,12 @@ mxf_metadata_generic_descriptor_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_generic_descriptor_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 locators_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x06, 0x03, 0x00, 0x00
-  };
 
   if (self->locators) {
     guint i;
 
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &locators_ul, 16);
+    memcpy (&t->ul, MXF_UL (LOCATORS), 16);
     t->size = 8 + 16 * self->n_locators;;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -4453,30 +4219,10 @@ mxf_metadata_file_descriptor_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_file_descriptor_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 linked_track_id_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x06, 0x01, 0x01, 0x03, 0x05, 0x00, 0x00, 0x00
-  };
-  static const guint8 sample_rate_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 container_duration_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x06, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 essence_container_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x01, 0x02, 0x00, 0x00
-  };
-  static const guint8 codec_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x06, 0x01, 0x01, 0x04, 0x01, 0x03, 0x00, 0x00
-  };
 
   if (self->linked_track_id) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &linked_track_id_ul, 16);
+    memcpy (&t->ul, MXF_UL (LINKED_TRACK_ID), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4486,7 +4232,7 @@ mxf_metadata_file_descriptor_write_tags (MXFMetadataBase * m,
   }
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &sample_rate_ul, 16);
+  memcpy (&t->ul, MXF_UL (SAMPLE_RATE), 16);
   t->size = 8;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -4497,7 +4243,7 @@ mxf_metadata_file_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->container_duration > 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &container_duration_ul, 16);
+    memcpy (&t->ul, MXF_UL (CONTAINER_DURATION), 16);
     t->size = 8;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4507,7 +4253,7 @@ mxf_metadata_file_descriptor_write_tags (MXFMetadataBase * m,
   }
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &essence_container_ul, 16);
+  memcpy (&t->ul, MXF_UL (ESSENCE_CONTAINER), 16);
   t->size = 16;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -4517,7 +4263,7 @@ mxf_metadata_file_descriptor_write_tags (MXFMetadataBase * m,
 
   if (!mxf_ul_is_zero (&self->codec)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &codec_ul, 16);
+    memcpy (&t->ul, MXF_UL (CODEC), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4861,106 +4607,10 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
       (mxf_metadata_generic_picture_essence_descriptor_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 signal_standard_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 frame_layout_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 stored_width_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00
-  };
-  static const guint8 stored_height_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 stored_f2_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x03, 0x02, 0x08, 0x00, 0x00, 0x00
-  };
-  static const guint8 sampled_width_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00
-  };
-  static const guint8 sampled_height_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x07, 0x00, 0x00, 0x00
-  };
-  static const guint8 sampled_x_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x09, 0x00, 0x00, 0x00
-  };
-  static const guint8 sampled_y_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x0A, 0x00, 0x00, 0x00
-  };
-  static const guint8 display_height_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x0B, 0x00, 0x00, 0x00
-  };
-  static const guint8 display_width_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x00, 0x00
-  };
-  static const guint8 display_x_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x0D, 0x00, 0x00, 0x00
-  };
-  static const guint8 display_y_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x0E, 0x00, 0x00, 0x00
-  };
-  static const guint8 display_f2_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x03, 0x02, 0x07, 0x00, 0x00, 0x00
-  };
-  static const guint8 aspect_ratio_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 active_format_descriptor_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x03, 0x02, 0x09, 0x00, 0x00, 0x00
-  };
-  static const guint8 video_line_map_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x03, 0x02, 0x05, 0x00, 0x00, 0x00
-  };
-  static const guint8 alpha_transparency_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x05, 0x20, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 capture_gamma_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00
-  };
-  static const guint8 image_alignment_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x18, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 image_start_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x18, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 image_end_offset_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x18, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 field_dominance_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x03, 0x01, 0x06, 0x00, 0x00, 0x00
-  };
-  static const guint8 picture_essence_coding_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
 
   if (self->signal_standard != 1) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &signal_standard_ul, 16);
+    memcpy (&t->ul, MXF_UL (SIGNAL_STANDARD), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4971,7 +4621,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->frame_layout != 255) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &frame_layout_ul, 16);
+    memcpy (&t->ul, MXF_UL (FRAME_LAYOUT), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4982,7 +4632,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->stored_width != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &stored_width_ul, 16);
+    memcpy (&t->ul, MXF_UL (STORED_WIDTH), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -4993,7 +4643,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->stored_height != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &stored_height_ul, 16);
+    memcpy (&t->ul, MXF_UL (STORED_HEIGHT), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5004,7 +4654,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->stored_f2_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &stored_f2_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (STORED_F2_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5015,7 +4665,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->sampled_width != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &sampled_width_ul, 16);
+    memcpy (&t->ul, MXF_UL (SAMPLED_WIDTH), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5026,7 +4676,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->sampled_height != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &sampled_height_ul, 16);
+    memcpy (&t->ul, MXF_UL (SAMPLED_HEIGHT), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5037,7 +4687,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->sampled_x_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &sampled_x_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (SAMPLED_X_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5048,7 +4698,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->sampled_y_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &sampled_y_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (SAMPLED_Y_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5059,7 +4709,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->display_height != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &display_height_ul, 16);
+    memcpy (&t->ul, MXF_UL (DISPLAY_HEIGHT), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5070,7 +4720,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->display_width != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &display_width_ul, 16);
+    memcpy (&t->ul, MXF_UL (DISPLAY_WIDTH), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5081,7 +4731,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->display_x_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &display_x_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (DISPLAY_X_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5092,7 +4742,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->display_y_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &display_y_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (DISPLAY_Y_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5103,7 +4753,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->display_f2_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &display_f2_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (DISPLAY_F2_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5114,7 +4764,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->aspect_ratio.n != 0 && self->aspect_ratio.d != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &aspect_ratio_ul, 16);
+    memcpy (&t->ul, MXF_UL (ASPECT_RATIO), 16);
     t->size = 8;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5126,7 +4776,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->active_format_descriptor != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &active_format_descriptor_ul, 16);
+    memcpy (&t->ul, MXF_UL (ACTIVE_FORMAT_DESCRIPTOR), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5137,7 +4787,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->video_line_map[0] != 0 || self->video_line_map[1] != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &video_line_map_ul, 16);
+    memcpy (&t->ul, MXF_UL (VIDEO_LINE_MAP), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5149,7 +4799,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->alpha_transparency != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &alpha_transparency_ul, 16);
+    memcpy (&t->ul, MXF_UL (ALPHA_TRANSPARENCY), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5160,7 +4810,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (!mxf_ul_is_zero (&self->capture_gamma)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &capture_gamma_ul, 16);
+    memcpy (&t->ul, MXF_UL (CAPTURE_GAMMA), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5171,7 +4821,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->image_alignment_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &image_alignment_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (IMAGE_ALIGNMENT_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5182,7 +4832,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->image_start_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &image_start_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (IMAGE_START_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5193,7 +4843,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->image_end_offset != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &image_end_offset_ul, 16);
+    memcpy (&t->ul, MXF_UL (IMAGE_END_OFFSET), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5204,7 +4854,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->field_dominance != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &field_dominance_ul, 16);
+    memcpy (&t->ul, MXF_UL (FIELD_DOMINANCE), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5215,7 +4865,7 @@ mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (!mxf_ul_is_zero (&self->picture_essence_coding)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &picture_essence_coding_ul, 16);
+    memcpy (&t->ul, MXF_UL (PICTURE_ESSENCE_CODING), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5503,42 +5153,10 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
       (mxf_metadata_generic_sound_essence_descriptor_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 audio_sampling_rate_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00
-  };
-  static const guint8 locked_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x04, 0x02, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 audio_ref_level_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00
-  };
-  static const guint8 electro_spatial_formulation_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 channel_count_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x02, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 quantization_bits_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 dial_norm_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 sound_essence_compression_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
 
   if (self->audio_sampling_rate.d && self->audio_sampling_rate.n) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &audio_sampling_rate_ul, 16);
+    memcpy (&t->ul, MXF_UL (AUDIO_SAMPLING_RATE), 16);
     t->size = 8;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5549,7 +5167,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
   }
 
   t = g_slice_new0 (MXFLocalTag);
-  memcpy (&t->ul, &locked_ul, 16);
+  memcpy (&t->ul, MXF_UL (LOCKED), 16);
   t->size = 1;
   t->data = g_slice_alloc (t->size);
   t->g_slice = TRUE;
@@ -5559,7 +5177,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->audio_ref_level) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &audio_ref_level_ul, 16);
+    memcpy (&t->ul, MXF_UL (AUDIO_REF_LEVEL), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5570,7 +5188,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->electro_spatial_formulation != 255) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &electro_spatial_formulation_ul, 16);
+    memcpy (&t->ul, MXF_UL (ELECTRO_SPATIAL_FORMULATION), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5581,7 +5199,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->channel_count) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &channel_count_ul, 16);
+    memcpy (&t->ul, MXF_UL (CHANNEL_COUNT), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5592,7 +5210,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->quantization_bits) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &quantization_bits_ul, 16);
+    memcpy (&t->ul, MXF_UL (QUANTIZATION_BITS), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5603,7 +5221,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->dial_norm != 0) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &dial_norm_ul, 16);
+    memcpy (&t->ul, MXF_UL (DIAL_NORM), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5614,7 +5232,7 @@ mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (!mxf_ul_is_zero (&self->sound_essence_compression)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &sound_essence_compression_ul, 16);
+    memcpy (&t->ul, MXF_UL (SOUND_ESSENCE_COMPRESSION), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5865,50 +5483,10 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
       (mxf_metadata_cdci_picture_essence_descriptor_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 component_depth_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x05, 0x03, 0x0A, 0x00, 0x00, 0x00
-  };
-  static const guint8 horizontal_subsampling_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x05, 0x00, 0x00, 0x00
-  };
-  static const guint8 vertical_subsampling_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x05, 0x01, 0x10, 0x00, 0x00, 0x00
-  };
-  static const guint8 color_siting_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x01, 0x06, 0x00, 0x00, 0x00
-  };
-  static const guint8 reversed_byte_order_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x03, 0x01, 0x02, 0x01, 0x0A, 0x00, 0x00, 0x00
-  };
-  static const guint8 padding_bits_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00
-  };
-  static const guint8 alpha_sample_depth_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x05, 0x03, 0x07, 0x00, 0x00, 0x00
-  };
-  static const guint8 black_ref_level_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x03, 0x03, 0x00, 0x00, 0x00
-  };
-  static const guint8 white_ref_level_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x04, 0x01, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00
-  };
-  static const guint8 color_range_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x05, 0x03, 0x05, 0x00, 0x00, 0x00
-  };
 
   if (self->component_depth) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &component_depth_ul, 16);
+    memcpy (&t->ul, MXF_UL (COMPONENT_DEPTH), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5919,7 +5497,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->horizontal_subsampling) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &horizontal_subsampling_ul, 16);
+    memcpy (&t->ul, MXF_UL (HORIZONTAL_SUBSAMPLING), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5930,7 +5508,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->vertical_subsampling) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &vertical_subsampling_ul, 16);
+    memcpy (&t->ul, MXF_UL (VERTICAL_SUBSAMPLING), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5941,7 +5519,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->color_siting != 0xff) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &color_siting_ul, 16);
+    memcpy (&t->ul, MXF_UL (COLOR_SITING), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5952,7 +5530,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->reversed_byte_order) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &reversed_byte_order_ul, 16);
+    memcpy (&t->ul, MXF_UL (REVERSED_BYTE_ORDER), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5963,7 +5541,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->padding_bits) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &padding_bits_ul, 16);
+    memcpy (&t->ul, MXF_UL (PADDING_BITS), 16);
     t->size = 2;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5974,7 +5552,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->alpha_sample_depth) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &alpha_sample_depth_ul, 16);
+    memcpy (&t->ul, MXF_UL (ALPHA_SAMPLE_DEPTH), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5985,7 +5563,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->black_ref_level) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &black_ref_level_ul, 16);
+    memcpy (&t->ul, MXF_UL (BLACK_REF_LEVEL), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -5996,7 +5574,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->white_ref_level) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &white_ref_level_ul, 16);
+    memcpy (&t->ul, MXF_UL (WHITE_REF_LEVEL), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6007,7 +5585,7 @@ mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->color_range) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &color_range_ul, 16);
+    memcpy (&t->ul, MXF_UL (COLOR_RANGE), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6207,34 +5785,10 @@ mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
       (mxf_metadata_rgba_picture_essence_descriptor_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 component_max_ref_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x05, 0x03, 0x0B, 0x00, 0x00, 0x00
-  };
-  static const guint8 component_min_ref_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x05, 0x03, 0x0C, 0x00, 0x00, 0x00
-  };
-  static const guint8 alpha_max_ref_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x05, 0x03, 0x0D, 0x00, 0x00, 0x00
-  };
-  static const guint8 alpha_min_ref_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x05, 0x03, 0x0E, 0x00, 0x00, 0x00
-  };
-  static const guint8 scanning_direction_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
-    0x04, 0x01, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00
-  };
-  static const guint8 pixel_layout_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x04, 0x01, 0x05, 0x03, 0x06, 0x00, 0x00, 0x00
-  };
 
   if (self->component_max_ref != 255) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &component_max_ref_ul, 16);
+    memcpy (&t->ul, MXF_UL (COMPONENT_MAX_REF), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6245,7 +5799,7 @@ mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->component_min_ref) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &component_min_ref_ul, 16);
+    memcpy (&t->ul, MXF_UL (COMPONENT_MIN_REF), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6256,7 +5810,7 @@ mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->alpha_max_ref != 255) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &alpha_max_ref_ul, 16);
+    memcpy (&t->ul, MXF_UL (ALPHA_MAX_REF), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6267,7 +5821,7 @@ mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->alpha_min_ref) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &alpha_min_ref_ul, 16);
+    memcpy (&t->ul, MXF_UL (ALPHA_MIN_REF), 16);
     t->size = 4;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6278,7 +5832,7 @@ mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->scanning_direction) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &scanning_direction_ul, 16);
+    memcpy (&t->ul, MXF_UL (SCANNING_DIRECTION), 16);
     t->size = 1;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6289,7 +5843,7 @@ mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
 
   if (self->pixel_layout) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &pixel_layout_ul, 16);
+    memcpy (&t->ul, MXF_UL (PIXEL_LAYOUT), 16);
     t->size = 2 * self->n_pixel_layout + 2;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -6404,14 +5958,10 @@ mxf_metadata_generic_data_essence_descriptor_write_tags (MXFMetadataBase * m,
       (mxf_metadata_generic_data_essence_descriptor_parent_class)->write_tags
       (m, primer);
   MXFLocalTag *t;
-  static const guint8 data_essence_coding_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x03,
-    0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00
-  };
 
   if (!mxf_ul_is_zero (&self->data_essence_coding)) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &data_essence_coding_ul, 16);
+    memcpy (&t->ul, MXF_UL (DATA_ESSENCE_CODING), 16);
     t->size = 16;
     t->data = g_slice_alloc (t->size);
     t->g_slice = TRUE;
@@ -6598,16 +6148,12 @@ mxf_metadata_multiple_descriptor_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_multiple_descriptor_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 sub_descriptors_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
-    0x06, 0x01, 0x01, 0x04, 0x06, 0x0B, 0x00, 0x00
-  };
 
   if (self->sub_descriptors) {
     guint i;
 
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &sub_descriptors_ul, 16);
+    memcpy (&t->ul, MXF_UL (SUB_DESCRIPTORS), 16);
     t->size = 8 + 16 * self->n_sub_descriptors;
     t->data = g_slice_alloc0 (t->size);
     t->g_slice = TRUE;
@@ -6726,14 +6272,10 @@ mxf_metadata_text_locator_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_text_locator_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 locator_name_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
-    0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00
-  };
 
   if (self->locator_name) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &locator_name_ul, 16);
+    memcpy (&t->ul, MXF_UL (LOCATOR_NAME), 16);
     t->data = mxf_utf8_to_utf16 (self->locator_name, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x4101, &t->ul);
     ret = g_list_prepend (ret, t);
@@ -6825,14 +6367,10 @@ mxf_metadata_network_locator_write_tags (MXFMetadataBase * m,
       MXF_METADATA_BASE_CLASS
       (mxf_metadata_network_locator_parent_class)->write_tags (m, primer);
   MXFLocalTag *t;
-  static const guint8 url_string_ul[] = {
-    0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
-    0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00
-  };
 
   if (self->url_string) {
     t = g_slice_new0 (MXFLocalTag);
-    memcpy (&t->ul, &url_string_ul, 16);
+    memcpy (&t->ul, MXF_UL (URL_STRING), 16);
     t->data = mxf_utf8_to_utf16 (self->url_string, &t->size);
     mxf_primer_pack_add_mapping (primer, 0x4001, &t->ul);
     ret = g_list_prepend (ret, t);
index 6ddc8eb..f48cb4d 100644 (file)
@@ -66,7 +66,389 @@ const MXFUL _mxf_ul_table[] = {
           0x4b, 0x46, 0x41, 0x41, 0x00, 0x0d, 0x4d, 0x4f}},
   /* OPERATIONAL_PATTERN_IDENTIFICATION */
   {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
-          0x0d, 0x01, 0x02, 0x01, 0x00,}}
+          0x0d, 0x01, 0x02, 0x01, 0x00,}},
+  /* TRACK_TIMECODE_12M_INACTIVE */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00}},
+  /* TRACK_TIMECODE_12M_ACTIVE */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x01, 0x02, 0x00, 0x00, 0x00}},
+  /* TRACK_TIMECODE_309M */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x01, 0x03, 0x00, 0x00, 0x00}},
+  /* TRACK_METADATA */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x01, 0x10, 0x00, 0x00, 0x00}},
+  /* TRACK_PICTURE_ESSENCE */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x02, 0x01, 0x00, 0x00, 0x00}},
+  /* TRACK_SOUND_ESSENCE */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x02, 0x02, 0x00, 0x00, 0x00}},
+  /* TRACK_DATA_ESSENCE */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00}},
+  /* TRACK_AUXILIARY_DATA */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x03, 0x01, 0x00, 0x00, 0x00}},
+  /* TRACK_PARSED_TEXT */
+  {{0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x02, 0x03, 0x02, 0x00, 0x00, 0x00}},
+  /* TRACK_AVID_PICTURE_ESSENCE */
+  {{0x80, 0x7d, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f,
+          0x6f, 0x3c, 0x8c, 0xe1, 0x6c, 0xef, 0x11, 0xd2}},
+  /** MXF Structural Metadata */
+  /* INSTANCE_UID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x01, 0x01, 0x15, 0x02, 0x00, 0x00, 0x00, 0x00}},
+  /* GENERATION_UID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00}},
+  /* Preface */
+  /* LAST_MODIFIED_DATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x10, 0x02, 0x04, 0x00, 0x00}},
+  /* VERSION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x03, 0x01, 0x02, 0x01, 0x05, 0x00, 0x00, 0x00}},
+  /* OBJECT_MODEL_VERSION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x03, 0x01, 0x02, 0x01, 0x04, 0x00, 0x00, 0x00}},
+  /* PRIMARY_PACKAGE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x06, 0x01, 0x01, 0x04, 0x01, 0x08, 0x00, 0x00}},
+  /* IDENTIFICATIONS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x06, 0x04, 0x00, 0x00}},
+  /* CONTENT_STORAGE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x01, 0x02, 0x02, 0x03, 0x00, 0x00, 0x00, 0x00}},
+  /* ESSENCE_CONTAINERS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x01, 0x02, 0x02, 0x10, 0x02, 0x01, 0x00, 0x00}},
+  /* DM_SCHEMES */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x01, 0x02, 0x02, 0x10, 0x02, 0x02, 0x00, 0x00}},
+  /* Identification */
+  /* COMPANY_NAME */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00}},
+  /* PRODUCT_NAME */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x03, 0x01, 0x00, 0x00}},
+  /* PRODUCT_VERSION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x04, 0x00, 0x00, 0x00}},
+  /* VERSION_STRING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x05, 0x01, 0x00, 0x00}},
+  /* PRODUCT_UID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x07, 0x00, 0x00, 0x00}},
+  /* MODIFICATION_DATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x10, 0x02, 0x03, 0x00, 0x00}},
+  /* TOOLKIT_VERSION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x0A, 0x00, 0x00, 0x00}},
+  /* PLATFORM */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x07, 0x01, 0x06, 0x01, 0x00, 0x00}},
+  /* Content storage */
+  /* PACKAGES */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x05, 0x01, 0x00, 0x00}},
+  /* ESSENCE_CONTAINER_DATA */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x05, 0x02, 0x00, 0x00}},
+  /* Essence container data */
+  /* LINKED_PACKAGE_UID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00}},
+  /* BODY_SID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x01, 0x03, 0x04, 0x04, 0x00, 0x00, 0x00, 0x00}},
+  /* INDEX_SID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x01, 0x03, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00}},
+  /* Generic package */
+  /* PACKAGE_UID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x01, 0x01, 0x15, 0x10, 0x00, 0x00, 0x00, 0x00}},
+  /* PACKAGE_NAME */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x01, 0x03, 0x03, 0x02, 0x01, 0x00, 0x00, 0x00}},
+  /* PACKAGE_CREATION_DATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x10, 0x01, 0x03, 0x00, 0x00}},
+  /* PACKAGE_MODIFIED_DATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x10, 0x02, 0x05, 0x00, 0x00}},
+  /* TRACKS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x06, 0x05, 0x00, 0x00}},
+  /* Source package */
+  /* DESCRIPTOR */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x02, 0x03, 0x00, 0x00}},
+  /* Track */
+  /* TRACK_ID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x01, 0x07, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* TRACK_NUMBER */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x01, 0x04, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00}},
+  /* TRACK_NAME */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x01, 0x07, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00}},
+  /* SEQUENCE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x02, 0x04, 0x00, 0x00}},
+  /* Timeline track */
+  /* EDIT_RATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x30, 0x04, 0x05, 0x00, 0x00, 0x00, 0x00}},
+  /* ORIGIN */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x03, 0x01, 0x03, 0x00, 0x00}},
+  /* Event track */
+  /* EVENT_EDIT_RATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x30, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00}},
+  /* EVENT_ORIGIN */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x07, 0x02, 0x01, 0x03, 0x01, 0x0B, 0x00, 0x00}},
+  /* Sequence & structural component */
+  /* DATA_DEFINITION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00}},
+  /* DURATION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00}},
+  /* STRUCTURAL_COMPONENTS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x06, 0x09, 0x00, 0x00}},
+  /* Timecode component */
+  /* ROUNDED_TIMECODE_BASE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x04, 0x01, 0x01, 0x02, 0x06, 0x00, 0x00}},
+  /* START_TIMECODE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x03, 0x01, 0x05, 0x00, 0x00}},
+  /* DROP_FRAME */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x04, 0x01, 0x01, 0x05, 0x00, 0x00, 0x00}},
+  /* Source clip */
+  /* START_POSITION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00}},
+  /* SOURCE_PACKAGE_ID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x03, 0x01, 0x00, 0x00, 0x00}},
+  /* SOURCE_TRACK_ID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x03, 0x02, 0x00, 0x00, 0x0}},
+  /* DM Source clip */
+  /* DM_SOURCELIP_TRACK_IDS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x01, 0x07, 0x01, 0x06, 0x00, 0x00, 0x00, 0x00}},
+  /* DM Segment */
+  /* EVENT_START_POSITION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x07, 0x02, 0x01, 0x03, 0x03, 0x03, 0x00, 0x00}},
+  /* EVENT_COMMENT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x30, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00}},
+  /* DM_SEGMENT_TRACK_IDS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x01, 0x07, 0x01, 0x05, 0x00, 0x00, 0x00, 0x00}},
+  /* DM_FRAMEWORK */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x06, 0x01, 0x01, 0x04, 0x02, 0x0C, 0x00, 0x00}},
+  /* Generic descriptor */
+  /* LOCATORS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x06, 0x03, 0x00, 0x00}},
+  /* File descriptor */
+  /* LINKED_TRACK_ID */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x06, 0x01, 0x01, 0x03, 0x05, 0x00, 0x00, 0x00}},
+  /* SAMPLE_RATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x06, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* CONTAINER_DURATION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x06, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00}},
+  /* ESSENCE_CONTAINER */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x01, 0x02, 0x00, 0x00}},
+  /* CODEC */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x06, 0x01, 0x01, 0x04, 0x01, 0x03, 0x00, 0x00}},
+  /* Generic picture essence descriptor */
+  /* SIGNAL_STANDARD */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x05, 0x01, 0x13, 0x00, 0x00, 0x00, 0x00}},
+  /* FRAME_LAYOUT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00}},
+  /* STORED_WIDTH */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x02, 0x02, 0x00, 0x00, 0x00}},
+  /* STORED_HEIGHT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x02, 0x01, 0x00, 0x00, 0x00}},
+  /* STORED_F2_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x03, 0x02, 0x08, 0x00, 0x00, 0x00}},
+  /* SAMPLED_WIDTH */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x08, 0x00, 0x00, 0x00}},
+  /* SAMPLED_HEIGHT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x07, 0x00, 0x00, 0x00}},
+  /* SAMPLED_X_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x09, 0x00, 0x00, 0x00}},
+  /* SAMPLED_Y_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x0A, 0x00, 0x00, 0x00}},
+  /* DISPLAY_HEIGHT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x0B, 0x00, 0x00, 0x00}},
+  /* DISPLAY_WIDTH */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x0C, 0x00, 0x00, 0x00}},
+  /* DISPLAY_X_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x0D, 0x00, 0x00, 0x00}},
+  /* DISPLAY_Y_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x0E, 0x00, 0x00, 0x00}},
+  /* DISPLAY_F2_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x03, 0x02, 0x07, 0x00, 0x00, 0x00}},
+  /* ASPECT_RATIO */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00}},
+  /* ACTIVE_FORMAT_DESCRIPTOR */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x03, 0x02, 0x09, 0x00, 0x00, 0x00}},
+  /* VIDEO_LINE_MAP */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x03, 0x02, 0x05, 0x00, 0x00, 0x00}},
+  /* ALPHA_TRANSPARENCY */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x05, 0x20, 0x01, 0x02, 0x00, 0x00, 0x00, 0x00}},
+  /* CAPTURE_GAMMA */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x02, 0x01, 0x01, 0x01, 0x02, 0x00}},
+  /* IMAGE_ALIGNMENT_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x18, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* IMAGE_START_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x18, 0x02, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* IMAGE_END_OFFSET */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x18, 0x03, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* FIELD_DOMINANCE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x03, 0x01, 0x06, 0x00, 0x00, 0x00}},
+  /* PICTURE_ESSENCE_CODING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x06, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* Generic audio essence descriptor */
+  /* AUDIO_SAMPLING_RATE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x02, 0x03, 0x01, 0x01, 0x01, 0x00, 0x00}},
+  /* LOCKED */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x04, 0x02, 0x03, 0x01, 0x04, 0x00, 0x00, 0x00}},
+  /* AUDIO_REF_LEVEL */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x02, 0x01, 0x01, 0x03, 0x00, 0x00, 0x00}},
+  /* ELECTRO_SPATIAL_FORMULATION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00}},
+  /* CHANNEL_COUNT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x02, 0x01, 0x01, 0x04, 0x00, 0x00, 0x00}},
+  /* QUANTIZATION_BITS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x04, 0x02, 0x03, 0x03, 0x04, 0x00, 0x00, 0x00}},
+  /* DIAL_NORM */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x02, 0x07, 0x01, 0x00, 0x00, 0x00, 0x00}},
+  /* SOUND_ESSENCE_COMPRESSION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x02, 0x04, 0x02, 0x00, 0x00, 0x00, 0x00}},
+  /* CDCI Picture essence descriptor */
+  /* COMPONENT_DEPTH */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x05, 0x03, 0x0A, 0x00, 0x00, 0x00}},
+  /* HORIZONTAL_SUBSAMPLING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x05, 0x00, 0x00, 0x00}},
+  /* VERTICAL_SUBSAMPLING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x05, 0x01, 0x10, 0x00, 0x00, 0x00}},
+  /* COLOR_SITING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x01, 0x06, 0x00, 0x00, 0x00}},
+  /* REVERSED_BYTE_ORDER */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x03, 0x01, 0x02, 0x01, 0x0A, 0x00, 0x00, 0x00}},
+  /* PADDING_BITS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x18, 0x01, 0x04, 0x00, 0x00, 0x00, 0x00}},
+  /* ALPHA_SAMPLE_DEPTH */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x05, 0x03, 0x07, 0x00, 0x00, 0x00}},
+  /* BLACK_REF_LEVEL */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x03, 0x03, 0x00, 0x00, 0x00}},
+  /* WHITE_REF_LEVEL */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x04, 0x01, 0x05, 0x03, 0x04, 0x00, 0x00, 0x00}},
+  /* COLOR_RANGE */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x05, 0x03, 0x05, 0x00, 0x00, 0x00}},
+  /* RGBA picture essence descriptor */
+  /* COMPONENT_MAX_REF */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x05, 0x03, 0x0B, 0x00, 0x00, 0x00}},
+  /* COMPONENT_MIN_REF */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x05, 0x03, 0x0C, 0x00, 0x00, 0x00}},
+  /* ALPHA_MAX_REF */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x05, 0x03, 0x0D, 0x00, 0x00, 0x00}},
+  /* ALPHA_MIN_REF */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x05, 0x03, 0x0E, 0x00, 0x00, 0x00}},
+  /* SCANNING_DIRECTION */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x05,
+          0x04, 0x01, 0x04, 0x04, 0x01, 0x00, 0x00, 0x00}},
+  /* PIXEL_LAYOUT */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x04, 0x01, 0x05, 0x03, 0x06, 0x00, 0x00, 0x00}},
+  /* Generic data essence descriptor */
+  /* DATA_ESSENCE_CODING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x03,
+          0x04, 0x03, 0x03, 0x02, 0x00, 0x00, 0x00, 0x00}},
+  /* Multiple descriptor */
+  /* SUB_DESCRIPTORS */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x04,
+          0x06, 0x01, 0x01, 0x04, 0x06, 0x0B, 0x00, 0x00}},
+  /* Text locator */
+  /* LOCATOR_NAME */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x02,
+          0x01, 0x04, 0x01, 0x02, 0x01, 0x00, 0x00, 0x00}},
+  /* Network locator */
+  /* URL_STRING */
+  {{0x06, 0x0E, 0x2B, 0x34, 0x01, 0x01, 0x01, 0x01,
+          0x01, 0x02, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00}},
 };
 
 gboolean
index 9a82f12..a946b82 100644 (file)
@@ -28,7 +28,7 @@ typedef struct {
 } MXFUL;
 
 typedef enum {
-  MXF_UL_SMPTE = 0,
+  MXF_UL_SMPTE,
   MXF_UL_FILL,
   MXF_UL_PARTITION_PACK,
   MXF_UL_PRIMER_PACK,
@@ -42,6 +42,126 @@ typedef enum {
   MXF_UL_AVID_ESSENCE_CONTAINER_ESSENCE_ELEMENT,
   MXF_UL_AVID_ESSENCE_CONTAINER_ESSENCE_LABEL,
   MXF_UL_OPERATIONAL_PATTERN_IDENTIFICATION,
+  MXF_UL_TRACK_TIMECODE_12M_INACTIVE,
+  MXF_UL_TRACK_TIMECODE_12M_ACTIVE,
+  MXF_UL_TRACK_TIMECODE_309M,
+  MXF_UL_TRACK_METADATA,
+  MXF_UL_TRACK_PICTURE_ESSENCE,
+  MXF_UL_TRACK_SOUND_ESSENCE,
+  MXF_UL_TRACK_DATA_ESSENCE,
+  MXF_UL_TRACK_AUXILIARY_DATA,
+  MXF_UL_TRACK_PARSED_TEXT,
+  MXF_UL_TRACK_AVID_PICTURE_ESSENCE,
+  MXF_UL_INSTANCE_UID,
+  MXF_UL_GENERATION_UID,
+  MXF_UL_LAST_MODIFIED_DATE,
+  MXF_UL_VERSION,
+  MXF_UL_OBJECT_MODEL_VERSION,
+  MXF_UL_PRIMARY_PACKAGE,
+  MXF_UL_IDENTIFICATIONS,
+  MXF_UL_CONTENT_STORAGE,
+  MXF_UL_OPERATIONAL_PATTERN,
+  MXF_UL_ESSENCE_CONTAINERS,
+  MXF_UL_DM_SCHEMES,
+  MXF_UL_COMPANY_NAME,
+  MXF_UL_PRODUCT_NAME,
+  MXF_UL_PRODUCT_VERSION,
+  MXF_UL_VERSION_STRING,
+  MXF_UL_PRODUCT_UID,
+  MXF_UL_MODIFICATION_DATE,
+  MXF_UL_TOOLKIT_VERSION,
+  MXF_UL_PLATFORM,
+  MXF_UL_PACKAGES,
+  MXF_UL_ESSENCE_CONTAINER_DATA,
+  MXF_UL_LINKED_PACKAGE_UID,
+  MXF_UL_BODY_SID,
+  MXF_UL_INDEX_SID,
+  MXF_UL_PACKAGE_UID,
+  MXF_UL_PACKAGE_NAME,
+  MXF_UL_PACKAGE_CREATION_DATE,
+  MXF_UL_PACKAGE_MODIFIED_DATE,
+  MXF_UL_TRACKS,
+  MXF_UL_DESCRIPTOR,
+  MXF_UL_TRACK_ID,
+  MXF_UL_TRACK_NUMBER,
+  MXF_UL_TRACK_NAME,
+  MXF_UL_SEQUENCE,
+  MXF_UL_EDIT_RATE,
+  MXF_UL_ORIGIN,
+  MXF_UL_EVENT_EDIT_RATE,
+  MXF_UL_EVENT_ORIGIN,
+  MXF_UL_DATA_DEFINITION,
+  MXF_UL_DURATION,
+  MXF_UL_STRUCTURAL_COMPONENTS,
+  MXF_UL_ROUNDED_TIMECODE_BASE,
+  MXF_UL_START_TIMECODE,
+  MXF_UL_DROP_FRAME,
+  MXF_UL_START_POSITION,
+  MXF_UL_SOURCE_PACKAGE_ID,
+  MXF_UL_SOURCE_TRACK_ID,
+  MXF_UL_DM_SOURCECLIP_TRACK_IDS,
+  MXF_UL_EVENT_START_POSITION,
+  MXF_UL_EVENT_COMMENT,
+  MXF_UL_DM_SEGMENT_TRACK_IDS,
+  MXF_UL_DM_FRAMEWORK,
+  MXF_UL_LOCATORS,
+  MXF_UL_LINKED_TRACK_ID,
+  MXF_UL_SAMPLE_RATE,
+  MXF_UL_CONTAINER_DURATION,
+  MXF_UL_ESSENCE_CONTAINER,
+  MXF_UL_CODEC,
+  MXF_UL_SIGNAL_STANDARD,
+  MXF_UL_FRAME_LAYOUT,
+  MXF_UL_STORED_WIDTH,
+  MXF_UL_STORED_HEIGHT,
+  MXF_UL_STORED_F2_OFFSET,
+  MXF_UL_SAMPLED_WIDTH,
+  MXF_UL_SAMPLED_HEIGHT,
+  MXF_UL_SAMPLED_X_OFFSET,
+  MXF_UL_SAMPLED_Y_OFFSET,
+  MXF_UL_DISPLAY_HEIGHT,
+  MXF_UL_DISPLAY_WIDTH,
+  MXF_UL_DISPLAY_X_OFFSET,
+  MXF_UL_DISPLAY_Y_OFFSET,
+  MXF_UL_DISPLAY_F2_OFFSET,
+  MXF_UL_ASPECT_RATIO,
+  MXF_UL_ACTIVE_FORMAT_DESCRIPTOR,
+  MXF_UL_VIDEO_LINE_MAP,
+  MXF_UL_ALPHA_TRANSPARENCY,
+  MXF_UL_CAPTURE_GAMMA,
+  MXF_UL_IMAGE_ALIGNMENT_OFFSET,
+  MXF_UL_IMAGE_START_OFFSET,
+  MXF_UL_IMAGE_END_OFFSET,
+  MXF_UL_FIELD_DOMINANCE,
+  MXF_UL_PICTURE_ESSENCE_CODING,
+  MXF_UL_AUDIO_SAMPLING_RATE,
+  MXF_UL_LOCKED,
+  MXF_UL_AUDIO_REF_LEVEL,
+  MXF_UL_ELECTRO_SPATIAL_FORMULATION,
+  MXF_UL_CHANNEL_COUNT,
+  MXF_UL_QUANTIZATION_BITS,
+  MXF_UL_DIAL_NORM,
+  MXF_UL_SOUND_ESSENCE_COMPRESSION,
+  MXF_UL_COMPONENT_DEPTH,
+  MXF_UL_HORIZONTAL_SUBSAMPLING,
+  MXF_UL_VERTICAL_SUBSAMPLING,
+  MXF_UL_COLOR_SITING,
+  MXF_UL_REVERSED_BYTE_ORDER,
+  MXF_UL_PADDING_BITS,
+  MXF_UL_ALPHA_SAMPLE_DEPTH,
+  MXF_UL_BLACK_REF_LEVEL,
+  MXF_UL_WHITE_REF_LEVEL,
+  MXF_UL_COLOR_RANGE,
+  MXF_UL_COMPONENT_MAX_REF,
+  MXF_UL_COMPONENT_MIN_REF,
+  MXF_UL_ALPHA_MAX_REF,
+  MXF_UL_ALPHA_MIN_REF,
+  MXF_UL_SCANNING_DIRECTION,
+  MXF_UL_PIXEL_LAYOUT,
+  MXF_UL_DATA_ESSENCE_CODING,
+  MXF_UL_SUB_DESCRIPTORS,
+  MXF_UL_LOCATOR_NAME,
+  MXF_UL_URL_STRING,
   MXF_UL_MAX
 } MXFULId;