242
mxf_metadata_base_to_buffer (MXFMetadataBase * self, MXFPrimerPack * primer)
244
MXFMetadataBaseClass *klass;
247
guint size = 0, slen;
249
MXFLocalTag *t, *last;
252
g_return_val_if_fail (MXF_IS_METADATA_BASE (self), NULL);
253
g_return_val_if_fail (primer != NULL, NULL);
255
klass = MXF_METADATA_BASE_GET_CLASS (self);
256
g_return_val_if_fail (klass->write_tags, NULL);
258
tags = klass->write_tags (self, primer);
259
g_return_val_if_fail (tags != NULL, NULL);
261
/* Add unknown tags */
262
if (self->other_tags) {
264
#if GLIB_CHECK_VERSION (2, 16, 0)
267
g_hash_table_iter_init (&iter, self->other_tags);
271
values = g_hash_table_get_values (self->other_tags);
274
#if GLIB_CHECK_VERSION (2, 16, 0)
275
while (g_hash_table_iter_next (&iter, NULL, (gpointer) & t)) {
277
for (l = values; l; l = l->next) {
280
tmp = g_slice_dup (MXFLocalTag, t);
282
tmp->data = g_slice_alloc (t->size);
283
mxf_primer_pack_add_mapping (primer, 0x0000, &t->ul);
284
memcpy (tmp->data, t->data, t->size);
286
tmp->data = g_memdup (t->data, t->size);
288
tags = g_list_prepend (tags, tmp);
291
#if !GLIB_CHECK_VERSION (2, 16, 0)
292
g_list_free (values);
296
l = g_list_last (tags);
298
tags = g_list_delete_link (tags, l);
299
/* Last element contains the metadata UL */
300
g_return_val_if_fail (last->size == 0, NULL);
302
for (l = tags; l; l = l->next) {
304
g_assert (G_MAXUINT - t->size >= size);
308
slen = mxf_ber_encode_size (size, ber);
311
ret = gst_buffer_new_and_alloc (size);
313
memcpy (GST_BUFFER_DATA (ret), &last->ul, 16);
314
mxf_local_tag_free (last);
316
memcpy (GST_BUFFER_DATA (ret) + 16, ber, slen);
318
data = GST_BUFFER_DATA (ret) + 16 + slen;
321
for (l = tags; l; l = l->next) {
324
g_assert (size >= 4);
328
GPOINTER_TO_UINT (g_hash_table_lookup (primer->reverse_mappings,
330
g_assert (local_tag != 0);
332
GST_WRITE_UINT16_BE (data, local_tag);
333
GST_WRITE_UINT16_BE (data + 2, t->size);
336
g_assert (size >= t->size);
338
memcpy (data, t->data, t->size);
342
mxf_local_tag_free (t);
241
350
G_DEFINE_ABSTRACT_TYPE (MXFMetadata, mxf_metadata, MXF_TYPE_METADATA_BASE);
866
mxf_metadata_preface_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
868
MXFMetadataPreface *self = MXF_METADATA_PREFACE (m);
870
MXF_METADATA_BASE_CLASS (mxf_metadata_preface_parent_class)->write_tags
875
t = g_slice_new0 (MXFLocalTag);
876
memcpy (&t->ul, MXF_UL (LAST_MODIFIED_DATE), 16);
878
t->data = g_slice_alloc (8);
880
mxf_timestamp_write (&self->last_modified_date, t->data);
881
mxf_primer_pack_add_mapping (primer, 0x3b02, &t->ul);
882
ret = g_list_prepend (ret, t);
884
t = g_slice_new0 (MXFLocalTag);
885
memcpy (&t->ul, MXF_UL (VERSION), 16);
887
t->data = g_slice_alloc (2);
889
GST_WRITE_UINT16_BE (t->data, self->version);
890
mxf_primer_pack_add_mapping (primer, 0x3b05, &t->ul);
891
ret = g_list_prepend (ret, t);
893
if (self->object_model_version) {
894
t = g_slice_new0 (MXFLocalTag);
895
memcpy (&t->ul, MXF_UL (OBJECT_MODEL_VERSION), 16);
897
t->data = g_slice_alloc (4);
899
GST_WRITE_UINT32_BE (t->data, self->object_model_version);
900
mxf_primer_pack_add_mapping (primer, 0x3b07, &t->ul);
901
ret = g_list_prepend (ret, t);
904
if (!mxf_uuid_is_zero (&self->primary_package_uid)) {
905
t = g_slice_new0 (MXFLocalTag);
906
memcpy (&t->ul, MXF_UL (PRIMARY_PACKAGE), 16);
908
t->data = g_slice_alloc (16);
910
memcpy (t->data, &self->primary_package_uid, 16);
911
mxf_primer_pack_add_mapping (primer, 0x3b08, &t->ul);
912
ret = g_list_prepend (ret, t);
915
t = g_slice_new0 (MXFLocalTag);
916
memcpy (&t->ul, MXF_UL (IDENTIFICATIONS), 16);
917
t->size = 8 + 16 * self->n_identifications;
918
t->data = g_slice_alloc0 (t->size);
920
mxf_primer_pack_add_mapping (primer, 0x3b06, &t->ul);
921
GST_WRITE_UINT32_BE (t->data, self->n_identifications);
922
GST_WRITE_UINT32_BE (t->data + 4, 16);
923
for (i = 0; i < self->n_identifications; i++) {
924
if (!self->identifications[i])
927
memcpy (t->data + 8 + 16 * i,
928
&MXF_METADATA_BASE (self->identifications[i])->instance_uid, 16);
930
ret = g_list_prepend (ret, t);
932
t = g_slice_new0 (MXFLocalTag);
933
memcpy (&t->ul, MXF_UL (CONTENT_STORAGE), 16);
935
t->data = g_slice_alloc (t->size);
937
mxf_primer_pack_add_mapping (primer, 0x3b03, &t->ul);
938
memcpy (t->data, &MXF_METADATA_BASE (self->content_storage)->instance_uid,
940
ret = g_list_prepend (ret, t);
942
t = g_slice_new0 (MXFLocalTag);
943
memcpy (&t->ul, MXF_UL (OPERATIONAL_PATTERN), 16);
945
t->data = g_slice_alloc (t->size);
947
mxf_primer_pack_add_mapping (primer, 0x3b09, &t->ul);
948
memcpy (t->data, &self->operational_pattern, 16);
949
ret = g_list_prepend (ret, t);
951
t = g_slice_new0 (MXFLocalTag);
952
memcpy (&t->ul, MXF_UL (ESSENCE_CONTAINERS), 16);
953
t->size = 8 + 16 * self->n_essence_containers;
954
t->data = g_slice_alloc0 (t->size);
956
mxf_primer_pack_add_mapping (primer, 0x3b0a, &t->ul);
957
GST_WRITE_UINT32_BE (t->data, self->n_essence_containers);
958
GST_WRITE_UINT32_BE (t->data + 4, 16);
959
for (i = 0; i < self->n_essence_containers; i++) {
960
memcpy (t->data + 8 + 16 * i, &self->essence_containers[i], 16);
962
ret = g_list_prepend (ret, t);
964
if (self->dm_schemes) {
965
t = g_slice_new0 (MXFLocalTag);
966
memcpy (&t->ul, MXF_UL (DM_SCHEMES), 16);
967
t->size = 8 + 16 * self->n_dm_schemes;
968
t->data = g_slice_alloc0 (t->size);
970
mxf_primer_pack_add_mapping (primer, 0x3b0b, &t->ul);
971
GST_WRITE_UINT32_BE (t->data, self->n_dm_schemes);
972
GST_WRITE_UINT32_BE (t->data + 4, 16);
973
for (i = 0; i < self->n_dm_schemes; i++) {
974
memcpy (t->data + 8 + 16 * i, &self->dm_schemes[i], 16);
976
ret = g_list_prepend (ret, t);
716
983
mxf_metadata_preface_init (MXFMetadataPreface * self)
1184
mxf_metadata_identification_write_tags (MXFMetadataBase * m,
1185
MXFPrimerPack * primer)
1187
MXFMetadataIdentification *self = MXF_METADATA_IDENTIFICATION (m);
1189
MXF_METADATA_BASE_CLASS
1190
(mxf_metadata_identification_parent_class)->write_tags (m, primer);
1193
if (self->company_name) {
1194
t = g_slice_new0 (MXFLocalTag);
1195
memcpy (&t->ul, MXF_UL (COMPANY_NAME), 16);
1196
t->data = mxf_utf8_to_utf16 (self->company_name, &t->size);
1197
mxf_primer_pack_add_mapping (primer, 0x3c01, &t->ul);
1198
ret = g_list_prepend (ret, t);
1201
if (self->product_name) {
1202
t = g_slice_new0 (MXFLocalTag);
1203
memcpy (&t->ul, MXF_UL (PRODUCT_NAME), 16);
1204
t->data = mxf_utf8_to_utf16 (self->product_name, &t->size);
1205
mxf_primer_pack_add_mapping (primer, 0x3c02, &t->ul);
1206
ret = g_list_prepend (ret, t);
1209
if (!mxf_product_version_is_valid (&self->product_version)) {
1210
t = g_slice_new0 (MXFLocalTag);
1211
memcpy (&t->ul, MXF_UL (PRODUCT_VERSION), 16);
1213
t->data = g_slice_alloc (t->size);
1215
mxf_product_version_write (&self->product_version, t->data);
1216
mxf_primer_pack_add_mapping (primer, 0x3c03, &t->ul);
1217
ret = g_list_prepend (ret, t);
1220
if (self->version_string) {
1221
t = g_slice_new0 (MXFLocalTag);
1222
memcpy (&t->ul, MXF_UL (VERSION_STRING), 16);
1223
t->data = mxf_utf8_to_utf16 (self->version_string, &t->size);
1224
mxf_primer_pack_add_mapping (primer, 0x3c04, &t->ul);
1225
ret = g_list_prepend (ret, t);
1228
if (!mxf_uuid_is_zero (&self->product_uid)) {
1229
t = g_slice_new0 (MXFLocalTag);
1230
memcpy (&t->ul, MXF_UL (PRODUCT_UID), 16);
1232
t->data = g_slice_alloc (t->size);
1234
memcpy (t->data, &self->product_uid, 16);
1235
mxf_primer_pack_add_mapping (primer, 0x3c05, &t->ul);
1236
ret = g_list_prepend (ret, t);
1239
if (!mxf_timestamp_is_unknown (&self->modification_date)) {
1240
t = g_slice_new0 (MXFLocalTag);
1241
memcpy (&t->ul, MXF_UL (MODIFICATION_DATE), 16);
1243
t->data = g_slice_alloc (t->size);
1245
mxf_timestamp_write (&self->modification_date, t->data);
1246
mxf_primer_pack_add_mapping (primer, 0x3c06, &t->ul);
1247
ret = g_list_prepend (ret, t);
1250
if (!mxf_product_version_is_valid (&self->toolkit_version)) {
1251
t = g_slice_new0 (MXFLocalTag);
1252
memcpy (&t->ul, MXF_UL (TOOLKIT_VERSION), 16);
1254
t->data = g_slice_alloc (t->size);
1256
mxf_product_version_write (&self->toolkit_version, t->data);
1257
mxf_primer_pack_add_mapping (primer, 0x3c07, &t->ul);
1258
ret = g_list_prepend (ret, t);
1261
if (self->platform) {
1262
t = g_slice_new0 (MXFLocalTag);
1263
memcpy (&t->ul, MXF_UL (PLATFORM), 16);
1264
t->data = mxf_utf8_to_utf16 (self->platform, &t->size);
1265
mxf_primer_pack_add_mapping (primer, 0x3c08, &t->ul);
1266
ret = g_list_prepend (ret, t);
916
1273
mxf_metadata_identification_init (MXFMetadataIdentification * self)
1983
mxf_metadata_generic_package_write_tags (MXFMetadataBase * m,
1984
MXFPrimerPack * primer)
1986
MXFMetadataGenericPackage *self = MXF_METADATA_GENERIC_PACKAGE (m);
1988
MXF_METADATA_BASE_CLASS
1989
(mxf_metadata_generic_package_parent_class)->write_tags (m, primer);
1992
t = g_slice_new0 (MXFLocalTag);
1993
memcpy (&t->ul, MXF_UL (PACKAGE_UID), 16);
1995
t->data = g_slice_alloc (t->size);
1997
memcpy (t->data, &self->package_uid, 32);
1998
mxf_primer_pack_add_mapping (primer, 0x4401, &t->ul);
1999
ret = g_list_prepend (ret, t);
2002
t = g_slice_new0 (MXFLocalTag);
2003
memcpy (&t->ul, MXF_UL (PACKAGE_NAME), 16);
2004
t->data = mxf_utf8_to_utf16 (self->name, &t->size);
2005
mxf_primer_pack_add_mapping (primer, 0x4402, &t->ul);
2006
ret = g_list_prepend (ret, t);
2009
t = g_slice_new0 (MXFLocalTag);
2010
memcpy (&t->ul, MXF_UL (PACKAGE_CREATION_DATE), 16);
2012
t->data = g_slice_alloc (t->size);
2014
mxf_timestamp_write (&self->package_creation_date, t->data);
2015
mxf_primer_pack_add_mapping (primer, 0x4405, &t->ul);
2016
ret = g_list_prepend (ret, t);
2018
t = g_slice_new0 (MXFLocalTag);
2019
memcpy (&t->ul, MXF_UL (PACKAGE_MODIFIED_DATE), 16);
2021
t->data = g_slice_alloc (t->size);
2023
mxf_timestamp_write (&self->package_modified_date, t->data);
2024
mxf_primer_pack_add_mapping (primer, 0x4404, &t->ul);
2025
ret = g_list_prepend (ret, t);
2030
t = g_slice_new0 (MXFLocalTag);
2031
memcpy (&t->ul, MXF_UL (TRACKS), 16);
2032
t->size = 8 + 16 * self->n_tracks;
2033
t->data = g_slice_alloc0 (t->size);
2035
GST_WRITE_UINT32_BE (t->data, self->n_tracks);
2036
GST_WRITE_UINT32_BE (t->data + 4, 16);
2037
for (i = 0; i < self->n_tracks; i++) {
2038
if (!self->tracks[i])
2041
memcpy (t->data + 8 + 16 * i,
2042
&MXF_METADATA_BASE (self->tracks[i])->instance_uid, 16);
2044
mxf_primer_pack_add_mapping (primer, 0x4403, &t->ul);
2045
ret = g_list_prepend (ret, t);
1522
2052
mxf_metadata_generic_package_init (MXFMetadataGenericPackage * self)
1975
2578
metadata_base_class->handle_tag = mxf_metadata_track_handle_tag;
1976
2579
metadata_base_class->resolve = mxf_metadata_track_resolve;
1977
2580
metadata_base_class->to_structure = mxf_metadata_track_to_structure;
2581
metadata_base_class->write_tags = mxf_metadata_track_write_tags;
1980
2584
/* SMPTE RP224 */
1981
2585
static const struct
1984
MXFMetadataTrackType type;
2588
const MXFMetadataTrackType type;
1985
2589
} mxf_metadata_track_identifier[] = {
1987
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01,
1988
0x01, 0x03, 0x02, 0x01, 0x01, 0x00, 0x00, 0x00},
1989
MXF_METADATA_TRACK_TIMECODE_12M_INACTIVE}, { {
1990
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01,
1991
0x02, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_TIMECODE_12M_ACTIVE}, { {
1992
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01,
1993
0x03, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_TIMECODE_309M}, { {
1994
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x01,
1995
0x10, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_METADATA}, { {
1996
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02,
1997
0x01, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_PICTURE_ESSENCE}, { {
1998
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02,
1999
0x02, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_SOUND_ESSENCE}, { {
2000
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x02,
2001
0x03, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_DATA_ESSENCE}, { {
2002
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x03,
2003
0x01, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_AUXILIARY_DATA}, { {
2004
0x06, 0x0e, 0x2b, 0x34, 0x04, 0x01, 0x01, 0x01, 0x01, 0x03, 0x02, 0x03,
2005
0x02, 0x00, 0x00, 0x00}, MXF_METADATA_TRACK_PARSED_TEXT},
2591
MXF_UL (TRACK_TIMECODE_12M_INACTIVE),
2592
MXF_METADATA_TRACK_TIMECODE_12M_INACTIVE}, {
2593
MXF_UL (TRACK_TIMECODE_12M_ACTIVE), MXF_METADATA_TRACK_TIMECODE_12M_ACTIVE}, {
2594
MXF_UL (TRACK_TIMECODE_309M), MXF_METADATA_TRACK_TIMECODE_309M}, {
2595
MXF_UL (TRACK_METADATA), MXF_METADATA_TRACK_METADATA}, {
2596
MXF_UL (TRACK_PICTURE_ESSENCE), MXF_METADATA_TRACK_PICTURE_ESSENCE}, {
2597
MXF_UL (TRACK_SOUND_ESSENCE), MXF_METADATA_TRACK_SOUND_ESSENCE}, {
2598
MXF_UL (TRACK_DATA_ESSENCE), MXF_METADATA_TRACK_DATA_ESSENCE}, {
2599
MXF_UL (TRACK_AUXILIARY_DATA), MXF_METADATA_TRACK_AUXILIARY_DATA}, {
2600
MXF_UL (TRACK_PARSED_TEXT), MXF_METADATA_TRACK_PARSED_TEXT},
2006
2601
/* Avid video? */
2008
0x80, 0x7d, 0x00, 0x60, 0x08, 0x14, 0x3e, 0x6f, 0x6f, 0x3c, 0x8c, 0xe1,
2009
0x6c, 0xef, 0x11, 0xd2}, MXF_METADATA_TRACK_PICTURE_ESSENCE}
2603
MXF_UL (TRACK_AVID_PICTURE_ESSENCE), MXF_METADATA_TRACK_PICTURE_ESSENCE}
2012
2606
MXFMetadataTrackType
3838
mxf_metadata_dm_segment_write_tags (MXFMetadataBase * m, MXFPrimerPack * primer)
3840
MXFMetadataDMSegment *self = MXF_METADATA_DM_SEGMENT (m);
3842
MXF_METADATA_BASE_CLASS (mxf_metadata_dm_segment_parent_class)->write_tags
3846
if (self->event_start_position != -1) {
3847
t = g_slice_new0 (MXFLocalTag);
3848
memcpy (&t->ul, MXF_UL (EVENT_START_POSITION), 16);
3850
t->data = g_slice_alloc (t->size);
3852
GST_WRITE_UINT64_BE (t->data, self->event_start_position);
3853
mxf_primer_pack_add_mapping (primer, 0x0601, &t->ul);
3854
ret = g_list_prepend (ret, t);
3857
if (self->event_comment) {
3858
t = g_slice_new0 (MXFLocalTag);
3859
memcpy (&t->ul, MXF_UL (EVENT_COMMENT), 16);
3860
t->data = mxf_utf8_to_utf16 (self->event_comment, &t->size);
3861
mxf_primer_pack_add_mapping (primer, 0x0602, &t->ul);
3862
ret = g_list_prepend (ret, t);
3865
if (self->track_ids) {
3868
t = g_slice_new0 (MXFLocalTag);
3869
memcpy (&t->ul, MXF_UL (DM_SEGMENT_TRACK_IDS), 16);
3870
t->size = 8 + 4 * self->n_track_ids;
3871
t->data = g_slice_alloc (t->size);
3873
GST_WRITE_UINT32_BE (t->data, self->n_track_ids);
3874
GST_WRITE_UINT32_BE (t->data + 4, 4);
3875
for (i = 0; i < self->n_track_ids; i++)
3876
GST_WRITE_UINT32_BE (t->data + 8 + i * 4, self->track_ids[i]);
3877
mxf_primer_pack_add_mapping (primer, 0x6102, &t->ul);
3878
ret = g_list_prepend (ret, t);
3881
if (self->dm_framework) {
3882
t = g_slice_new0 (MXFLocalTag);
3883
memcpy (&t->ul, MXF_UL (DM_FRAMEWORK), 16);
3885
t->data = g_slice_alloc (t->size);
3887
memcpy (t->data, &MXF_METADATA_BASE (self->dm_framework)->instance_uid, 16);
3888
mxf_primer_pack_add_mapping (primer, 0x6101, &t->ul);
3889
ret = g_list_prepend (ret, t);
2969
3896
mxf_metadata_dm_segment_init (MXFMetadataDMSegment * self)
3898
self->event_start_position = -1;
4213
mxf_metadata_file_descriptor_write_tags (MXFMetadataBase * m,
4214
MXFPrimerPack * primer)
4216
MXFMetadataFileDescriptor *self = MXF_METADATA_FILE_DESCRIPTOR (m);
4218
MXF_METADATA_BASE_CLASS
4219
(mxf_metadata_file_descriptor_parent_class)->write_tags (m, primer);
4222
if (self->linked_track_id) {
4223
t = g_slice_new0 (MXFLocalTag);
4224
memcpy (&t->ul, MXF_UL (LINKED_TRACK_ID), 16);
4226
t->data = g_slice_alloc (t->size);
4228
GST_WRITE_UINT32_BE (t->data, self->linked_track_id);
4229
mxf_primer_pack_add_mapping (primer, 0x3006, &t->ul);
4230
ret = g_list_prepend (ret, t);
4233
t = g_slice_new0 (MXFLocalTag);
4234
memcpy (&t->ul, MXF_UL (SAMPLE_RATE), 16);
4236
t->data = g_slice_alloc (t->size);
4238
GST_WRITE_UINT32_BE (t->data, self->sample_rate.n);
4239
GST_WRITE_UINT32_BE (t->data + 4, self->sample_rate.d);
4240
mxf_primer_pack_add_mapping (primer, 0x3001, &t->ul);
4241
ret = g_list_prepend (ret, t);
4243
if (self->container_duration > 0) {
4244
t = g_slice_new0 (MXFLocalTag);
4245
memcpy (&t->ul, MXF_UL (CONTAINER_DURATION), 16);
4247
t->data = g_slice_alloc (t->size);
4249
GST_WRITE_UINT64_BE (t->data, self->container_duration);
4250
mxf_primer_pack_add_mapping (primer, 0x3002, &t->ul);
4251
ret = g_list_prepend (ret, t);
4254
t = g_slice_new0 (MXFLocalTag);
4255
memcpy (&t->ul, MXF_UL (ESSENCE_CONTAINER), 16);
4257
t->data = g_slice_alloc (t->size);
4259
memcpy (t->data, &self->essence_container, 16);
4260
mxf_primer_pack_add_mapping (primer, 0x3004, &t->ul);
4261
ret = g_list_prepend (ret, t);
4263
if (!mxf_ul_is_zero (&self->codec)) {
4264
t = g_slice_new0 (MXFLocalTag);
4265
memcpy (&t->ul, MXF_UL (CODEC), 16);
4267
t->data = g_slice_alloc (t->size);
4269
memcpy (t->data, &self->codec, 16);
4270
mxf_primer_pack_add_mapping (primer, 0x3005, &t->ul);
4271
ret = g_list_prepend (ret, t);
3251
4278
mxf_metadata_file_descriptor_init (MXFMetadataFileDescriptor * self)
4599
mxf_metadata_generic_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
4600
MXFPrimerPack * primer)
4602
MXFMetadataGenericPictureEssenceDescriptor *self =
4603
MXF_METADATA_GENERIC_PICTURE_ESSENCE_DESCRIPTOR (m);
4605
MXF_METADATA_BASE_CLASS
4606
(mxf_metadata_generic_picture_essence_descriptor_parent_class)->write_tags
4610
if (self->signal_standard != 1) {
4611
t = g_slice_new0 (MXFLocalTag);
4612
memcpy (&t->ul, MXF_UL (SIGNAL_STANDARD), 16);
4614
t->data = g_slice_alloc (t->size);
4616
GST_WRITE_UINT8 (t->data, self->signal_standard);
4617
mxf_primer_pack_add_mapping (primer, 0x3215, &t->ul);
4618
ret = g_list_prepend (ret, t);
4621
if (self->frame_layout != 255) {
4622
t = g_slice_new0 (MXFLocalTag);
4623
memcpy (&t->ul, MXF_UL (FRAME_LAYOUT), 16);
4625
t->data = g_slice_alloc (t->size);
4627
GST_WRITE_UINT8 (t->data, self->frame_layout);
4628
mxf_primer_pack_add_mapping (primer, 0x320c, &t->ul);
4629
ret = g_list_prepend (ret, t);
4632
if (self->stored_width != 0) {
4633
t = g_slice_new0 (MXFLocalTag);
4634
memcpy (&t->ul, MXF_UL (STORED_WIDTH), 16);
4636
t->data = g_slice_alloc (t->size);
4638
GST_WRITE_UINT32_BE (t->data, self->stored_width);
4639
mxf_primer_pack_add_mapping (primer, 0x3203, &t->ul);
4640
ret = g_list_prepend (ret, t);
4643
if (self->stored_height != 0) {
4644
t = g_slice_new0 (MXFLocalTag);
4645
memcpy (&t->ul, MXF_UL (STORED_HEIGHT), 16);
4647
t->data = g_slice_alloc (t->size);
4649
GST_WRITE_UINT32_BE (t->data, self->stored_height);
4650
mxf_primer_pack_add_mapping (primer, 0x3202, &t->ul);
4651
ret = g_list_prepend (ret, t);
4654
if (self->stored_f2_offset != 0) {
4655
t = g_slice_new0 (MXFLocalTag);
4656
memcpy (&t->ul, MXF_UL (STORED_F2_OFFSET), 16);
4658
t->data = g_slice_alloc (t->size);
4660
GST_WRITE_UINT32_BE (t->data, self->stored_f2_offset);
4661
mxf_primer_pack_add_mapping (primer, 0x3216, &t->ul);
4662
ret = g_list_prepend (ret, t);
4665
if (self->sampled_width != 0) {
4666
t = g_slice_new0 (MXFLocalTag);
4667
memcpy (&t->ul, MXF_UL (SAMPLED_WIDTH), 16);
4669
t->data = g_slice_alloc (t->size);
4671
GST_WRITE_UINT32_BE (t->data, self->sampled_width);
4672
mxf_primer_pack_add_mapping (primer, 0x3205, &t->ul);
4673
ret = g_list_prepend (ret, t);
4676
if (self->sampled_height != 0) {
4677
t = g_slice_new0 (MXFLocalTag);
4678
memcpy (&t->ul, MXF_UL (SAMPLED_HEIGHT), 16);
4680
t->data = g_slice_alloc (t->size);
4682
GST_WRITE_UINT32_BE (t->data, self->sampled_height);
4683
mxf_primer_pack_add_mapping (primer, 0x3204, &t->ul);
4684
ret = g_list_prepend (ret, t);
4687
if (self->sampled_x_offset != 0) {
4688
t = g_slice_new0 (MXFLocalTag);
4689
memcpy (&t->ul, MXF_UL (SAMPLED_X_OFFSET), 16);
4691
t->data = g_slice_alloc (t->size);
4693
GST_WRITE_UINT32_BE (t->data, self->sampled_x_offset);
4694
mxf_primer_pack_add_mapping (primer, 0x3206, &t->ul);
4695
ret = g_list_prepend (ret, t);
4698
if (self->sampled_y_offset != 0) {
4699
t = g_slice_new0 (MXFLocalTag);
4700
memcpy (&t->ul, MXF_UL (SAMPLED_Y_OFFSET), 16);
4702
t->data = g_slice_alloc (t->size);
4704
GST_WRITE_UINT32_BE (t->data, self->sampled_y_offset);
4705
mxf_primer_pack_add_mapping (primer, 0x3207, &t->ul);
4706
ret = g_list_prepend (ret, t);
4709
if (self->display_height != 0) {
4710
t = g_slice_new0 (MXFLocalTag);
4711
memcpy (&t->ul, MXF_UL (DISPLAY_HEIGHT), 16);
4713
t->data = g_slice_alloc (t->size);
4715
GST_WRITE_UINT32_BE (t->data, self->display_height);
4716
mxf_primer_pack_add_mapping (primer, 0x3208, &t->ul);
4717
ret = g_list_prepend (ret, t);
4720
if (self->display_width != 0) {
4721
t = g_slice_new0 (MXFLocalTag);
4722
memcpy (&t->ul, MXF_UL (DISPLAY_WIDTH), 16);
4724
t->data = g_slice_alloc (t->size);
4726
GST_WRITE_UINT32_BE (t->data, self->display_width);
4727
mxf_primer_pack_add_mapping (primer, 0x3209, &t->ul);
4728
ret = g_list_prepend (ret, t);
4731
if (self->display_x_offset != 0) {
4732
t = g_slice_new0 (MXFLocalTag);
4733
memcpy (&t->ul, MXF_UL (DISPLAY_X_OFFSET), 16);
4735
t->data = g_slice_alloc (t->size);
4737
GST_WRITE_UINT32_BE (t->data, self->display_x_offset);
4738
mxf_primer_pack_add_mapping (primer, 0x320a, &t->ul);
4739
ret = g_list_prepend (ret, t);
4742
if (self->display_y_offset != 0) {
4743
t = g_slice_new0 (MXFLocalTag);
4744
memcpy (&t->ul, MXF_UL (DISPLAY_Y_OFFSET), 16);
4746
t->data = g_slice_alloc (t->size);
4748
GST_WRITE_UINT32_BE (t->data, self->display_y_offset);
4749
mxf_primer_pack_add_mapping (primer, 0x320b, &t->ul);
4750
ret = g_list_prepend (ret, t);
4753
if (self->display_f2_offset != 0) {
4754
t = g_slice_new0 (MXFLocalTag);
4755
memcpy (&t->ul, MXF_UL (DISPLAY_F2_OFFSET), 16);
4757
t->data = g_slice_alloc (t->size);
4759
GST_WRITE_UINT32_BE (t->data, self->display_f2_offset);
4760
mxf_primer_pack_add_mapping (primer, 0x3217, &t->ul);
4761
ret = g_list_prepend (ret, t);
4764
if (self->aspect_ratio.n != 0 && self->aspect_ratio.d != 0) {
4765
t = g_slice_new0 (MXFLocalTag);
4766
memcpy (&t->ul, MXF_UL (ASPECT_RATIO), 16);
4768
t->data = g_slice_alloc (t->size);
4770
GST_WRITE_UINT32_BE (t->data, self->aspect_ratio.n);
4771
GST_WRITE_UINT32_BE (t->data + 4, self->aspect_ratio.d);
4772
mxf_primer_pack_add_mapping (primer, 0x320e, &t->ul);
4773
ret = g_list_prepend (ret, t);
4776
if (self->active_format_descriptor != 0) {
4777
t = g_slice_new0 (MXFLocalTag);
4778
memcpy (&t->ul, MXF_UL (ACTIVE_FORMAT_DESCRIPTOR), 16);
4780
t->data = g_slice_alloc (t->size);
4782
GST_WRITE_UINT8 (t->data, self->active_format_descriptor);
4783
mxf_primer_pack_add_mapping (primer, 0x3218, &t->ul);
4784
ret = g_list_prepend (ret, t);
4787
if (self->video_line_map[0] != 0 || self->video_line_map[1] != 0) {
4788
t = g_slice_new0 (MXFLocalTag);
4789
memcpy (&t->ul, MXF_UL (VIDEO_LINE_MAP), 16);
4791
t->data = g_slice_alloc (t->size);
4793
GST_WRITE_UINT64_BE (t->data, self->video_line_map[0]);
4794
GST_WRITE_UINT64_BE (t->data + 8, self->video_line_map[1]);
4795
mxf_primer_pack_add_mapping (primer, 0x320d, &t->ul);
4796
ret = g_list_prepend (ret, t);
4799
if (self->alpha_transparency != 0) {
4800
t = g_slice_new0 (MXFLocalTag);
4801
memcpy (&t->ul, MXF_UL (ALPHA_TRANSPARENCY), 16);
4803
t->data = g_slice_alloc (t->size);
4805
GST_WRITE_UINT8 (t->data, self->alpha_transparency);
4806
mxf_primer_pack_add_mapping (primer, 0x320f, &t->ul);
4807
ret = g_list_prepend (ret, t);
4810
if (!mxf_ul_is_zero (&self->capture_gamma)) {
4811
t = g_slice_new0 (MXFLocalTag);
4812
memcpy (&t->ul, MXF_UL (CAPTURE_GAMMA), 16);
4814
t->data = g_slice_alloc (t->size);
4816
memcpy (t->data, &self->capture_gamma, 16);
4817
mxf_primer_pack_add_mapping (primer, 0x3210, &t->ul);
4818
ret = g_list_prepend (ret, t);
4821
if (self->image_alignment_offset != 0) {
4822
t = g_slice_new0 (MXFLocalTag);
4823
memcpy (&t->ul, MXF_UL (IMAGE_ALIGNMENT_OFFSET), 16);
4825
t->data = g_slice_alloc (t->size);
4827
GST_WRITE_UINT32_BE (t->data, self->image_alignment_offset);
4828
mxf_primer_pack_add_mapping (primer, 0x3211, &t->ul);
4829
ret = g_list_prepend (ret, t);
4832
if (self->image_start_offset != 0) {
4833
t = g_slice_new0 (MXFLocalTag);
4834
memcpy (&t->ul, MXF_UL (IMAGE_START_OFFSET), 16);
4836
t->data = g_slice_alloc (t->size);
4838
GST_WRITE_UINT32_BE (t->data, self->image_start_offset);
4839
mxf_primer_pack_add_mapping (primer, 0x3213, &t->ul);
4840
ret = g_list_prepend (ret, t);
4843
if (self->image_end_offset != 0) {
4844
t = g_slice_new0 (MXFLocalTag);
4845
memcpy (&t->ul, MXF_UL (IMAGE_END_OFFSET), 16);
4847
t->data = g_slice_alloc (t->size);
4849
GST_WRITE_UINT32_BE (t->data, self->image_end_offset);
4850
mxf_primer_pack_add_mapping (primer, 0x3214, &t->ul);
4851
ret = g_list_prepend (ret, t);
4854
if (self->field_dominance != 0) {
4855
t = g_slice_new0 (MXFLocalTag);
4856
memcpy (&t->ul, MXF_UL (FIELD_DOMINANCE), 16);
4858
t->data = g_slice_alloc (t->size);
4860
GST_WRITE_UINT8 (t->data, self->field_dominance);
4861
mxf_primer_pack_add_mapping (primer, 0x3212, &t->ul);
4862
ret = g_list_prepend (ret, t);
4865
if (!mxf_ul_is_zero (&self->picture_essence_coding)) {
4866
t = g_slice_new0 (MXFLocalTag);
4867
memcpy (&t->ul, MXF_UL (PICTURE_ESSENCE_CODING), 16);
4869
t->data = g_slice_alloc (t->size);
4871
memcpy (t->data, &self->picture_essence_coding, 16);
4872
mxf_primer_pack_add_mapping (primer, 0x3201, &t->ul);
4873
ret = g_list_prepend (ret, t);
3571
4880
mxf_metadata_generic_picture_essence_descriptor_init
3572
4881
(MXFMetadataGenericPictureEssenceDescriptor * self)
5153
mxf_metadata_generic_sound_essence_descriptor_write_tags (MXFMetadataBase * m,
5154
MXFPrimerPack * primer)
5156
MXFMetadataGenericSoundEssenceDescriptor *self =
5157
MXF_METADATA_GENERIC_SOUND_ESSENCE_DESCRIPTOR (m);
5159
MXF_METADATA_BASE_CLASS
5160
(mxf_metadata_generic_sound_essence_descriptor_parent_class)->write_tags
5164
if (self->audio_sampling_rate.d && self->audio_sampling_rate.n) {
5165
t = g_slice_new0 (MXFLocalTag);
5166
memcpy (&t->ul, MXF_UL (AUDIO_SAMPLING_RATE), 16);
5168
t->data = g_slice_alloc (t->size);
5170
GST_WRITE_UINT32_BE (t->data, self->audio_sampling_rate.n);
5171
GST_WRITE_UINT32_BE (t->data + 4, self->audio_sampling_rate.d);
5172
mxf_primer_pack_add_mapping (primer, 0x3d03, &t->ul);
5173
ret = g_list_prepend (ret, t);
5176
t = g_slice_new0 (MXFLocalTag);
5177
memcpy (&t->ul, MXF_UL (LOCKED), 16);
5179
t->data = g_slice_alloc (t->size);
5181
GST_WRITE_UINT8 (t->data, (self->locked) ? 1 : 0);
5182
mxf_primer_pack_add_mapping (primer, 0x3d02, &t->ul);
5183
ret = g_list_prepend (ret, t);
5185
if (self->audio_ref_level) {
5186
t = g_slice_new0 (MXFLocalTag);
5187
memcpy (&t->ul, MXF_UL (AUDIO_REF_LEVEL), 16);
5189
t->data = g_slice_alloc (t->size);
5191
GST_WRITE_UINT8 (t->data, self->audio_ref_level);
5192
mxf_primer_pack_add_mapping (primer, 0x3d04, &t->ul);
5193
ret = g_list_prepend (ret, t);
5196
if (self->electro_spatial_formulation != 255) {
5197
t = g_slice_new0 (MXFLocalTag);
5198
memcpy (&t->ul, MXF_UL (ELECTRO_SPATIAL_FORMULATION), 16);
5200
t->data = g_slice_alloc (t->size);
5202
GST_WRITE_UINT8 (t->data, self->electro_spatial_formulation);
5203
mxf_primer_pack_add_mapping (primer, 0x3d05, &t->ul);
5204
ret = g_list_prepend (ret, t);
5207
if (self->channel_count) {
5208
t = g_slice_new0 (MXFLocalTag);
5209
memcpy (&t->ul, MXF_UL (CHANNEL_COUNT), 16);
5211
t->data = g_slice_alloc (t->size);
5213
GST_WRITE_UINT32_BE (t->data, self->channel_count);
5214
mxf_primer_pack_add_mapping (primer, 0x3d07, &t->ul);
5215
ret = g_list_prepend (ret, t);
5218
if (self->quantization_bits) {
5219
t = g_slice_new0 (MXFLocalTag);
5220
memcpy (&t->ul, MXF_UL (QUANTIZATION_BITS), 16);
5222
t->data = g_slice_alloc (t->size);
5224
GST_WRITE_UINT32_BE (t->data, self->quantization_bits);
5225
mxf_primer_pack_add_mapping (primer, 0x3d01, &t->ul);
5226
ret = g_list_prepend (ret, t);
5229
if (self->dial_norm != 0) {
5230
t = g_slice_new0 (MXFLocalTag);
5231
memcpy (&t->ul, MXF_UL (DIAL_NORM), 16);
5233
t->data = g_slice_alloc (t->size);
5235
GST_WRITE_UINT8 (t->data, self->dial_norm);
5236
mxf_primer_pack_add_mapping (primer, 0x3d0c, &t->ul);
5237
ret = g_list_prepend (ret, t);
5240
if (!mxf_ul_is_zero (&self->sound_essence_compression)) {
5241
t = g_slice_new0 (MXFLocalTag);
5242
memcpy (&t->ul, MXF_UL (SOUND_ESSENCE_COMPRESSION), 16);
5244
t->data = g_slice_alloc (t->size);
5246
memcpy (t->data, &self->sound_essence_compression, 16);
5247
mxf_primer_pack_add_mapping (primer, 0x3d06, &t->ul);
5248
ret = g_list_prepend (ret, t);
3774
5255
mxf_metadata_generic_sound_essence_descriptor_init
3775
5256
(MXFMetadataGenericSoundEssenceDescriptor * self)
3777
5258
self->audio_sampling_rate.n = 48000;
3778
5259
self->audio_sampling_rate.d = 1;
5260
self->electro_spatial_formulation = 255;
5483
mxf_metadata_cdci_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
5484
MXFPrimerPack * primer)
5486
MXFMetadataCDCIPictureEssenceDescriptor *self =
5487
MXF_METADATA_CDCI_PICTURE_ESSENCE_DESCRIPTOR (m);
5489
MXF_METADATA_BASE_CLASS
5490
(mxf_metadata_cdci_picture_essence_descriptor_parent_class)->write_tags
5494
if (self->component_depth) {
5495
t = g_slice_new0 (MXFLocalTag);
5496
memcpy (&t->ul, MXF_UL (COMPONENT_DEPTH), 16);
5498
t->data = g_slice_alloc (t->size);
5500
GST_WRITE_UINT32_BE (t->data, self->component_depth);
5501
mxf_primer_pack_add_mapping (primer, 0x3301, &t->ul);
5502
ret = g_list_prepend (ret, t);
5505
if (self->horizontal_subsampling) {
5506
t = g_slice_new0 (MXFLocalTag);
5507
memcpy (&t->ul, MXF_UL (HORIZONTAL_SUBSAMPLING), 16);
5509
t->data = g_slice_alloc (t->size);
5511
GST_WRITE_UINT32_BE (t->data, self->horizontal_subsampling);
5512
mxf_primer_pack_add_mapping (primer, 0x3302, &t->ul);
5513
ret = g_list_prepend (ret, t);
5516
if (self->vertical_subsampling) {
5517
t = g_slice_new0 (MXFLocalTag);
5518
memcpy (&t->ul, MXF_UL (VERTICAL_SUBSAMPLING), 16);
5520
t->data = g_slice_alloc (t->size);
5522
GST_WRITE_UINT32_BE (t->data, self->vertical_subsampling);
5523
mxf_primer_pack_add_mapping (primer, 0x3308, &t->ul);
5524
ret = g_list_prepend (ret, t);
5527
if (self->color_siting != 0xff) {
5528
t = g_slice_new0 (MXFLocalTag);
5529
memcpy (&t->ul, MXF_UL (COLOR_SITING), 16);
5531
t->data = g_slice_alloc (t->size);
5533
GST_WRITE_UINT8 (t->data, self->color_siting);
5534
mxf_primer_pack_add_mapping (primer, 0x3303, &t->ul);
5535
ret = g_list_prepend (ret, t);
5538
if (self->reversed_byte_order) {
5539
t = g_slice_new0 (MXFLocalTag);
5540
memcpy (&t->ul, MXF_UL (REVERSED_BYTE_ORDER), 16);
5542
t->data = g_slice_alloc (t->size);
5544
GST_WRITE_UINT8 (t->data, (self->reversed_byte_order) ? 1 : 0);
5545
mxf_primer_pack_add_mapping (primer, 0x330b, &t->ul);
5546
ret = g_list_prepend (ret, t);
5549
if (self->padding_bits) {
5550
t = g_slice_new0 (MXFLocalTag);
5551
memcpy (&t->ul, MXF_UL (PADDING_BITS), 16);
5553
t->data = g_slice_alloc (t->size);
5555
GST_WRITE_UINT16_BE (t->data, self->padding_bits);
5556
mxf_primer_pack_add_mapping (primer, 0x3307, &t->ul);
5557
ret = g_list_prepend (ret, t);
5560
if (self->alpha_sample_depth) {
5561
t = g_slice_new0 (MXFLocalTag);
5562
memcpy (&t->ul, MXF_UL (ALPHA_SAMPLE_DEPTH), 16);
5564
t->data = g_slice_alloc (t->size);
5566
GST_WRITE_UINT32_BE (t->data, self->alpha_sample_depth);
5567
mxf_primer_pack_add_mapping (primer, 0x3309, &t->ul);
5568
ret = g_list_prepend (ret, t);
5571
if (self->black_ref_level) {
5572
t = g_slice_new0 (MXFLocalTag);
5573
memcpy (&t->ul, MXF_UL (BLACK_REF_LEVEL), 16);
5575
t->data = g_slice_alloc (t->size);
5577
GST_WRITE_UINT32_BE (t->data, self->black_ref_level);
5578
mxf_primer_pack_add_mapping (primer, 0x3304, &t->ul);
5579
ret = g_list_prepend (ret, t);
5582
if (self->white_ref_level) {
5583
t = g_slice_new0 (MXFLocalTag);
5584
memcpy (&t->ul, MXF_UL (WHITE_REF_LEVEL), 16);
5586
t->data = g_slice_alloc (t->size);
5588
GST_WRITE_UINT32_BE (t->data, self->white_ref_level);
5589
mxf_primer_pack_add_mapping (primer, 0x3305, &t->ul);
5590
ret = g_list_prepend (ret, t);
5593
if (self->color_range) {
5594
t = g_slice_new0 (MXFLocalTag);
5595
memcpy (&t->ul, MXF_UL (COLOR_RANGE), 16);
5597
t->data = g_slice_alloc (t->size);
5599
GST_WRITE_UINT32_BE (t->data, self->color_range);
5600
mxf_primer_pack_add_mapping (primer, 0x3306, &t->ul);
5601
ret = g_list_prepend (ret, t);
3967
5608
mxf_metadata_cdci_picture_essence_descriptor_init
3968
5609
(MXFMetadataCDCIPictureEssenceDescriptor * self)
5611
self->color_siting = 0xff;
5785
mxf_metadata_rgba_picture_essence_descriptor_write_tags (MXFMetadataBase * m,
5786
MXFPrimerPack * primer)
5788
MXFMetadataRGBAPictureEssenceDescriptor *self =
5789
MXF_METADATA_RGBA_PICTURE_ESSENCE_DESCRIPTOR (m);
5791
MXF_METADATA_BASE_CLASS
5792
(mxf_metadata_rgba_picture_essence_descriptor_parent_class)->write_tags
5796
if (self->component_max_ref != 255) {
5797
t = g_slice_new0 (MXFLocalTag);
5798
memcpy (&t->ul, MXF_UL (COMPONENT_MAX_REF), 16);
5800
t->data = g_slice_alloc (t->size);
5802
GST_WRITE_UINT32_BE (t->data, self->component_max_ref);
5803
mxf_primer_pack_add_mapping (primer, 0x3406, &t->ul);
5804
ret = g_list_prepend (ret, t);
5807
if (self->component_min_ref) {
5808
t = g_slice_new0 (MXFLocalTag);
5809
memcpy (&t->ul, MXF_UL (COMPONENT_MIN_REF), 16);
5811
t->data = g_slice_alloc (t->size);
5813
GST_WRITE_UINT32_BE (t->data, self->component_min_ref);
5814
mxf_primer_pack_add_mapping (primer, 0x3407, &t->ul);
5815
ret = g_list_prepend (ret, t);
5818
if (self->alpha_max_ref != 255) {
5819
t = g_slice_new0 (MXFLocalTag);
5820
memcpy (&t->ul, MXF_UL (ALPHA_MAX_REF), 16);
5822
t->data = g_slice_alloc (t->size);
5824
GST_WRITE_UINT32_BE (t->data, self->alpha_max_ref);
5825
mxf_primer_pack_add_mapping (primer, 0x3408, &t->ul);
5826
ret = g_list_prepend (ret, t);
5829
if (self->alpha_min_ref) {
5830
t = g_slice_new0 (MXFLocalTag);
5831
memcpy (&t->ul, MXF_UL (ALPHA_MIN_REF), 16);
5833
t->data = g_slice_alloc (t->size);
5835
GST_WRITE_UINT32_BE (t->data, self->alpha_min_ref);
5836
mxf_primer_pack_add_mapping (primer, 0x3409, &t->ul);
5837
ret = g_list_prepend (ret, t);
5840
if (self->scanning_direction) {
5841
t = g_slice_new0 (MXFLocalTag);
5842
memcpy (&t->ul, MXF_UL (SCANNING_DIRECTION), 16);
5844
t->data = g_slice_alloc (t->size);
5846
GST_WRITE_UINT8 (t->data, self->scanning_direction);
5847
mxf_primer_pack_add_mapping (primer, 0x3405, &t->ul);
5848
ret = g_list_prepend (ret, t);
5851
if (self->pixel_layout) {
5852
t = g_slice_new0 (MXFLocalTag);
5853
memcpy (&t->ul, MXF_UL (PIXEL_LAYOUT), 16);
5854
t->size = 2 * self->n_pixel_layout + 2;
5855
t->data = g_slice_alloc0 (t->size);
5857
memcpy (t->data, self->pixel_layout, self->n_pixel_layout * 2);
5858
mxf_primer_pack_add_mapping (primer, 0x3401, &t->ul);
5859
ret = g_list_prepend (ret, t);
4142
5867
mxf_metadata_rgba_picture_essence_descriptor_init
4143
5868
(MXFMetadataRGBAPictureEssenceDescriptor * self)