static gboolean gst_ffmpegmux_sink_event (GstPad * pad, GstEvent * event) { GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) gst_pad_get_parent (pad); gboolean res = TRUE; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_TAG:{ GstTagList *taglist; GstTagSetter *setter = GST_TAG_SETTER (ffmpegmux); const GstTagMergeMode mode = gst_tag_setter_get_tag_merge_mode (setter); gst_event_parse_tag (event, &taglist); gst_tag_setter_merge_tags (setter, taglist, mode); break; } default: break; } /* chaining up to collectpads default event function */ res = ffmpegmux->event_function (pad, event); gst_object_unref (ffmpegmux); return res; }
static gboolean gst_ffmpegmux_sink_event (GstPad * pad, GstObject * parent, GstEvent * event) { GstFFMpegMux *ffmpegmux = (GstFFMpegMux *) parent; gboolean res = TRUE; switch (GST_EVENT_TYPE (event)) { case GST_EVENT_TAG:{ GstTagList *taglist; GstTagSetter *setter = GST_TAG_SETTER (ffmpegmux); const GstTagMergeMode mode = gst_tag_setter_get_tag_merge_mode (setter); gst_event_parse_tag (event, &taglist); gst_tag_setter_merge_tags (setter, taglist, mode); break; } case GST_EVENT_CAPS:{ GstCaps *caps; gst_event_parse_caps (event, &caps); if (!(res = gst_ffmpegmux_setcaps (pad, caps))) goto beach; break; } default: break; } /* chaining up to collectpads default event function */ res = ffmpegmux->event_function (pad, parent, event); beach: return res; }