static void dvb_base_bin_handle_message (GstBin * bin, GstMessage * message) { DvbBaseBin *dvbbasebin; dvbbasebin = GST_DVB_BASE_BIN (bin); if (message->type == GST_MESSAGE_ELEMENT && GST_ELEMENT (message->src) == GST_ELEMENT (dvbbasebin->mpegtsparse)) { const gchar *structure_name = gst_structure_get_name (message->structure); if (strcmp (structure_name, "pat") == 0) dvb_base_bin_pat_info_cb (dvbbasebin, message->structure); else if (strcmp (structure_name, "pmt") == 0) dvb_base_bin_pmt_info_cb (dvbbasebin, message->structure); /*else if (strcmp (structure_name, "nit") == 0) dvb_base_bin_nit_info_cb (dvbbasebin, message->structure); else if (strcmp (structure_name, "sdt") == 0) dvb_base_bin_sdt_info_cb (dvbbasebin, message->structure); else if (strcmp (structure_name, "eit") == 0) dvb_base_bin_eit_info_cb (dvbbasebin, message->structure); */ /* forward the message on */ gst_element_post_message (GST_ELEMENT_CAST (bin), message); } else { /* chain up */ GST_BIN_CLASS (parent_class)->handle_message (bin, message); } }
static void dvb_base_bin_handle_message (GstBin * bin, GstMessage * message) { DvbBaseBin *dvbbasebin; dvbbasebin = GST_DVB_BASE_BIN (bin); /* note: message->src might be a GstPad, so use element cast w/o typecheck */ if (GST_ELEMENT_CAST (message->src) == dvbbasebin->tsparse) { GstMpegtsSection *section = gst_message_parse_mpegts_section (message); if (section) { switch (GST_MPEGTS_SECTION_TYPE (section)) { case GST_MPEGTS_SECTION_PAT: dvb_base_bin_pat_info_cb (dvbbasebin, section); break; case GST_MPEGTS_SECTION_PMT: dvb_base_bin_pmt_info_cb (dvbbasebin, section); break; default: break; } gst_mpegts_section_unref (section); } } /* chain up */ GST_BIN_CLASS (parent_class)->handle_message (bin, message); }
static void dvb_base_bin_handle_message (GstBin * bin, GstMessage * message) { DvbBaseBin *dvbbasebin; dvbbasebin = GST_DVB_BASE_BIN (bin); if (message->type == GST_MESSAGE_ELEMENT && GST_ELEMENT (message->src) == GST_ELEMENT (dvbbasebin->tsparse)) { const GstStructure *s = gst_message_get_structure (message); const gchar *structure_name = gst_structure_get_name (s); if (strcmp (structure_name, "pat") == 0) dvb_base_bin_pat_info_cb (dvbbasebin, s); else if (strcmp (structure_name, "pmt") == 0) dvb_base_bin_pmt_info_cb (dvbbasebin, s); } /* chain up */ GST_BIN_CLASS (parent_class)->handle_message (bin, message); }