mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
mpegts: Add constructor for dvb service descriptor
https://bugzilla.gnome.org/show_bug.cgi?id=724981
This commit is contained in:
parent
911e95d6c7
commit
a9b1fdd948
2 changed files with 74 additions and 0 deletions
|
@ -285,6 +285,76 @@ gst_mpegts_descriptor_parse_dvb_service (const GstMpegTsDescriptor *
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* gst_mpegts_descriptor_from_dvb_service:
|
||||||
|
* @service_type: Service type defined as a #GstMpegTsDVBServiceType
|
||||||
|
* @service_name: (allow-none): Name of the service
|
||||||
|
* @service_provider: (allow-none): Name of the service provider
|
||||||
|
*
|
||||||
|
* Fills a #GstMpegTsDescriptor to be a %GST_MTS_DESC_DVB_SERVICE.
|
||||||
|
* The data field of the #GstMpegTsDescriptor will be allocated,
|
||||||
|
* and transferred to the caller.
|
||||||
|
*
|
||||||
|
* Returns: (transfer full): the #GstMpgTsDescriptor or %NULL on fail
|
||||||
|
*/
|
||||||
|
GstMpegTsDescriptor *
|
||||||
|
gst_mpegts_descriptor_from_dvb_service (GstMpegTsDVBServiceType service_type,
|
||||||
|
const gchar * service_name, const gchar * service_provider)
|
||||||
|
{
|
||||||
|
GstMpegTsDescriptor *descriptor;
|
||||||
|
guint8 *conv_provider_name = NULL, *conv_service_name = NULL;
|
||||||
|
gsize provider_size = 0, service_size = 0;
|
||||||
|
guint8 *data;
|
||||||
|
|
||||||
|
if (service_provider) {
|
||||||
|
conv_provider_name = dvb_text_from_utf8 (service_provider, &provider_size);
|
||||||
|
|
||||||
|
if (!conv_provider_name) {
|
||||||
|
GST_WARNING ("Could not find proper encoding for string `%s`",
|
||||||
|
service_provider);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (provider_size >= 256) {
|
||||||
|
g_free (conv_provider_name);
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (service_name) {
|
||||||
|
conv_service_name = dvb_text_from_utf8 (service_name, &service_size);
|
||||||
|
|
||||||
|
if (!conv_service_name) {
|
||||||
|
GST_WARNING ("Could not find proper encoding for string `%s`",
|
||||||
|
service_name);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (service_size >= 256) {
|
||||||
|
g_free (conv_provider_name);
|
||||||
|
g_free (conv_service_name);
|
||||||
|
g_return_val_if_reached (NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
descriptor =
|
||||||
|
_new_descriptor (GST_MTS_DESC_DVB_SERVICE,
|
||||||
|
3 + provider_size + service_size);
|
||||||
|
|
||||||
|
data = descriptor->data + 2;
|
||||||
|
*data++ = service_type;
|
||||||
|
*data++ = provider_size;
|
||||||
|
memcpy (data, conv_provider_name, provider_size);
|
||||||
|
data += provider_size;
|
||||||
|
*data++ = service_size;
|
||||||
|
memcpy (data, conv_service_name, service_size);
|
||||||
|
|
||||||
|
g_free (conv_provider_name);
|
||||||
|
g_free (conv_service_name);
|
||||||
|
|
||||||
|
return descriptor;
|
||||||
|
}
|
||||||
|
|
||||||
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
||||||
/**
|
/**
|
||||||
* gst_mpegts_descriptor_parse_dvb_short_event:
|
* gst_mpegts_descriptor_parse_dvb_short_event:
|
||||||
|
|
|
@ -290,6 +290,10 @@ gboolean gst_mpegts_descriptor_parse_dvb_service (const GstMpegTsDescriptor *des
|
||||||
gchar **service_name,
|
gchar **service_name,
|
||||||
gchar **provider_name);
|
gchar **provider_name);
|
||||||
|
|
||||||
|
GstMpegTsDescriptor *gst_mpegts_descriptor_from_dvb_service (GstMpegTsDVBServiceType service_type,
|
||||||
|
const gchar * service_name,
|
||||||
|
const gchar * service_provider);
|
||||||
|
|
||||||
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
/* GST_MTS_DESC_DVB_SHORT_EVENT (0x4D) */
|
||||||
gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTsDescriptor *descriptor,
|
gboolean gst_mpegts_descriptor_parse_dvb_short_event (const GstMpegTsDescriptor *descriptor,
|
||||||
gchar **language_code,
|
gchar **language_code,
|
||||||
|
|
Loading…
Reference in a new issue