static void dump_sdt (GstMpegTsSection * section) { const GstMpegTsSDT *sdt = gst_mpegts_section_get_sdt (section); guint i, len; g_assert (sdt); g_printf (" original_network_id : 0x%04x\n", sdt->original_network_id); g_printf (" actual_ts : %s\n", sdt->actual_ts ? "TRUE" : "FALSE"); len = sdt->services->len; g_printf (" %d Services:\n", len); for (i = 0; i < len; i++) { GstMpegTsSDTService *service = g_ptr_array_index (sdt->services, i); g_print (" service_id:0x%04x, EIT_schedule_flag:%d, EIT_present_following_flag:%d\n", service->service_id, service->EIT_schedule_flag, service->EIT_present_following_flag); g_print (" running_status:0x%02x (%s), free_CA_mode:%d (%s)\n", service->running_status, enum_name (GST_TYPE_MPEG_TS_RUNNING_STATUS, service->running_status), service->free_CA_mode, service->free_CA_mode ? "MAYBE SCRAMBLED" : "NOT SCRAMBLED"); dump_descriptors (service->descriptors, 9); } }
static void dump_sdt (GstMpegtsSection * section, ATS_METADATA* data) { const GstMpegtsSDT *sdt = gst_mpegts_section_get_sdt (section); guint i, len; g_assert (sdt); len = sdt->services->len; if ((data == NULL) || (data->prog_info == NULL)) return; for (i = 0; i < len; i++) { GstMpegtsSDTService *service = g_ptr_array_index (sdt->services, i); if (service->service_id == 0) continue; ATS_CH_DATA* tmpch = ats_metadata_find_channel(data, service->service_id); if (!tmpch) continue; for (guint i = 0; i < service->descriptors->len; i++) { GstMpegtsDescriptor *desc = g_ptr_array_index (service->descriptors, i); if (desc->tag == GST_MTS_DESC_DVB_SERVICE) { gchar *service_name, *provider_name; GstMpegtsDVBServiceType service_type; if (gst_mpegts_descriptor_parse_dvb_service (desc, &service_type, &service_name, &provider_name)) { tmpch->service_name = g_strdup(service_name); tmpch->provider_name = g_strdup(provider_name); g_free (service_name); g_free (provider_name); } } } } }