summaryrefslogtreecommitdiff
path: root/gst/mxf/mxftypes.c
diff options
context:
space:
mode:
authorMichael Smith <msmith@rdio.com>2012-10-26 13:48:06 -0700
committerMichael Smith <msmith@rdio.com>2012-10-26 13:48:06 -0700
commit0c8a7fa46f59177c31539eeb81e5c5277b474362 (patch)
treedb96e69ee5e32fad43feec9360e48e10eb149d84 /gst/mxf/mxftypes.c
parent0a30ecba90dbc8008ca0f9c39381f34f516e9190 (diff)
downloadgstreamer-plugins-bad-0c8a7fa46f59177c31539eeb81e5c5277b474362.tar.gz
mxf: Port mxfdemux to 1.0
Also ports mxfmux to 1.0 to the extent that it compiles, but is 100% untested, so remains disabled. Conflicts: gst/mxf/mxfdemux.c gst/mxf/mxfmux.c
Diffstat (limited to 'gst/mxf/mxftypes.c')
-rw-r--r--gst/mxf/mxftypes.c62
1 files changed, 41 insertions, 21 deletions
diff --git a/gst/mxf/mxftypes.c b/gst/mxf/mxftypes.c
index 6fcfdeb1e..b02897401 100644
--- a/gst/mxf/mxftypes.c
+++ b/gst/mxf/mxftypes.c
@@ -191,15 +191,20 @@ GstBuffer *
mxf_fill_to_buffer (guint size)
{
GstBuffer *ret;
+ GstMapInfo map;
guint slen;
guint8 ber[9];
slen = mxf_ber_encode_size (size, ber);
ret = gst_buffer_new_and_alloc (16 + slen + size);
- memcpy (GST_BUFFER_DATA (ret), MXF_UL (FILL), 16);
- memcpy (GST_BUFFER_DATA (ret) + 16, &ber, slen);
- memset (GST_BUFFER_DATA (ret) + slen, 0, size);
+ gst_buffer_map (ret, &map, GST_MAP_WRITE);
+
+ memcpy (map.data, MXF_UL (FILL), 16);
+ memcpy (map.data + 16, &ber, slen);
+ memset (map.data + slen, 0, size);
+
+ gst_buffer_unmap (ret, &map);
return ret;
}
@@ -902,6 +907,7 @@ mxf_partition_pack_to_buffer (const MXFPartitionPack * pack)
guint slen;
guint8 ber[9];
GstBuffer *ret;
+ GstMapInfo map;
guint8 *data;
guint i;
guint size =
@@ -911,23 +917,25 @@ mxf_partition_pack_to_buffer (const MXFPartitionPack * pack)
slen = mxf_ber_encode_size (size, ber);
ret = gst_buffer_new_and_alloc (16 + slen + size);
- memcpy (GST_BUFFER_DATA (ret), MXF_UL (PARTITION_PACK), 13);
+ gst_buffer_map (ret, &map, GST_MAP_WRITE);
+
+ memcpy (map.data, MXF_UL (PARTITION_PACK), 13);
if (pack->type == MXF_PARTITION_PACK_HEADER)
- GST_BUFFER_DATA (ret)[13] = 0x02;
+ map.data[13] = 0x02;
else if (pack->type == MXF_PARTITION_PACK_BODY)
- GST_BUFFER_DATA (ret)[13] = 0x03;
+ map.data[13] = 0x03;
else if (pack->type == MXF_PARTITION_PACK_FOOTER)
- GST_BUFFER_DATA (ret)[13] = 0x04;
- GST_BUFFER_DATA (ret)[14] = 0;
+ map.data[13] = 0x04;
+ map.data[14] = 0;
if (pack->complete)
- GST_BUFFER_DATA (ret)[14] |= 0x02;
+ map.data[14] |= 0x02;
if (pack->closed)
- GST_BUFFER_DATA (ret)[14] |= 0x01;
- GST_BUFFER_DATA (ret)[14] += 1;
- GST_BUFFER_DATA (ret)[15] = 0;
- memcpy (GST_BUFFER_DATA (ret) + 16, &ber, slen);
+ map.data[14] |= 0x01;
+ map.data[14] += 1;
+ map.data[15] = 0;
+ memcpy (map.data + 16, &ber, slen);
- data = GST_BUFFER_DATA (ret) + 16 + slen;
+ data = map.data + 16 + slen;
GST_WRITE_UINT16_BE (data, pack->major_version);
GST_WRITE_UINT16_BE (data + 2, pack->minor_version);
@@ -970,6 +978,8 @@ mxf_partition_pack_to_buffer (const MXFPartitionPack * pack)
for (i = 0; i < pack->n_essence_containers; i++)
memcpy (data + 16 * i, &pack->essence_containers[i], 16);
+ gst_buffer_unmap (ret, &map);
+
return ret;
}
@@ -1019,6 +1029,7 @@ mxf_random_index_pack_to_buffer (const GArray * array)
MXFRandomIndexPackEntry *entry;
guint i;
GstBuffer *ret;
+ GstMapInfo map;
guint8 slen, ber[9];
guint size;
guint8 *data;
@@ -1029,10 +1040,12 @@ mxf_random_index_pack_to_buffer (const GArray * array)
size = array->len * 12 + 4;
slen = mxf_ber_encode_size (size, ber);
ret = gst_buffer_new_and_alloc (16 + slen + size);
- memcpy (GST_BUFFER_DATA (ret), MXF_UL (RANDOM_INDEX_PACK), 16);
- memcpy (GST_BUFFER_DATA (ret) + 16, ber, slen);
+ gst_buffer_map (ret, &map, GST_MAP_WRITE);
- data = GST_BUFFER_DATA (ret) + 16 + slen;
+ memcpy (map.data, MXF_UL (RANDOM_INDEX_PACK), 16);
+ memcpy (map.data + 16, ber, slen);
+
+ data = map.data + 16 + slen;
for (i = 0; i < array->len; i++) {
entry = &g_array_index (array, MXFRandomIndexPackEntry, i);
@@ -1040,7 +1053,9 @@ mxf_random_index_pack_to_buffer (const GArray * array)
GST_WRITE_UINT64_BE (data + 4, entry->offset);
data += 12;
}
- GST_WRITE_UINT32_BE (data, GST_BUFFER_SIZE (ret));
+ GST_WRITE_UINT32_BE (data, gst_buffer_get_size (ret));
+
+ gst_buffer_unmap (ret, &map);
return ret;
}
@@ -1435,6 +1450,7 @@ mxf_primer_pack_to_buffer (const MXFPrimerPack * pack)
guint slen;
guint8 ber[9];
GstBuffer *ret;
+ GstMapInfo map;
guint n;
guint8 *data;
@@ -1446,10 +1462,12 @@ mxf_primer_pack_to_buffer (const MXFPrimerPack * pack)
slen = mxf_ber_encode_size (8 + 18 * n, ber);
ret = gst_buffer_new_and_alloc (16 + slen + 8 + 18 * n);
- memcpy (GST_BUFFER_DATA (ret), MXF_UL (PRIMER_PACK), 16);
- memcpy (GST_BUFFER_DATA (ret) + 16, &ber, slen);
+ gst_buffer_map (ret, &map, GST_MAP_WRITE);
- data = GST_BUFFER_DATA (ret) + 16 + slen;
+ memcpy (map.data, MXF_UL (PRIMER_PACK), 16);
+ memcpy (map.data + 16, &ber, slen);
+
+ data = map.data + 16 + slen;
GST_WRITE_UINT32_BE (data, n);
GST_WRITE_UINT32_BE (data + 4, 18);
@@ -1470,6 +1488,8 @@ mxf_primer_pack_to_buffer (const MXFPrimerPack * pack)
}
}
+ gst_buffer_unmap (ret, &map);
+
return ret;
}