static gboolean gst_a2dp_sink_handle_event (GstPad * pad, GstObject * pad_parent, GstEvent * event) { GstA2dpSink *self; GstTagList *taglist = NULL; self = GST_A2DP_SINK (pad_parent); if (GST_EVENT_TYPE (event) == GST_EVENT_TAG) { if (self->taglist == NULL) gst_event_parse_tag (event, &self->taglist); else { gst_event_parse_tag (event, &taglist); gst_tag_list_insert (self->taglist, taglist, GST_TAG_MERGE_REPLACE); } } else if (GST_EVENT_TYPE (event) == GST_EVENT_CAPS) { GstCaps *caps = NULL; gst_event_parse_caps (event, &caps); gst_a2dp_sink_init_dynamic_elements (self, caps); } return gst_pad_event_default (pad, pad_parent, event); }
static gboolean gst_a2dp_sink_set_caps(GstPad *pad, GstCaps *caps) { GstA2dpSink *self; self = GST_A2DP_SINK(GST_PAD_PARENT(pad)); GST_INFO_OBJECT(self, "setting caps"); /* now we know the caps */ gst_a2dp_sink_init_dynamic_elements(self, caps); return self->ghostpad_setcapsfunc(GST_PAD(self->ghostpad), caps); }