mpegts: Expose GstMpegtsDescriptor free function

Nothing earth shattering, but avoids people having to use g_boxed_free()
This commit is contained in:
Edward Hervey 2014-07-01 10:03:05 +02:00
parent 4cbddec9fe
commit 8c53dfcfb6
6 changed files with 26 additions and 16 deletions

View file

@ -630,8 +630,8 @@ gst_mpegts_nit_new (void)
nit = g_slice_new0 (GstMpegtsNIT); nit = g_slice_new0 (GstMpegtsNIT);
nit->descriptors = nit->descriptors = g_ptr_array_new_with_free_func ((GDestroyNotify)
g_ptr_array_new_with_free_func ((GDestroyNotify) _free_descriptor); gst_mpegts_descriptor_free);
nit->streams = g_ptr_array_new_with_free_func ((GDestroyNotify) nit->streams = g_ptr_array_new_with_free_func ((GDestroyNotify)
_gst_mpegts_nit_stream_free); _gst_mpegts_nit_stream_free);
@ -653,7 +653,7 @@ gst_mpegts_nit_stream_new (void)
stream = g_slice_new0 (GstMpegtsNITStream); stream = g_slice_new0 (GstMpegtsNITStream);
stream->descriptors = g_ptr_array_new_with_free_func ( stream->descriptors = g_ptr_array_new_with_free_func (
(GDestroyNotify) _free_descriptor); (GDestroyNotify) gst_mpegts_descriptor_free);
return stream; return stream;
} }
@ -979,7 +979,7 @@ gst_mpegts_sdt_service_new (void)
service = g_slice_new0 (GstMpegtsSDTService); service = g_slice_new0 (GstMpegtsSDTService);
service->descriptors = g_ptr_array_new_with_free_func ((GDestroyNotify) service->descriptors = g_ptr_array_new_with_free_func ((GDestroyNotify)
_free_descriptor); gst_mpegts_descriptor_free);
return service; return service;
} }

View file

@ -34,7 +34,6 @@ G_GNUC_INTERNAL guint32 _calc_crc32 (const guint8 *data, guint datalen);
G_GNUC_INTERNAL gchar *get_encoding_and_convert (const gchar *text, guint length); G_GNUC_INTERNAL gchar *get_encoding_and_convert (const gchar *text, guint length);
G_GNUC_INTERNAL gchar *convert_lang_code (guint8 * data); G_GNUC_INTERNAL gchar *convert_lang_code (guint8 * data);
G_GNUC_INTERNAL guint8 *dvb_text_from_utf8 (const gchar * text, gsize *out_size); G_GNUC_INTERNAL guint8 *dvb_text_from_utf8 (const gchar * text, gsize *out_size);
G_GNUC_INTERNAL void _free_descriptor (GstMpegtsDescriptor *descriptor);
G_GNUC_INTERNAL GstMpegtsDescriptor *_new_descriptor (guint8 tag, guint8 length); G_GNUC_INTERNAL GstMpegtsDescriptor *_new_descriptor (guint8 tag, guint8 length);
G_GNUC_INTERNAL GstMpegtsDescriptor *_new_descriptor_with_extension (guint8 tag, G_GNUC_INTERNAL GstMpegtsDescriptor *_new_descriptor_with_extension (guint8 tag,
guint8 tag_extension, guint8 length); guint8 tag_extension, guint8 length);

View file

@ -715,15 +715,22 @@ _copy_descriptor (GstMpegtsDescriptor * desc)
return copy; return copy;
} }
/**
* gst_mpegts_descriptor_free:
* @desc: The descriptor to free
*
* Frees @desc
*/
void void
_free_descriptor (GstMpegtsDescriptor * desc) gst_mpegts_descriptor_free (GstMpegtsDescriptor * desc)
{ {
g_free ((gpointer) desc->data); g_free ((gpointer) desc->data);
g_slice_free (GstMpegtsDescriptor, desc); g_slice_free (GstMpegtsDescriptor, desc);
} }
G_DEFINE_BOXED_TYPE (GstMpegtsDescriptor, gst_mpegts_descriptor, G_DEFINE_BOXED_TYPE (GstMpegtsDescriptor, gst_mpegts_descriptor,
(GBoxedCopyFunc) _copy_descriptor, (GBoxedFreeFunc) _free_descriptor); (GBoxedCopyFunc) _copy_descriptor,
(GBoxedFreeFunc) gst_mpegts_descriptor_free);
/** /**
* gst_mpegts_parse_descriptors: * gst_mpegts_parse_descriptors:
@ -778,7 +785,9 @@ gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len)
return NULL; return NULL;
} }
res = g_ptr_array_new_full (nb_desc + 1, (GDestroyNotify) _free_descriptor); res =
g_ptr_array_new_full (nb_desc + 1,
(GDestroyNotify) gst_mpegts_descriptor_free);
data = buffer; data = buffer;

View file

@ -257,6 +257,8 @@ struct _GstMpegtsDescriptor
guint8 *data; guint8 *data;
}; };
void gst_mpegts_descriptor_free (GstMpegtsDescriptor *desc);
GPtrArray *gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len); GPtrArray *gst_mpegts_parse_descriptors (guint8 * buffer, gsize buf_len);
const GstMpegtsDescriptor * gst_mpegts_find_descriptor (GPtrArray *descriptors, const GstMpegtsDescriptor * gst_mpegts_find_descriptor (GPtrArray *descriptors,

View file

@ -763,8 +763,8 @@ gst_mpegts_pmt_new (void)
pmt = g_slice_new0 (GstMpegtsPMT); pmt = g_slice_new0 (GstMpegtsPMT);
pmt->descriptors = pmt->descriptors = g_ptr_array_new_with_free_func ((GDestroyNotify)
g_ptr_array_new_with_free_func ((GDestroyNotify) _free_descriptor); gst_mpegts_descriptor_free);
pmt->streams = g_ptr_array_new_with_free_func ((GDestroyNotify) pmt->streams = g_ptr_array_new_with_free_func ((GDestroyNotify)
_gst_mpegts_pmt_stream_free); _gst_mpegts_pmt_stream_free);
@ -785,8 +785,8 @@ gst_mpegts_pmt_stream_new (void)
stream = g_slice_new0 (GstMpegtsPMTStream); stream = g_slice_new0 (GstMpegtsPMTStream);
stream->descriptors = stream->descriptors = g_ptr_array_new_with_free_func ((GDestroyNotify)
g_ptr_array_new_with_free_func ((GDestroyNotify) _free_descriptor); gst_mpegts_descriptor_free);
return stream; return stream;
} }

View file

@ -453,7 +453,7 @@ GST_START_TEST (test_mpegts_descriptors)
fail ("0x%X != 0x%X in byte %d of registration descriptor", fail ("0x%X != 0x%X in byte %d of registration descriptor",
desc->data[i], registration_descriptor[i], i); desc->data[i], registration_descriptor[i], i);
} }
g_boxed_free (GST_TYPE_MPEGTS_DESCRIPTOR, desc); gst_mpegts_descriptor_free (desc);
} }
GST_END_TEST; GST_END_TEST;
@ -498,7 +498,7 @@ GST_START_TEST (test_mpegts_dvb_descriptors)
fail_unless (ret == TRUE); fail_unless (ret == TRUE);
fail_unless (strcmp (string, "Name") == 0); fail_unless (strcmp (string, "Name") == 0);
g_free (string); g_free (string);
g_boxed_free (GST_TYPE_MPEGTS_DESCRIPTOR, desc); gst_mpegts_descriptor_free (desc);
/* Descriptor should fail if string is more than 255 bytes */ /* Descriptor should fail if string is more than 255 bytes */
memset (long_string, 0x41, 256); memset (long_string, 0x41, 256);
@ -531,7 +531,7 @@ GST_START_TEST (test_mpegts_dvb_descriptors)
fail_unless (strcmp (provider, "Provider") == 0); fail_unless (strcmp (provider, "Provider") == 0);
g_free (string); g_free (string);
g_free (provider); g_free (provider);
g_boxed_free (GST_TYPE_MPEGTS_DESCRIPTOR, desc); gst_mpegts_descriptor_free (desc);
/* Check creation of descriptor without data */ /* Check creation of descriptor without data */
desc = gst_mpegts_descriptor_from_dvb_service desc = gst_mpegts_descriptor_from_dvb_service
@ -543,7 +543,7 @@ GST_START_TEST (test_mpegts_dvb_descriptors)
/* Check parsing of descriptor without data */ /* Check parsing of descriptor without data */
ret = gst_mpegts_descriptor_parse_dvb_service (desc, NULL, NULL, NULL); ret = gst_mpegts_descriptor_parse_dvb_service (desc, NULL, NULL, NULL);
fail_unless (ret == TRUE); fail_unless (ret == TRUE);
g_boxed_free (GST_TYPE_MPEGTS_DESCRIPTOR, desc); gst_mpegts_descriptor_free (desc);
/* Descriptor should fail if string is more than 255 bytes */ /* Descriptor should fail if string is more than 255 bytes */
memset (long_string, 0x41, 256); memset (long_string, 0x41, 256);