g_return_val_if_fail (array != NULL, FALSE);
g_return_val_if_fail (count != NULL, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
if (size < 8)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
element_count = GST_READ_UINT32_BE (data);
data += 4;
size -= 4;
gboolean
mxf_timestamp_parse (MXFTimestamp * timestamp, const guint8 * data, guint size)
{
- g_return_val_if_fail (data != NULL, FALSE);
g_return_val_if_fail (timestamp != NULL, FALSE);
memset (timestamp, 0, sizeof (MXFTimestamp));
if (size < 8)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
timestamp->year = GST_READ_UINT16_BE (data);
timestamp->month = GST_READ_UINT8 (data + 2);
timestamp->day = GST_READ_UINT8 (data + 3);
mxf_fraction_parse (MXFFraction * fraction, const guint8 * data, guint size)
{
g_return_val_if_fail (fraction != NULL, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
memset (fraction, 0, sizeof (MXFFraction));
if (size < 8)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
fraction->n = GST_READ_UINT32_BE (data);
fraction->d = GST_READ_UINT32_BE (data + 4);
const guint8 * data, guint size)
{
g_return_val_if_fail (product_version != NULL, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
memset (product_version, 0, sizeof (MXFProductVersion));
if (size < 9)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
product_version->major = GST_READ_UINT16_BE (data);
product_version->minor = GST_READ_UINT16_BE (data + 2);
product_version->patch = GST_READ_UINT16_BE (data + 4);
gchar str[48];
#endif
+ if (size < 84)
+ return FALSE;
+
g_return_val_if_fail (data != NULL, FALSE);
- g_return_val_if_fail (size >= 84, FALSE);
memset (pack, 0, sizeof (MXFPartitionPack));
guint len, i;
MXFRandomIndexPackEntry entry;
- g_return_val_if_fail (data != NULL, FALSE);
g_return_val_if_fail (array != NULL, FALSE);
if (size < 4)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
if ((size - 4) % 12 != 0)
return FALSE;
const guint8 *tag_data;
g_return_val_if_fail (ul != NULL, FALSE);
- g_return_val_if_fail (data != NULL, FALSE);
memset (segment, 0, sizeof (MXFIndexTableSegment));
if (size < 70)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
GST_DEBUG ("Parsing index table segment:");
while (mxf_local_tag_parse (data, size, &tag, &tag_size, &tag_data)) {
guint i;
guint32 n;
+ if (size < 8)
+ return FALSE;
+
g_return_val_if_fail (data != NULL, FALSE);
- g_return_val_if_fail (size >= 8, FALSE);
memset (pack, 0, sizeof (MXFPrimerPack));
mxf_local_tag_parse (const guint8 * data, guint size, guint16 * tag,
guint16 * tag_size, const guint8 ** tag_data)
{
- g_return_val_if_fail (data != NULL, FALSE);
-
if (size < 4)
return FALSE;
+ g_return_val_if_fail (data != NULL, FALSE);
+
*tag = GST_READ_UINT16_BE (data);
*tag_size = GST_READ_UINT16_BE (data + 2);
MXFUL *ul;
g_return_val_if_fail (primer != NULL, FALSE);
- g_return_val_if_fail (tag_data != NULL, FALSE);
+ g_return_val_if_fail (tag_size == 0 || tag_data != NULL, FALSE);
g_return_val_if_fail (hash_table != NULL, FALSE);
g_return_val_if_fail (primer->mappings != NULL, FALSE);
local_tag = g_slice_new0 (MXFLocalTag);
memcpy (&local_tag->ul, ul, sizeof (MXFUL));
local_tag->size = tag_size;
- local_tag->data = g_memdup (tag_data, tag_size);
+ local_tag->data = tag_size == 0 ? NULL : g_memdup (tag_data, tag_size);
local_tag->g_slice = FALSE;
g_hash_table_insert (*hash_table, &local_tag->ul, local_tag);